5

我有一个分布式系统:在 10 个机器上运行 12-14 个应用程序(每个机器大约有 8 个内核)。我的应用程序是大量多线程的。

在一天中,我的应用程序非常繁忙。延迟对我的工作至关重要。

鉴于这种情况,我有一个新的附加要求,即我必须监视分布在这些应用程序中的一堆内存对象并生成一些报告(可能是网页或文本文件无关紧要)。

我正在寻找与监控工作相关的设计模式。困扰我的是,我不应该通过一些监视/观察者线程做任何讨厌的事情来引入任何延迟。如果有帮助的话,我现在主要是 C++,所以像共享内存等低级别的东西肯定在桌面上。

4

1 回答 1

6

你的问题是一个非常广泛的问题!

以下是一些开始的想法:

  • 事件驱动架构允许您反转消息流并使异步工作流更容易。

  • EDA 还可以很好地与用于状态管理的事件溯源策略配合使用。

  • 消息队列通常非常适合作为事件和消息的传输机制。它们通常遵循某些特定的性能特征集,但您必须查看它们是否足以满足您的目的。

  • 如果您需要更快的速度,您可以使用像环形缓冲区这样的无锁结构作为内存队列,以将主要业务逻辑与报告逻辑解耦。

我意识到我的答案非常笼统,但希望它会有所帮助。

于 2013-06-11T19:35:14.237 回答