我有一个分布式系统:12个应用程序在10个盒子上运行(每个盒子有大约8个核心)。我的应用程序是多线程的。
在一天中我的应用程序非常繁忙。延迟对我的工作至关重要。
鉴于这种情况,我有一个新的额外要求,我必须监视分布在这些应用程序中的一堆内存对象并生成一些报告(可能是网页或文本文件无关紧要)。
我正在寻找与监控工作相关的设计模式。困扰我的是,我不应该通过某些监视/观察者线程做任何令人讨厌的事情来引入任何延迟。如果它有所帮助,我现在主要是C ++,所以像共享内存等低级别的东西肯定在桌面上。
答案 0 :(得分:6)
你的问题非常广泛!
以下是一些开始的想法:
Event driven architecture允许您反转消息流,并使异步工作流更容易。
EDA也适用于Event Sourcing州管理策略。
Message queues通常非常适合作为事件和消息的传输机制。它们通常遵循一些指定的性能特征,但您必须确定它们是否适合您的目的。
如果您需要更高的速度,可以使用像ring buffer这样的无锁结构作为内存中队列,将主业务逻辑与报告逻辑分离。
< / LI>我意识到我的答案非常通用,但希望它会有所帮助。