Posted on 2009-11-08 00:12
dennis 阅读(1105)
评论(1) 编辑 收藏 所属分类:
涂鸦
今天和同事一起去参加了
CN-Erlounge IV大会,大会的精彩程度超过我的预期,每个Topic都是精心准备并且非常实在,并且见到了很多只闻其名未见其人的大牛,比如传说中的T1、许老大、庄表伟、周爱民老师等。我们3个太早去了,8点半到了会场,发现大多数还没来,阿宝同学和锋爷他们更是9点多才出的门,因此整个会议进程都相应推迟了。
首先是校内网的成立涛做了《Erlang开发实践》的演讲,主题是一个典型的Erlang项目的开发流程、目录结构、单元测试、集成测试、常见问题解决等的概括性介绍,并且他还特意写了一个工程作为Sample,就是放在google code上的
erlips,非常佩服这样的专业精神。交流提到校内网已经部署了30个以上的Erlang节点做广告推送系统。Topic本身非常实在,并且有实际的代码和工程文件提供,可以作为了解Erlang开发基本过程的骨架工程。接下来是锋爷的重头戏《Erlang系统调优》,锋爷的Topic其实超出了Erlang的范畴,对所有系统的性能调优都有借鉴的意义,主题本身将Erlang平台和unix操作系统做了比较,认为Erlang本身也是个OS平台,并且介绍了Erlang提供的方方面面的工具,包括调试、诊断、性能剖析、监控、语言级别的优化、系统的优化选项、协议的选型、应该避免的陷阱、最佳实践等等,你不得不承认Erlang实在是太牛x了,这样的平台难怪能做到7个9的可靠性。这个Topic非常精彩,从ppt本身能看到的只是局部信息,等有视频的时候准备重新看看。
中午组委会提供了午餐,还是很方便,会议的地点吃饭地方不好找,不过晚饭没提供,我们跑了不远的路找了家小饭馆解决晚饭问题。下午的Topic一开始是
饿狼战役的创建者老范的介绍 ,饿狼战役是一个Erlang编写的棋牌型的游戏,玩家可以编写自己的指挥进程参与竞赛,实际上是作为一个Erlang学习的良好环境,类似过去非常流行的robot code游戏一样。我因为跟阿宝他们去闲逛,错过了大部分介绍,源码已经读过,不过我对AI一点也不了解,写个程序干掉英格兰卫兵还是没问题的,哈哈。后来是python社区的大妈介绍了
erlbattle社区的养成问题,谈到了一个社区的生命周期问题,如何去建设一个技术社区,我没有多少感受,不多扯了。饿狼战役推荐去看看,如果你对AI或者erlang有兴趣的话,可以去试试。接下来是T1做的《CUDA编程》的Topic,这个Topic我在提前看ppt的时候就觉的估计自己完全听不懂,最后果然如此,这是一个关于现在很热门GPU编程的Topic,讲述了如何在10ms内完成jpeg的压缩的优化手段和编程技巧,最终的结果是2毫秒多一点就搞定了这个需求,T1介绍的非常详细关于算法和技巧方面的细节,完全跟做工程的是两个世界。T1大大是火星人,咱就不多说了,景仰就行了。
晚上的两个Topic都是关于如何在C++中借鉴Erlang来实现消息传递风格的编程,51.com的qiezi和崔博介绍了他们的actor框架,他们是基于协程和线程池调度来实现伪同步调用,可以实现类似Erlang的进程风格的消息传递,但是要做一个工作就是将类似socket读写、文件读写、sleep这样的阻塞调用封装一下,有异步io可以利用的就利用异步IO,没有的就使用线程池调度,事实上他们做的事情正是Erlang已经帮你做了,现场有很多争议,认为这样还不如使用Erlang,因为你这样做无法避免两个问题:协程的异常处理和阻塞调用可能导致整个进程内的协程不可用,毕竟协程是非抢占式的,并且无法充分利用多CPU的优势。但是许老大提到,从工程实践角度,Erlang毕竟还是小众语言,维护和招人上都不容易,而系统的高可靠性可以从更高层次上去解决,而我们可以从Erlang借鉴这些做法来改进我们的传统语言编程模型。许老大还提到他认为的Erlang编程模型的两个缺点:一个是同步调用的死锁问题,一个是资源进程的独占性问题,这两个问题最终还是要回归到异步模型。这两个问题,我认为其实是一个问题,还是由于资源的有限和独占性引起的,像IO这样的资源就是,你可以将请求并行化设置回调函数不阻塞调用本身,但是实际的IO读写本身仍然是串行的,只不过将这部分工作交给谁来做的问题,我觉的这个问题对于任何编程语言都是一样的无法解决的。对于同步模型和异步模型本身,我更偏向于同步模型,这从xmc的API就可以看出来,同步模型更符合人类直觉,也易于使用,而异步模型容易将业务碎片化,不直观并且使用上也不便利。
以上是今天的流水账,有兴趣看到这的估计没几个,哇咔咔。
补充,遗漏了一个香港老外作的topic演讲,是关于erlang实现的restms,restms是一种restful的message协议,现在想来他主要介绍了restms协议以及一个erlang实现,也就是fireflymq,其中特别介绍了riak这样一个key-value store,它类似amazon dynamo,同样采用consistent hash,多节点备份,vector clock同步等等,比较特殊的地方是他可以将数据组织成类似web超链接形成的网状结构并存储和查询。