public void do(RequestObject request, Callback<RequestObject> callback);
凡在處理請求Callback
被調用。一個客戶端必須將請求的狀態設置爲數據庫。客戶端獲取一些項目將它們傳遞給上述方法,並且回調設置狀態。
對於少量的項目和較慢的IO,它工作正常。但是現在,IO正在加速並且寫入數據庫的狀態經常變化。這導致我的數據庫(MySQL)進行如此多的磁盤讀寫調用。我的磁盤使用率通過了屋頂。
我在考慮將狀態設置聚合在一起,但功率不可靠,這不是合理的解決方案。應該如何重新設計呢?
編輯
當過程開始我插入一個值,當有更新,我取的項目並更新項目。 @ user2612030你的問題讓我相信,使用hibernate可能會導致更多的讀取,而不是必要的。
我可以將我的磁盤驅動器升級到SSD,但這隻會做很多。我想要一個可擴展的解決方案。
存儲後狀態的用例是什麼?您需要多久才能查詢? – yegodm
我查詢它來檢查操作的狀態。這是一項批量操作,客戶需要檢查狀態。 –
可以改變狀態值最終一致嗎?我的意思是可以這樣處理 - 客戶端設置狀態,但不會立即保存到數據庫,而是保存到一些快速持久的存儲中,例如持久的磁盤隊列。您可以在實例運行時在內存中緩存和提供狀態,同時從隊列中批量更新後臺數據庫。重新啓動後,您必須通過重播隊列中的事件來同步數據庫和緩存。 – yegodm