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

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

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

線性擴(kuò)展更重要體現(xiàn)在性能上,下圖展示了,Coherence集群通過增加機(jī)器,增加Node實(shí)例使得交易耗時大幅降低,而且隨著集群規(guī)模呈線性下降。

1.2.6易用性
雖然上述特點(diǎn)看起來似乎很復(fù)雜,但那都是Coherence自己內(nèi)部的事兒。對于客戶端來說,與最簡單的Map 操作一樣,僅僅是 put(key,value), get(key) 等。
NamedCache cache = CacheFactory.getCache("dist-cache"); cache.put(key, value); Object value = cache.get(key);
正是基于以上技術(shù)和特點(diǎn),Coherence成為一個高可用性,高擴(kuò)展性,高性能但使用非常簡單的網(wǎng)格型(Data Grid)分布式緩存框架。
Coherence企業(yè)級緩存(二) QuickStart和編程
Coherence企業(yè)級緩存(三) 四種緩存類型
Coherence企業(yè)級緩存(四) 數(shù)據(jù)管理模式
Coherence企業(yè)級緩存(五)與Hibernate集成(1)
Coherence企業(yè)級緩存(五)與Hibernate集成(2)
Coherence企業(yè)級緩存(六) JMX 管理和監(jiān)控
Coherence企業(yè)級緩存(七) 性能調(diào)優(yōu)
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

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