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