工做中的項目,CS客戶端會經過MQ接收前端設備發送的信息,以前測試的時候,因爲測試的數據不大,沒有進行壓力測試,軟件能夠正常工做,隨着項目現場設備數量的增長,CS客戶端從MQ中訂閱的數據量不斷增長,最終致使,客戶端界面卡死。原來的數據流程圖以下:前端
這個數據流程,在數據不大的狀況下,是沒有什麼問題,數據太多,從mq獲取數據的流程太長,無論是Json反序列化,仍是WPF界面渲染,都是耗時比較大。因此決定將數據流程改成以下所示:緩存
修改後的方案,將原來的一個流程拆分兩個流程,左邊的流程只負責從mq取數據的流程,少了原來中間的Json反序列化和界面渲染的流程,提升了取數據的能力;右邊的流程是ViewModel層主動定時從緩存隊列取數據的流程,這裏面根據業務的實際場景,根據訂閱的設備,每一個設備最多取界面可以顯示的最大數量,這樣就很好地解決了界面卡死的問題,無論前端設備上傳了多少數據,實際客戶端顯示的數據最可能是必定的,訂閱設備的數量 X 界面最大顯示的數量。測試