摘要
:Oracle Coherence是一個企業級的分布式集群緩存框架。具有自管理,自恢復,高可用性,高擴展性等優良特點,在電信BOSS等項目中有很大的應用價值。本文對它的特點,架構,基本使用方法,JMX管理,調優等進行簡要但快捷的介紹,并對于Hibernate的集成過程進行說明,為BOSS,CMP等移動項目提供一個的參考。
關鍵詞 :分布式緩存 Coherence
網上除了官方用戶指南,關于Coherence的介紹文章資料很少,因此總結出此文,從原理到快速指南和基本最佳實踐,希望對需要的人提供一個參考。
1 Coherence 概述
1.1 Coherence是什么
Oracle官方網站的描述是:Coherence 在可靠的、高度可伸縮的對等集群協議之上提供了復制的、分布式的(分區的)數據管理和緩存服務。Coherence 不存在單點故障,當某臺服務器無法操作或從網絡斷開時,它可以自動且透明地進行故障切換并重新分布它的集群化數據管理服務。當新服務器加入或故障服務器重 啟時,它會自動加入集群,Coherence 會將服務切回到該服務器,透明地重新分布集群負載。Coherence 包含網絡級的容錯特性和透明的軟重啟功能,以支持服務器自我修復。
----來自Oracle Coherence 專區
http://www.oracle.com/technology/global/cn/products/coherence/index.html
一個典型的Hibernate應用 + Coherence集群如下圖所示:
1.2 Coherence的特點
1.2.1 分布式集群緩存
Coherence是一個分布式的緩存方案,并且通過集群為應用提供強大的緩存后備支持。Coherence主要是內存緩存,即存儲區域主要在內存當中。
與一般的分布式緩存方案如JBossCache, Memcache 等相同,分布式緩存的價值基于網絡IO性能高于DB查詢的磁盤IO性能這樣一個特點。
Coherence所有的設計都是基于多個(可以是非常多)的JVM,很多Coherence的測試都是使用幾十甚至上百個節點來進行的。
下圖展示了一個典型的WAS項目架構:WAS集群 + Near型Coherence集群架構。對于大型Web2.0網站(PHP或其他),集成Coherence也是類似的。
1.2.2自管理
Coherence使用的網絡協議是TCMP ,是對UDP,TCP/IP的組合使用。Coherence能將啟動的實例節點(Node)自動組成為集群(Cluster)。在一個局域網環境中,通過多播(Multicast)機制,第1個啟動的Node能自動發現后啟動的Node,第1,2個Node同樣能發現之后啟動的其他Node,依次類推,自動組成集群; 并且也能自動檢測到死亡節點。集群各節點間通過單播(Unicast)機制進行數據復制,同步及發送通知消息。
Coherence集群以統一的邏輯試圖對外提供緩存的讀寫接口,看起來使用Coherence Client就像在使用一個緩存一樣。
1.2.3 自動容錯和恢復
基于自管理的特點,一個Node掛掉后,集群能自動監測到,并做好死亡節點的數據恢復機制,客戶端依然能正確的讀出在死亡節點上存儲的數據,容錯和恢復對客戶端來說是透明的。
1.2.4 分區緩存(Partitioned Cache)
這是Coherence與眾不同的地方。一般集群如:JBossCache, Websphere 集群等,每個Node都有數據的完整拷貝,Node間通過復制來實現數據同步和一致性,一般來說采用全復制模式,即一份數據在各節點上都有一份拷貝。這種模式下,節點要存儲了較多的數據,同步復制時比較消耗網絡帶寬。
而Coherence的分區緩存只將一個Node上的數據在另一節點上做1個備份,有效降低復制的消耗好時間,并節省內存總需求,只需復制模式的1/N (N為緩存節點個數)。
1.2.5 線性擴展
假如你的Coherence集群已經有4個Node,當系統數據量過大引起Cache容量滿員,導致緩存性能下降時,可以通過啟動新的Node來擴容,改善集群的性能。
這一點也是源自分區緩存技術,集群有N個Node,每個Node只存放1/N的數據,這種設計讓Coherence能夠處理非常多的數據,只需要通過增加節點的數量,就可以處理更多的數據。
下圖為例,當兩臺機器,4個存儲Node不夠用時,通過新增機器,新增Node實例即可自動加入集群,提升Coherence緩存性能。?
線性擴展更重要體現在性能上,下圖展示了,Coherence集群通過增加機器,增加Node實例使得交易耗時大幅降低,而且隨著集群規模呈線性下降。
1.2.6易用性
雖然上述特點看起來似乎很復雜,但那都是Coherence自己內部的事兒。對于客戶端來說,與最簡單的Map 操作一樣,僅僅是 put(key,value), get(key) 等。
正是基于以上技術和特點,Coherence成為一個高可用性,高擴展性,高性能但使用非常簡單的網格型(Data Grid)分布式緩存框架。
Coherence企業級緩存(二) QuickStart和編程
Coherence企業級緩存(三) 四種緩存類型
Coherence企業級緩存(四) 數據管理模式
Coherence企業級緩存(五)與Hibernate集成(1)
Coherence企業級緩存(五)與Hibernate集成(2)
Coherence企業級緩存(六) JMX 管理和監控
Coherence企業級緩存(七) 性能調優
關鍵詞 :分布式緩存 Coherence
網上除了官方用戶指南,關于Coherence的介紹文章資料很少,因此總結出此文,從原理到快速指南和基本最佳實踐,希望對需要的人提供一個參考。
1 Coherence 概述
1.1 Coherence是什么
Oracle官方網站的描述是:Coherence 在可靠的、高度可伸縮的對等集群協議之上提供了復制的、分布式的(分區的)數據管理和緩存服務。Coherence 不存在單點故障,當某臺服務器無法操作或從網絡斷開時,它可以自動且透明地進行故障切換并重新分布它的集群化數據管理服務。當新服務器加入或故障服務器重 啟時,它會自動加入集群,Coherence 會將服務切回到該服務器,透明地重新分布集群負載。Coherence 包含網絡級的容錯特性和透明的軟重啟功能,以支持服務器自我修復。
----來自Oracle Coherence 專區
http://www.oracle.com/technology/global/cn/products/coherence/index.html
一個典型的Hibernate應用 + Coherence集群如下圖所示:

1.2 Coherence的特點
1.2.1 分布式集群緩存
Coherence是一個分布式的緩存方案,并且通過集群為應用提供強大的緩存后備支持。Coherence主要是內存緩存,即存儲區域主要在內存當中。
與一般的分布式緩存方案如JBossCache, Memcache 等相同,分布式緩存的價值基于網絡IO性能高于DB查詢的磁盤IO性能這樣一個特點。
Coherence所有的設計都是基于多個(可以是非常多)的JVM,很多Coherence的測試都是使用幾十甚至上百個節點來進行的。
下圖展示了一個典型的WAS項目架構:WAS集群 + Near型Coherence集群架構。對于大型Web2.0網站(PHP或其他),集成Coherence也是類似的。

1.2.2自管理
Coherence使用的網絡協議是TCMP ,是對UDP,TCP/IP的組合使用。Coherence能將啟動的實例節點(Node)自動組成為集群(Cluster)。在一個局域網環境中,通過多播(Multicast)機制,第1個啟動的Node能自動發現后啟動的Node,第1,2個Node同樣能發現之后啟動的其他Node,依次類推,自動組成集群; 并且也能自動檢測到死亡節點。集群各節點間通過單播(Unicast)機制進行數據復制,同步及發送通知消息。
Coherence集群以統一的邏輯試圖對外提供緩存的讀寫接口,看起來使用Coherence Client就像在使用一個緩存一樣。
1.2.3 自動容錯和恢復
基于自管理的特點,一個Node掛掉后,集群能自動監測到,并做好死亡節點的數據恢復機制,客戶端依然能正確的讀出在死亡節點上存儲的數據,容錯和恢復對客戶端來說是透明的。
1.2.4 分區緩存(Partitioned Cache)
這是Coherence與眾不同的地方。一般集群如:JBossCache, Websphere 集群等,每個Node都有數據的完整拷貝,Node間通過復制來實現數據同步和一致性,一般來說采用全復制模式,即一份數據在各節點上都有一份拷貝。這種模式下,節點要存儲了較多的數據,同步復制時比較消耗網絡帶寬。
而Coherence的分區緩存只將一個Node上的數據在另一節點上做1個備份,有效降低復制的消耗好時間,并節省內存總需求,只需復制模式的1/N (N為緩存節點個數)。
1.2.5 線性擴展
假如你的Coherence集群已經有4個Node,當系統數據量過大引起Cache容量滿員,導致緩存性能下降時,可以通過啟動新的Node來擴容,改善集群的性能。
這一點也是源自分區緩存技術,集群有N個Node,每個Node只存放1/N的數據,這種設計讓Coherence能夠處理非常多的數據,只需要通過增加節點的數量,就可以處理更多的數據。
下圖為例,當兩臺機器,4個存儲Node不夠用時,通過新增機器,新增Node實例即可自動加入集群,提升Coherence緩存性能。?

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

1.2.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)分布式緩存框架。
Coherence企業級緩存(二) QuickStart和編程
Coherence企業級緩存(三) 四種緩存類型
Coherence企業級緩存(四) 數據管理模式
Coherence企業級緩存(五)與Hibernate集成(1)
Coherence企業級緩存(五)與Hibernate集成(2)
Coherence企業級緩存(六) JMX 管理和監控
Coherence企業級緩存(七) 性能調優
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
