2013-06-11 39 views
4

我有一個分佈式系統:12個應用程序運行在10個盒子上(每個盒子大約有8個)。我的應用程序是多線程的。監控分佈式系統的設計模式?

在這一天的過程中,我的應用程序非常繁忙。延遲對我的工作至關重要。

鑑於這種情況,我有一個新的額外要求,我必須監視遍佈這些應用程序的一堆內存對象,並生成一些報告(可能是網頁或文本文件無關緊要)。

我正在尋找與監控工作相關的設計模式。困擾我的是,我不應該通過一些監視/觀察者線程做任何討厭的事情來引入任何延遲。如果有幫助的話,我現在主要是C++,所以像共享內存等低級別的東西肯定在桌面上。

+0

在爲相同類型的事物尋找模式(低開銷/延遲監控,C++,多線程(但不是分佈式))時遇到此問題。最後你選擇了什麼,並且有任何建議? – boycy

回答

6

你的問題是一個非常廣泛的問題!

這裏有一些想法開始:

  • Event driven architecture可反轉消息流,並使其更容易有異步工作流。

  • EDA也適用於Event Sourcing狀態管理戰略。

  • Message queues通常適合作爲事件和消息的傳輸機制。他們通常堅持一些特定的性能特徵,但你必須看看它們是否適合你的目的。

  • 如果您需要更高的速度,您可以使用無鎖結構(如ring buffer)作爲內存中隊列來將主要業務邏輯與報告邏輯分離。

我意識到我的答案是非常通用的,但希望它會有所幫助。