0
我有一個hazelcast實例添加對象到列表和其他節點刪除和添加對象到列表。我沒有在代碼中的任何同步。Hazelcast分佈式列表併發
只是
私人靜態列表>有序= h.getList( 「我的分佈清單」);
和節點添加/刪除有序列表中的作業。
我應該擔心跨多個機器上的節點同步嗎?說100個節點以上..
我有一個hazelcast實例添加對象到列表和其他節點刪除和添加對象到列表。我沒有在代碼中的任何同步。Hazelcast分佈式列表併發
只是
私人靜態列表>有序= h.getList( 「我的分佈清單」);
和節點添加/刪除有序列表中的作業。
我應該擔心跨多個機器上的節點同步嗎?說100個節點以上..
有你需要小心的幾件事情:
列表本身是線程安全的,你不能併發訪問損壞它。
但是..如果你的邏輯不是線程安全的,那麼列表不會幫助你,
int indexOf = list.indexOf("foo");
if(index!=-1) {
list.remove(indexOf)
}
然後,這包含競爭問題,因爲讀取索引和刪除具有給定索引的項目不是原子操作。
除了在自己的邏輯中存在競爭問題之外,過多的競爭線程可能導致性能/可伸縮性問題,因爲列表並不是特別修改友好的數據結構。
所以如果你知道你在做什麼,那麼列表可以是你的朋友。
是的,榛樹確實會給你一個分佈式的列表來使用。但它的併發性必須使用跨節點的鎖/同步來「處理」。另一方面地圖似乎是由榛樹'處理'。 – Hari
Hazelcast列表不比地圖更少線程安全。 – pveentjer