2013年6月29日 星期六

ZooKeeper初體驗

近日,公司的服務在multi-server、multi-thread下的運作遇上了同步處理時的問題。簡單的說,就是唯一的resource同時兩個server都搶到。這實在是不能允許的問題。這個服務是jackmis後來接手管理的,不然在下在使用multiserver, multithread的架構時就會要求注意此問題。不過據說起先是single server,所以只用補強的方式來必免問題;老實說,在jackmis的感覺裡,補強的方式可以說是無效的。個人認為這是基本的functional requirement,一定要做到處置有效才行,沒做到、沒proof根本不能上線。總之,要儘快解決問題。

正好最近在看Hadoop相關資料時,讀到一個叫ZooKeeper的東西。我想他可以用來保持multiserver下的一致性,那一定可以拿來做分佈式鎖。更重要的是,ZooKeeper已經從Hadoop分出來成為一個獨立項目,那表示它很可能可以被獨立使用。

經過survery,它果然完全符合我所有的需求,穩定而且簡單易用。雖然它要求的資源有點大,但我想我們的服務並沒有要求那麼多的資源,因此我並不想理會它的系統需求(心臟很大),便測試架設ZooKeeper並寫了一些使用ZooKeeper的sample code、套用分佈式鎖的sample code給工程師,讓他把ZooKeeper加到服務的架構裡。

之後就解決了分佈式鎖的問題,工程師也覺得ZooKeeper彈性、簡單又好用。目前(2013-6-29),ZooKeeper最後一次發佈是在2011年。我認為這表示它很穩定了,不太需要再更新。

ZooKeeper是獨立Service,所以可以獨立執行。它的部署方式就是把程式copy到目的地→調設定→執行。然後就可以用它提供的API來叫用服務。

因為ZooKeeper的使用與設定都很簡單,所以請各位自己上官網學習吧。基本上它就像是從網路抓程式回來,然後執行它的執行檔一樣,就能run起來了。

在此分享兩個API使用上的經驗。

首先,ZooKeeper的API使用的是long session的機制,所以當我們建立ZooKeeper的實例時,連線未必已經建立;因為ZooKeeper有一個自己的pooling機制。所以建立Zookeeper實例後立刻使用服務,有時會得到連線失敗等錯誤。又因為ZooKeeper是long session,所以建議不要一直開開關關,否則建立連線時經常會花費許多時間。

另一個分享的是配置:

autopurge.snapRetainCount=3
autopurge.purgeInterval=1


上面autopurge.xxx是用來清ZooKeeper日誌的(不是log4j的日誌喔!)。因為ZooKeeper會定期把memoery裡的東西寫到硬碟裡,久了會佔很多空間。若是這些日志對你的service沒有實際用途或是價值很差,可以選擇把它刪掉。在最新幾版的ZooKeeper裡,它們加入幾個配置讓ZooKeeper自己去刪掉日志。也就是上面的配置。

2013年6月16日 星期日

尼爾森‧狄麥爾 - 將軍的女兒

雖然我早早就看過本作所拍成的電影,但是最近仍花了一些時間看了原著小說。看了之後才發現電影對這部小說做了許多的改篇。

看小說的時候。開頭的部份和電影如出一轍,所以都是早就知道的內容,jackmis也就很快就看過去。但是劇情進入快一半的時候,開始發現故事的走向與電影不一樣。所謂的不一樣,倒也不是劇情的不同,而是書寫的方式與電影的呈度有著顯著的不一致。

在電影裡,主角對於將軍的女兒--坎貝兒上尉--的過去展開了深度的調查。然而,小說中的主角卻沒有為此投入太多行動,坎貝兒上尉的過去幾乎是透過證詞直接描寫出來。而電影中戲份少的將軍,在小說裡登場的次數與談話的深度明顯提升許多。隱藏在將軍大人內心深處的痛苦毫不保留的描繪出來,不像電影裡的將軍只能擺著一張臭臉。

電影的內容演到愈後面就和小說愈不一樣。編劇把許多靜態的場影改寫成動作較多的場面。相信對於電影而言,故事太過沉悶是不行滴。但是原著的核心理念也因此或多或少起了變化。許多角色的無情與貪婪被顯現出來,許多角色的自我反思與苦痛被掩蓋掉。

總的來說,電影所表現的都是強烈的,無論是在視覺的呈現,還是精神的刺激。小說則採用細膩的方式,將劇中人的複雜情感做細細刻畫。

2013年6月12日 星期三

台灣推理作家協會 - 死亡遊戲

本作係台灣推理作家協會第十屆徵文獎活動後,由入圍者與邀稿作家所合著的作品。本次的入圍作品有四部。其中,個人感覺比較完整的,大概就是《舉手之勞的正義》與《她的左眼所沒看見的謀殺》。

要讓我來選的話,個人比較喜歡《她》的故事。比起《她》,《舉》的故事還是刻意的些;刻意的故事,我喜歡寫的精巧一些,而《舉》在我的感覺裡還做不到這點。而且感覺和金田一少年事件簿的小說《電腦山莊殺人事件》的契子有點相似,所以或多或少讓我有種抄襲的反感。但這絕不是抄襲,只能說是點子雷同罷了。在下也曾經想過一些詭計,並在日後的名偵探柯南中看到過,那個詭計是在冰塊中下毒,讓被害人在冰塊融化後中毒死亡,可以說手法完全一樣;青山岡昌當然不是抄我的,尤其我還沒寫出來呢!

《她》的故事裡,作者描寫了一個人生的奇妙片段。本作的推理元素雖然稱不上絕佳(事實上,個人覺得《舉》也沒好到哪裡),但對在下而言是足夠的;更重要的是,對於一篇短篇小說能在三萬字裡面表達出許多複雜的情感,後是非常令人印像深刻的成就。

這部作品是去年買的,今年才看完,又拖到現在才寫心得。更重要的是,第十一屆的結果都快出來啦。令人有些期待喔。

這部作品值得一看。相信推理迷們也不會放過。也請各位支持推理作家協會的的第十一屆大獎。為台灣推理小說文化加加油吧!