我的使用情況如下:與AWS
我們有大約500臺服務器自動縮放EC2集羣中運行需要訪問相同的配置數據(以鍵/值的方式奠定了)幾每秒百萬次。
配置數據不是很大(1或2 GB),並且變化不大(在高峯時間每分鐘更新/刪除/插入數十個)。
延遲對我們至關重要,所以數據需要在運行我們的應用程序的每個實例上覆制並保存在內存中。
最終的一致性很好。但是,我們需要確保每次更新都會在某個時間點傳播。 (知道服務器可以隨時關機) 跨服務器的更新傳播應該可靠並且易於設置(我們不能爲我們的服務器配置靜態IP地址,或者我們不希望走「僞造」的路線「多播的AWS等)
下面是我們在過去探討了解決方案:
- 使用普通的Java地圖和使用我們的定製系統來傳播跨集羣更新。 (顯然,它不能很好地擴展)
- 使用EhCache及其複製功能。但是在EC2上設置它非常痛苦,並且不可靠。
下面是我們正在考慮的嘗試的解決方案:
- 阿帕奇點燃(https://ignite.apache.org/)對複製的策略。
- Hazelcast的複製地圖功能。 (http://docs.hazelcast.org/docs/latest/manual/html-single/index.html#replicated-map)
- 每個應用程序節點上的Apache Geode。 (http://geode.apache.org/)
我想知道這些解決方案是否可以用於我們的用例。最終,我可能會面臨每個問題。
這是我迄今發現:
- Hazelcast的複製地圖是某種最近,仍然有點靠不住(異步更新可能會丟失的情況下,縮小的)
- 看起來的Geode成爲「 (儘管它自2000年代初開始就在開發中)
- Ignite看起來可能很適合,但我不太確定如果我們繼續添加/定期移除節點。
謝謝!
Geode是Gemfire的開源版本。 Gemfire已經存在了很長一段時間了。當你正在進行研究的時候,搜索Gemfire相關的討論可能也是有幫助的,因爲Gemfire和Geode的基礎知識基本相同。 –