2014-12-02 151 views
0

我是一個擁有多個不同部門的大型組織的一部分。我們稱他們爲A,B和C. 每個部門都有自己的系統,但有些東西是根據系統共享的。有一個報告部門需要查看來自不同部門系統的所有數據的彙總。建築反饋

我們從每個部門開始,每個部門都有自己的SQL數據庫和API以及一個前端單頁面應用程序。我們添加了一箇中央數據庫來跟蹤諸如系統之間共享的用戶,電話,地址,EmailAddresses等內容。

隨着我們的發展,我們最大的難點之一就是保持一切同步。例如,我們有一個系統從中央表中刪除了一個用戶,或將它們合併在一起(這是一種可能性),從而影響了其他系統,因爲內部人員引用了被刪除的中央人員。我們的其他系統之一決定他們不希望受到系統間更改的影響,並且任何集中存儲的電話號碼的刪除都不會影響他們。

我想弄清楚處理這種情況的最佳方法。我正在考慮一個酒吧子場景,在這個場景中,每個系統都有自己的一套允許說電話,地址,電子郵件地址和他們通過rabbitMQ發佈更改的時間。其他系統可以訂閱他們,如果他們想要並相應地處理更改。

這一切聽起來不錯,但我們如何跟蹤系統中的用戶進行報告。我們希望使用跨系統一致的UserID。比方說,一個用戶進入系統A,他從一箇中心位置獲取一個全球ID,一個月後,同一個用戶進入系統B.鑑於我們有他們的電子郵件地址,所以系統B可以知道他們的相關信息,但是如何找到這些信息它是查詢中央系統,還是發送諸如「誰在他們的系統中擁有此用戶」等信息並等待來自任何給定系統的答案。

無論如何,我將不勝感激關於此事的任何反饋。

感謝

回答

1

我建議你讀幾本書對這個或掃描網頁:

  • 領域驅動設計
  • 企業應用架構
  • CQRS的模式

你在正確的軌道wrt使用事件驅動架構(服務總線)。