Posted on 2009-11-13 17:30
dennis 閱讀(987)
評論(0) 編輯 收藏 所屬分類:
涂鴉
上篇是在興奮的狀態(tài)下當(dāng)天晚上寫的,這下篇拖到現(xiàn)在,印象也開始有點(diǎn)模糊了,以下全憑記憶,如有謬誤敬請?jiān)彙?br />
CN-Erlounge第二天的topic,一開始是來自汕頭的一位朋友介紹他對
利用單機(jī)程序組建分布式模型的分析與實(shí)例,實(shí)話說這個Topic很一般,基本上文不對題,并且舉的例子沒有說服力,有點(diǎn)為了用Erlang而用Erlang的感覺,其實(shí)跟Erlang關(guān)系不大,并且用Erlang搭建原型的話,還不如用python、ruby腳本來搞,后來跟同事的交流說,他介紹的還只是作坊式的一些做法,沒有多少可借鑒的意義。
接下來是侯明遠(yuǎn)的《
基于Erlang實(shí)現(xiàn)的MMO服務(wù)器連接管理服務(wù)》,也就是Erlang在他的網(wǎng)游項(xiàng)目替換c++的一些嘗試,效果非常好,不僅代碼量大大減少,而且維護(hù)起來也非常容易。特別是他介紹了用Erlang搭建測試環(huán)境的嘗試給了我們不少啟發(fā),事實(shí)上在回來后,我也嘗試用Erlang寫了個用于壓測的代理服務(wù)器,不過由于我們的client仍然是Java,無法做到類似的分布式壓測管理,僅用Erlang做中心的代理轉(zhuǎn)發(fā)服務(wù)器。感受是Erlang做網(wǎng)絡(luò)編程確實(shí)非常容易,Erlang的網(wǎng)絡(luò)層將底層封裝的非常完美,對于用戶來說完全屏蔽了網(wǎng)絡(luò)編程的復(fù)雜細(xì)節(jié),并且提供了gen_server、gen_fsm這樣的基礎(chǔ)設(shè)施,寧外Erlang對binary數(shù)據(jù)的操作非常容易,對協(xié)議解析來說也是個巨大優(yōu)勢,整個程序就200多行代碼,這還包括了一個通用的tcp服務(wù)器框架,借鑒了mochiweb的socket server實(shí)現(xiàn)。過去我對Erlang的message passing風(fēng)格的理解還局限在actor模型上,進(jìn)程之間相互發(fā)送消息,而其實(shí)Erlang的消息傳遞風(fēng)格還體現(xiàn)在語言本身以及整個otp庫的實(shí)現(xiàn)上,例如在accept一個連接后,我們調(diào)用服務(wù)器的邏輯代碼:
accept_loop({Server, LSocket, M}) ->
{ok, Socket} = gen_tcp:accept(LSocket),
% spawn a new process to accept
gen_server:cast(Server, {accepted, self()}),
% initialize
State=M:init(Socket),
M:loop(State,Socket).
其中的M是你的邏輯模塊,我們直接調(diào)用M:loop(State,Socket)進(jìn)入邏輯模塊的處理,這里的init和loop方法都是
約定,或者說模塊的回調(diào)方法,你也可以理解成Ruby的duck typing。我不知道M有沒有這兩個方法,
我只是嘗試給它們傳遞消息(調(diào)用),等待響應(yīng),這同樣是
消息傳遞風(fēng)格。同樣,理解gen_server這樣的behaviour的關(guān)鍵也是回調(diào),你只要實(shí)現(xiàn)這些behaviour的回調(diào)方法,響應(yīng)這些模塊的消息,你將天然地?fù)碛兴鼈兊膹?qiáng)大功能。
接下來是周愛民的《
談?wù)別rlang網(wǎng)絡(luò)環(huán)境下的幾種數(shù)據(jù)流轉(zhuǎn)形式》,怎么說呢,我聽的懂,但是似乎沒有抓到key point,老大們理解問題、分析問題的層次似乎不同了。不過其中講到如何解決異步的通訊順序問題對我們有一定借鑒價值。聽了快兩天的課,非常疲倦,加上頭天晚上沒睡好,這上午稀里嘩啦就過了,中午組委會提供披薩,實(shí)話說好難吃啊,口味不慣。
壓軸的是阿里云老吳的《
XEngine介紹》,第一次聽說xengine是在阿里云計(jì)算公司的成立展覽上,我跟開發(fā)人員有個短暫的交流,大概明白Erlang在xengine中扮演的角色。XEngine的野心很大,做中國的EC2、AppEngine,Erlang在其中的角色扮演了監(jiān)控和協(xié)調(diào)的作用,利用它天然的分布式編程模型,xengine需要依賴阿里云的飛天計(jì)劃,涵蓋了分布式文件系統(tǒng)、MQ、通訊組件、分布式持久層等等,這些基礎(chǔ)設(shè)施沒搞好,xengine 還只能是“云”。集團(tuán)內(nèi)部早有消息是希望能統(tǒng)一集團(tuán)內(nèi)的各種基礎(chǔ)設(shè)施,包括我們現(xiàn)在的這個MQ系統(tǒng),我跟老吳開玩笑說他們做好了我們就要失業(yè)了:)。說到云計(jì)算,新浪的app engine據(jù)說已經(jīng)開始內(nèi)部測試了。那天我們老大還在說貌似國內(nèi)只有阿里在搞app engine,沒想到新浪倒走到前面咯。
后來是提議到公園去走走,大家隨意聊聊,因?yàn)楸容^累以及跟各位大佬們不熟,阿寶朱GG他們?yōu)榱粟s飛機(jī)也提早走了,我們?nèi)齻€就提前撤退咯。杭州的出租車3點(diǎn)半交班,加上舉辦馬拉松,打不到車,走了N遠(yuǎn)的路才坐到公交回家,到家天色剛晚。
CN-Erlounge IV的質(zhì)量是我參加過的技術(shù)會議里面最高的,不過我其實(shí)沒參加過多少技術(shù)會議,哈哈??偨Y(jié)下感受,從CN-Erlounge的Topic來看,已經(jīng)有很多公司在實(shí)踐中應(yīng)用Erlang,我問arbow這一屆Erlang大會跟過去的區(qū)別(過去我沒參加
過),arbow就說這一屆的實(shí)踐經(jīng)驗(yàn)的分享相對比較多,一個側(cè)面也可以反應(yīng)Erlang在國內(nèi)的發(fā)展程度。不過Erlang還是小眾語言,這從參會的人數(shù)上可以看出來。搜狐、校內(nèi)、阿里這樣的互聯(lián)網(wǎng)巨頭都開始嘗試Erlang,一方面可以證明Erlang這個平臺的吸引力,一方面也可以說明Erlang在國內(nèi)已經(jīng)開始進(jìn)入實(shí)際應(yīng)用階段,對于許多還在觀望的人來說,這是個好消息。