Coherence簡介

雖然這篇文章不是完全翻譯自這篇,但大意也差不多了。希望能讓大家多了解一點Coherence。

Coherence是基於一種mesh-based(網狀)P2P的高延展性技術,主要用於資料可用性與效能都十分重要的系統上。簡單來說,Coherence其實就是一種分散式的快取服務(distributed cache service),其主要目的便是快取資料。之所以稱為分散式快取,是因為Coherence能將一堆資料加以分散(distribute,或說分割 - partition),並放到任意數目的節點上,這些節點便成為一個叢集(cluster)中的成員。因此,每個節點都擁有整堆資料的其中一部份。Coherence能確保資料不會通通擺放在單獨某台節點上,所以這又可以達到負載分散的效果。資料本身是放在節點上的記憶體內(in-memory),但因為所有節點的記憶體可組成一塊很大的快取儲存空間,所以Coherence也是分散式的in-memory資料網格(data grid)。 既然是網格技術,所以任意節點加入或離開這個網格(或說叢集)都是很簡單的,不會造成整個叢集運作與管理的龐大負擔。而資料本身是被保存在整個叢集裡,所以也可達成HA(high availability,高可用性)。因此網格規模可以大量延展、整體運作效能可以倍數提升、資料的穩定度(reliability)亦可被確保。

分散式快取需要考慮幾個重點:

  • Partitioned(資料分割):在整個分散式快取中資料是被打散放到所有伺服器所構成的叢集中的任一節點上,但是不會有兩個節點(或以上)存放了同一份資料片段。也就是說任一資料片段,只會也只能從一個節點上取得。這代表快取的大小和處理效能及相關的快取管理工作,會隨著叢集的大小而線性成長;亦即多增一台節點,效能就會隨之比例成長。另外這也意味著快取資料的操作可以用「一次跳躍」(single-hop)就完成,也就是說最多只需要再另外一台節點幫忙就行了。(詳情請見底下第一張圖)
  • Load-Balanced(負載平衡):因為資料是被平均分散到各伺服器節點上,因此管理資料的責任,就會自動平均分擔到整個叢集中。
  • Location Transparency(位置透通):雖然資料是分佈到整個叢集中,但存取這些資料卻是用同樣的一套API,而且可用API中不同的方法來都得到相同的結果。這就叫做位置透通性,亦即開發人員不用依照快取的架構(topology,見下下段)來開發,只需要遵照API用法就可以了,而且這結果是可以相信的。
  • Failover(錯誤移轉):所有的Coherence服務都提供錯誤移轉(failover)和錯誤復原(failback),確保資料不會漏失。Coherence的分散式快取服務能夠設定一個資料的備份數量,因此只要備份數目是大於等於1,任何節點掛掉Coherence就都能確保儲存於其上的資料不會就此漏失。

既然資料是分散擺放的,那你可能就會問說,如果要一小塊資料卻要繞一大段路(訪問過一大堆節點)才能找到這個資料是被放在哪個節點上,那豈不是太瞎了嗎?當然Coherence不會如此地瞎,不然神諭公司還買它做啥(Coherence前身叫做Tangosol Coherence,就是Tangosol這家公司的產品)。基本上,Coherence的分散式處理機制,屬於一種DHT(Distributed Hash Table,分散式雜湊表)。有沒有看到關鍵字hash?任何學過演算法的人都知道,hash table能夠快速地按照關鍵字(key)來尋找資料記錄。因此我們就能大致上想像出Coherence的分散式原理了。

除此之外,Coherence為了讓資料取得效能最佳化,絞盡腦汁設計了好幾種caching schemes,讓資料存在與擺放的時間、地點、方式能夠依據應用系統的不同需求而有所調整適應。這些scheme(或稱topology)詳情可見,本處不談。不過Coherence預設的scheme是「Partitioned」scheme,也就是本篇接下來會談到的快取處理方式。

前面提過,存取使用分散式快取,經常會經由網路走到其他節點上去。一般來說,如果叢集中有n個節點,那大約會有 (n - 1) / n 的動作是會跨到網路上的。

coherence-replicated-cache-get.png

前面亦提到,因為每個資料片段都只能由一個節點來控管,所以任何經過網路的存取都只是「一次跳躍」的行為。這種方式非常具有延展性,因為這樣就可以採用點對點的傳輸方式,很適合於一般交換式網路。同樣地,要在快取裡面做更新動作,也是可利用一次跳躍的點對點傳輸方式。不過這卻會產生兩種限制。其一是必須將更新過的資料傳播給整個快取叢集:

coherence-replicated-cache-update.png

在上圖中,更新過的資料被傳遞給擁有此資料的主節點(primary)與其備份節點(backup)。這樣做是為了錯誤復原的目的,而且這裡的備份數目是只有一個。如果快取資料不是很重要,可從磁碟中再次取出來,那就可以不要有備份,也就是能允許某些快取資料可能因為伺服器掛掉而導致的資料漏失。但如果快取資料很重要,那就可以設多一點的備份數目,譬如兩個或以上。不過備份數目多寡會影響快取資料被更新時的效能,如新增、修改和刪除快取項目等。

修改快取資料動作的完成與否,取決於備份節點是否也有回應收到了更新,所以這可能會對效能有些影響。但這能保證一旦有節點掛掉,資料既不會漏失也不會不一致。Coherence的錯誤移轉作法是,找出掛掉節點上的資料其備份是放在哪一台,然後將此備份所屬節點提昇為該資料的主節點,接著再從剩下的節點中選出一個當作備份節點。如下圖所示:

coherence-replicated-cache-recovery.png

如果備份有很多層,那第一層的備份節點就會變成主節點,第二層的就變成新的第一層備份,依此類推。

另外,Coherence可為每個節點設定成是否要負擔資料儲存任務,也就是啟動「本地儲存」(local storage)與否。有啟動本地儲存的節點,就能夠為整個分散式叢集提供一部分快取儲存空間。但不論節點有沒有啟動儲存功能,所有叢集中的節點,都能知道所有資料的存放位置,即下圖中的Logical層機制。這Logical就是一個資料分布圖,任何人透過它就可瞭解所有資料的primary和backup各是放在哪些節點上,這就叫做所謂的「共識」(consensus)。前述的位置透通性就是透過共識而達成的。

coherence-local-storage.png

這個本地儲存的選項有幾項好處:

  • 若將某節點的本地儲存選項關掉,則其Java heap的大小就完全不會被快取所吃掉的記憶體容量給影響到。因為若沒有本地儲存,則資料將不會被放到這個節點上,而是其他節點。這種情況特別常見於執行在較舊版本JVM上的應用程式伺服器,而且又佔用了很大塊的heap。 因為舊版JVM的垃圾回收機制可能不是很健全,導致這些應用程式伺服器的處理程序便會因為JVM在做垃圾回收時,受到效能拖累(因為若heap愈大反而垃圾回收就要做愈久)。
  • Coherence可允許叢集中每個節點皆能執行於任何受支援的JVM版本之上。因此有啟動本地儲存的節點就可以用新版的JVM來跑,以支援更大容量的heap;或是可設定Coherence的off-heap儲存空間(heap之外,如檔案系統),並改用Java NIO來操作存取。
  • 本地儲存選項可令某些節點的責任是只負責儲存快取資料,此即所謂的Coherence快取伺服器。快取伺服器通常是用於延展(scale up)Coherence的分散查詢能力,因為愈多節點負責做查詢運算處理,效能理應就更好。

有機會的話,會再放demo影片給大家看。不過你要是有時間就先來看看Google TechTalks 2007上對Coherence的介紹:

有任何問題歡迎留言。

PS.1 failover與failback的差異,請見
PS.2 Coherence Getting Started wiki

May 22nd, 2010 資訊科技, 軟體開發, Oracle | 1 Comment

Heaven or Hell, Rock In Peace, Dio

Dio以68歲之齡回家了,那些爺字輩的搖滾明星,愈來愈讓人珍惜了…

現代搖滾也差不多50年了,從60年代開始,那些曾經蹦蹦跳跳的搖滾小子,如今都是六七十歲的老爺啦。相較於其他器樂演奏手,搖滾主唱是靠聲音與舞台活力吃飯的,理論上狀態應該更難維持。像是Rolling Stones的主唱Mick Jagger(比Dio小一歲)、Deep Purple的主唱Ian Gillan(比Dio小三歲)、Led Zeppelin主唱Robert Plant、Black Sabbath的主唱Ozzy Osbourne和Shock Rock之王Alice Cooper(都比Dio小六歲),真的都是搖滾活化石吶!

突然感嘆的是,想想有生之年,能親眼見到他們表演的機會真的已經不多了。就算沒此難得機緣,也該好好認識認識他們曾經創造的輝煌音樂,不要等到人走了,再來感嘆生不逢時。所以現在就來一趟回溯之旅,向這些偉大的音樂致敬!

May 17th, 2010 音樂 | No Comment

末世金屬的傳奇 - Pentagram

這麼經典的東西,由於太少中文介紹了,所以我來做一下功德~

Pentagram最早於1971年創始在美國維吉尼亞州的Woodbridge。一開始是主唱Bobby Liebling與吉他手Geof O’Keefe,他們從離開各自的團以後,便想合組一個類似UFOUriah Heep的重搖滾樂團。Liebling為樂團取名為Pentagram,又找了一些當地的樂手如吉他手John Jennings、貝斯手Vincent McAllister和鼓手Steve Martin這些人一起加入。但沒多久Steve Martin和John Jennings因為音樂風格不同而離開(後來Jennings成為名鄉村歌手Mary Chapin Carpenter的專屬吉他手),於是O’Keefe就換去打鼓,McAllister改拿吉他,Greg Mayne則加入進來彈貝斯。這個固定陣容在一起玩了幾年,期間雖曾用過Virgin Death、Wicked Angel和Macabre這些名稱(1972他們的第一首單曲Be Forewarned就是用Macabre),不過最終他們還是決定換回Pentagram。他們玩的音樂一直都是比較扭曲失真的迷幻硬式搖滾/重金屬,有點類似Blue Cheer那種風格。

他們的處女秀是登台於1973年底,那時他們音樂明顯受到了黑色安息日的影響(當時的黑色安息日已經發了五張專輯,張張都是經典)。1974年中Randy Palmer加入又形成雙吉他陣容,這段期間他們創作了很多首歌,也跟Blue Öyster Cult的經紀人Murray Krugman搭上線,其所屬的哥倫比亞唱片公司都已經安排好錄音事宜,準備要跟他們簽下一紙合約了。沒想到Liebling跟Krugman卻因製作問題意見不合吵了起來,所以合約便無疾而終。1975年底Kiss的Gene Simmons的Paul Stanley也看過了Pentagram的排演,但他們覺得Pentagram沒特色又無約在身,所以也興趣缺缺。此時Liebling又跟他女友被警察逮捕,所以團員們決定開除Liebling。但因為Liebling擁有Pentagram這名字的權利,所以他們無法以Pentagram為名活動。到了1976年時Randy Palmer離開了樂團,由Marty Iverson取代成為節奏吉他手,他們也決定再給Liebling一次機會。但不久後Liebling又跟團員們在錄音室鬧翻,Vincent McAllister跑去著名的GIT進修吉他,Marty Iverson也求去,Pentagram分崩離析。這前五、六年間他們甚至換了七位不同的經紀人,合約也沒搞定,Pentagram就此沈寂了下來。

過了兩年,Liebling認識了鼓手Joey Hasselvander,加入他的樂團The Boyz當主唱,但過沒多久Liebling照例搞掛了這個組合。到了1981年的萬聖節,Hasselvander加入了一個叫做Death Row的doom metal團,他們有著很喜愛黑色安息日的吉他手Victor Griffin。當時Liebling對他們的即興演出深感興趣,於是便聯合了之前The Boyz的貝斯手Martin Swaney加入Death Row。他們在1982年錄了一卷demo叫做All Your Sins,然後接下來他們藉由到處走唱累積了大量表演經驗,同時準備將All Your Sins發行。不過1984年時Hasselvander離開樂團,Stuart Rose成為鼓手。Liebling藉機復辟了Pentagram,終於在1985年以All Your Sins為基礎,自資發行了第一張正式專輯,就是樂團同名專輯Pentagram(1993年Peaceville的重發版叫做Relentless),這時距樂團成型已歷經15個年頭了。這張唱片包和了一些他們70年代的歌和幾首新創作的歌,明顯受到黑色安息日和Blue Cheer的影響,樂風虛無而重型。1987年他們在大廠Napalm Records旗下出版了第二張專輯Day Of Reckoning,這是一張典型doom metal的經典,歌曲完成度很高,非常具有黑色安息日所傳的末世教義味道。1989年時Greg Mayne和Randy Palmer都跑回來了,同時還加入了吉他手Ted Feldman和鼓手Jon Cook。他們此時正準備著下一張專輯,但好景不常,這陣容也沒撐多久。接下來Pentagram又陷入了停滯狀態,直到1993年Peaceville連續重發了Relentless和Day Of Reckoning,Hasselvander也回鍋了,他們才又在隔年發行了第三張專輯Be Forwarned。但彼時整個音樂大環境對重金屬其實是不友善的,Pentagram也似乎免不了乏人問津且面臨再度解體。

然後在1998年,有人把Pentagram早期的一些現場演出,非正式的發行了一張bootleg,提名為Human Hurricane,促使Liebling和Hasselvander出面採取行動。他們兩人於是便著手重新演奏並錄製Pentagram早期於70年代創作的一些未曾發行過的歌曲,那就是1999年出版的Review Your Choices和2001的Sub-Basement。這些作品讓人們見識到了早年Pentagram的精華以及對後世doom metal成型的卓越影響,Relapse Records還在2002年把他們早期大量demo和排練時的錄音以一套兩張的方式做發行,那便是評價很高的First Daze Here,其中還包含了翻唱滾石合唱團的Under My Thumb和The Yardbirds的Little Games。

但之後Hasselvander又跟Liebling分道揚鑣了,Liebling便找來Internal Void的所有團員,再次重組Pentagram,並於2004年出版了專輯Show ‘em How,但其中只有三首是新歌,其他全是70年代舊歌。只是Liebling個人不穩定的狀況總是讓Pentagram難以維續,甚至在某次表演前Liebling在舞台上失控,團員們只好把觀眾席中的Hasselvander臨時給拉上台暫代演出,於是此後樂團又處於停滯狀態。直到2008年,Liebling徵召吉他手Russ Strahan、90年代中期的巡迴做場鼓手Gary Isom和貝斯手Mark Ammen,宣佈重組Pentagram,並陸續做了一些公開的演出,評價與賣座都不錯。但今年3月Russ Strahan突然離團,然後從前年就宣佈要發行的新專輯Last Rites就一直孵不出來…

(編譯自allmusic和Wikipedia)

PS.
Pentagram Wikipedia條目
Pentagram allmusic網頁
Pentagram Encyclopedia Metallum網頁

May 16th, 2010 音樂 | No Comment

真是領導有方

雖然「Lots and lots of blogs does not replace lots and lots of sales」,但是「Lots and lots of merges does not replace lots and lots of sales」,同樣道理。

每併一家公司,挾有更大資源,卻反而做的更小,這也真是領導有方。

May 14th, 2010 資訊科技, 工作 | No Comment

白線條的大象愛情故事

the-white-stripes-elephant.jpg

突然發現,The White StripesElephant裡面,連續幾首歌排在可以編成一個故事…

首先,吵完架後,公的說:

There’s no home for you here girl, go away 這裡不需要妳了,滾吧,女孩!
(第三首 - There’s No Home For You Here)

然後冷靜了幾天之後,

‘Cause I’m not with you, I just don’t know what to do 因為妳不在我身旁,我真不知自己該怎麼辦
(第四首 - I Just Don’t Know What To Do With Myself)

接著母的主動表態了:

Come to me in the cold, cold night 在這淒冷的夜裡,來到我身旁吧
(第五首 - Cold, Cold Night)

於是終於又和好如初,感情更進一步論及婚嫁,但是…

I want to be the boy to warm your mother’s heart 我好想讓妳老媽打從心理也覺得我不錯
But she won’t even come out and say hi 但她甩都不甩我

(第六首 - I Want To Be The Boy To Warm Your Mother’s Heart)

不過有情人終成眷屬,

You’ve got her in your pocket 終於將她納為幾私啦
(第七首 - You’ve Got Her In Your Pocket)

一路醬聽下來,挺有趣的~

May 4th, 2010 音樂 | No Comment

Pages (127): « First ... « 1 2 3 [4] 5 6 7 » ... Last »