根據當前的開發進度,已經利用hazlecast做了存儲對象的緩存,但是,對于每次寫文件時候replica的更新并沒有做緩存,每有一個寫文件操作請求,都會直接去數據庫中更新replica的信息,導致當一個寫動作引發連續的寫請求的時候,就會連續的去更新數據庫,為了降低數據庫的讀寫次數,我們想放個全局的緩存對象在內存中,然后異步得將緩存中的replica更新到數據庫中。而這樣又會引出另一個問題,多個客戶端寫同一個文件的同步問題,這又該如何在緩存中處理呢?總結出:1.建立緩存對象,通過線程異步更新數據庫以打到減少數據庫讀寫次數來提高性能。2.引出的同步問題該如何處理。 開發語言,java。
1 回答

慕桂英546537
TA貢獻1848條經驗 獲得超10個贊
首先,個人覺得,用緩存只是來解決可用性問題。如果直接將更新對象放入緩存,這個方法是不可取的,你必須保證緩存的高可用性。緩存終究只是緩存,沒法保證一致性。其實你目前的狀況是需要解決分布式鎖的問題,可以嘗試使用隊列,或者paxos算法去解決?;蛘咴谌志彺嬷杏靡粋€所標記去標記你要寫的文件。 其實你完全沒必要自己去實現這套邏輯,直接用hdfs或者其他的分布式文件系統,加上zookeeper,肯定可以解決你的問題。
添加回答
舉報
0/150
提交
取消