Coherence緩存學習

一.Coherence是什麼

        Oracle官方網站的描述是:Coherence 在可靠的、高度可伸縮的對等集羣協議之上提供了複製的、分佈式的(分區的)數據管理和緩存服務。Coherence 不存在單點故障,當某臺服務器無法操作或從網絡斷開時,它可以自動且透明地進行故障切換並重新分佈它的集羣化數據管理服務。當新服務器加入或故障服務器重 啓時,它會自動加入集羣,Coherence 會將服務切回到該服務器,透明地重新分佈集羣負載。Coherence 包含網絡級的容錯特性和透明的軟重啓功能,以支持服務器自我修復。

        Oracle Coherence 是一個適用於集羣化應用程序和應用服務器的內存中分佈式數據網格解決方案。通過使用 Oracle Coherence 快速、可靠地訪問經常使用的數據,組織能夠以可預測的方式擴展任務關鍵應用程序。

        Oracle Coherence使客戶可以將數據推送到更靠近應用程序的地方,從而提高訪問速度和資源利用率。

 

二.Coherence的特點

1.分佈式集羣緩存

        Coherence是一個分佈式的緩存方案,並且通過集羣爲應用提供強大的緩存後備支持。Coherence主要是內存緩存,即存儲區域主要在內存當中。

        與一般的分佈式緩存方案如JBossCache, Memcache 等相同,分佈式緩存的價值基於網絡IO性能高於DB查詢的磁盤IO性能這樣一個特點。

        Coherence所有的設計都是基於多個(可以是非常多)的JVM,很多Coherence的測試都是使用幾十甚至上百個節點來進行的。

 

2.自管理

        Coherence使用的網絡協議是TCMP ,是對UDP,TCP/IP的組合使用。Coherence能將啓動的實例節點(Node)自動組成爲集羣(Cluster)。在一個局域網環境中,通過 多播(Multicast)機制,第1個啓動的Node能自動發現後啓動的Node,第1,2個Node同樣能發現之後啓動的其他Node,依次類推,自 動組成集羣; 並且也能自動檢測到死亡節點。集羣各節點間通過單播(Unicast)機制進行數據複製,同步及發送通知消息。

        Coherence集羣以統一的邏輯試圖對外提供緩存的讀寫接口,看起來使用Coherence Client就像在使用一個緩存一樣。

 

3.自動容錯和恢復

        基於自管理的特點,一個Node掛掉後,集羣能自動監測到,並做好死亡節點的數據恢復機制,客戶端依然能正確的讀出在死亡節點上存儲的數據,容錯和恢復對客戶端來說是透明的。

 

4.分區緩存(Partitioned Cache)

        這是Coherence與衆不同的地方。一般集羣如:JBossCache, Websphere 集羣等,每個Node都有數據的完整拷貝,Node間通過複製來實現數據同步和一致性,一般來說採用全複製模式,即一份數據在各節點上都有一份拷貝。這種 模式下,節點要存儲了較多的數據,同步複製時比較消耗網絡帶寬。

        而Coherence的分區緩存只將一個Node上的數據在另一節點上做1個備份,有效降低複製的消耗好時間,並節省內存總需求,只需複製模式的1/N (N爲緩存節點個數)。

 

5.線性擴展

        假如你的Coherence集羣已經有4個Node,當系統數據量過大引起Cache容量滿員,導致緩存性能下降時,可以通過啓動新的Node來擴容,改善集羣的性能。

        這一點也是源自分區緩存技術,集羣有N個Node,每個Node只存放1/N的數據,這種設計讓Coherence能夠處理非常多的數據,只需要通過增加節點的數量,就可以處理更多的數據。

        當兩臺機器,4個存儲Node不夠用時,通過新增機器,新增Node實例即可自動加入集羣,提升Coherence緩存性能。  

        線性擴展更重要體現在性能上,Coherence集羣通過增加機器,增加Node實例使得交易耗時大幅降低,而且隨着集羣規模呈線性下降。

 

6.易用性

        雖然上述特點看起來似乎很複雜,但那都是Coherence自己內部的事兒。對於客戶端來說,與最簡單的Map 操作一樣,僅僅是 put(key,value), get(key) 等。

    NamedCache cache = CacheFactory.getCache("dist-cache");  
    cache.put(key, value);  
    Object value = cache.get(key);

        正是基於以上技術和特點,Coherence成爲一個高可用性,高擴展性,高性能但使用非常簡單的網格型(Data Grid)分佈式緩存框架。
————————————————
版權聲明:本文爲CSDN博主「wjxbj」的原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/wjxbj/article/details/84854505

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章