背景:MVC應用程序有100 +交易/秒,需要詳細的實時報告。.net mvc分層應用程序與觀察者vs msmq vs web服務
問題:針對事務性數據庫的報告意味着複雜的報告邏輯+緩慢的報告加載時間。大報告會對交易流程產生負面影響。將數據定期提取到非歸一化立方體違反了實時報告約束條件
解決方案:狀態更改會同時存在於事務數據庫以及多維數據集中,因爲數據在多維數據集中持久存在時會取消規範化(1-2分鐘等待時間確定)
困境:每層,web,應用程序,事務數據庫和多維數據集都被水平縮放,並存在於不同地理位置的不同農場中。
可能的解決方法:
MSMQ與多播 - 應用服務器上的實體狀態改變發送消息,和事務db和立方體服務接收消息,並且持續存在。優點:成熟的解決方案,缺點:需要大量硬件和/或許可來確保高可用性 - 翻譯:昂貴。
觀察者模式 - 使用.net WCF(ugh ..)讓App服務器調用數據庫服務器訂閱(觀察)的更改事件。優點:沒有額外的硬件,缺點:WCF。
REST Web服務 - 使用.net webclient發佈到事務性數據庫和多維數據集,而不是發送消息或調用事件。優點:超級簡單實施,缺點:需要IIS安裝在數據庫端的某處,以便應用服務器發佈到。
問題1:我對可能的分辨率的假設是否正確?