庄周梦蝶

生活、程序、未来
   :: 首页 ::  ::  :: 聚合  :: 管理

CN-Erlounge-IV大会流水账(下)

Posted on 2009-11-13 17:30 dennis 阅读(977) 评论(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在国内已经开始进入实际应用阶段,对于许多还在观望的人来说,这是个好消息。

 

只有注册用户登录后才能发表评论。


网站导航: