BeijingOpenParty2010年06月”荷风清韵”活动总结

发布于八月 17, 2010 十一月 5, 2010 http://www.beijing-open-party.org/?p=689 wp_1 cleverpig 0

来自Netstarry的活动反馈:

整体来说OpenParty还是很不错的,有一个小的疑问是觉得OpenParty非技术类话题的分量有点重 从你们的定位来看,主流话题应当是和 程序开发相关的话题, 但从上次的结果来看,虽然技术类话题在数量上占据多数,但参与非技术类话题的人数却远远超过了参与技术类话题的人数 从我的感受来说,造成这个情况的主要原因是,非技术类话题永远会比技术类话题有更大的受众面。当某个技术类话题和个人的兴趣不一致时,我觉得这个人会选择非技术类话题。 但这个情况给我的感觉是整个活动的技术氛围差了很多。 另一个造成这个情况的原因我认为是话题的产生方式,话题是根据Speaker的兴趣产生的,而并不是听众的兴趣,我觉得是否OpenParty可以在网站上做一个开源技术兴趣排行榜,对OpenParty的成员每月进行一个调查,这样也好让Speaker知道OpenParty的成员当前的关注点,这样产生的话题才更有针对性,对于一个没有正确受众的技术话题分享,我觉得对演讲者和听众都是没有任何意义的。 希望OpenParty越办越好,我也希望为OpenParty准备正确的技术话题,而不是没有正确听众的技术话题。

CNBorn:OpenParty "荷风清韵"

本次OpenParty "荷风清韵"活动的话题展现出强烈的多元化色彩,涵盖了从软件助力天文学研究、社群活动、读书分享乃至笑来老师带来的时间管理话题,到类似Nginx脚本编程等前沿IT话题,难免让在场的朋友应接不暇。按照惯例将自己现场收听的三个话题做一下简单整理。

量天-软件工程如何助力天文宇宙学研究

由冬清带来的,介绍天文领域软件开发项目的介绍,让在场的各位科学爱好者大开眼界。 冬清所在的公司Gsegment作为地面应用软件开发团队,参与了目前世界上最大的空间望远镜赫歇尔卫星空间项目。 在工作中,也认识到现在我国的航天工程力量明显不如欧洲航天局/NASA等组织,所以Gsegment为团队订下了长远的目的和理想:致力于通过工程来促进科学,提高我国工程能力。 Herschel计划是Horizon 2000计划的4个Corner Stone的其中之一,包含卫星在内的整个计划从决策到交付历经10年,观测卫星于09年5月14日发射,可保障使用期3年。如果把成本均摊到使用期,相当于每天开销百万欧元。Herschel天文台是红外亚毫米波天文台,在这个波段可看到宇宙早期的情况,同时由于波长长,在大气内难以观察,才有对应的卫星观测项目。天文台的观测仪器囊括了光学观测、谱分析等多种功能,可以用来在外星球寻找水。软件中重要的部分,HCSS Hershel 通用科学系统,开发历时十年,三百万行代码,20名开发人员使用Java开发而成。天文信息需要大量分析,卫星信号首先进入科学中心,然后通过由科学家编写的系统化产品生成脚本(Pipeline),最终产生可供分析和研究的数据。 现场还讲解了很多天文学的概念和知识,遗憾的是限于自己的知识水平有限,无法向大家做更完善的讲述了。 另外在现场冬清还为大家演示了地面站软件开发(数据收集分析)部分的集成开发环境,同时Gsegment也在招聘技术人员,欢迎有Python或Java编程经验的,想要致力于尖端工程科研方向的朋友请与他们取得联系。

奇遇花园与社群活动:猴子屁股与社群多样性

由奇遇花园的老板詹膑带来的话题,这个话题恰恰不像他自谦的是"广告",而从社群的概念这个角度入手,给大家讲述了社群理念,并从中建立联系、组织和活动的一些基本原则。 茫茫人海中,每个人都是独一无二的。社群多样性有助于解决社会问题。想对社群研究有深入浅出的理解,詹老师推荐《人类动物园》这本书。为什么会有新社群?旧有的社群在瓦解:班级、单位等,新的社群正在通过崭新的渠道产生,同时由于种种原因,这种讨论在学术范畴所进行的可能逐步减小。而将社群活动的理念推广,并做出有价值的活动,无疑是推动社会进步的一种良好方式。 我个人认为这个话题为在各种社区努力的组织者、参与者从概念上了解社群氛围与活动作出了很大贡献。同时奇遇花园在8月份还迎来了为众多社区提供服务的店庆开放月,这种对社区的贡献值得赞扬,欢迎大家给予更多的关注。

Nginx 脚本编程

由淘宝的 agentzh 大侠带来的Nginx脚本编程话题,由于其角度的新颖和前沿性,成为了本次活动的一个重量级话题。 Agentzh从去年9月开始研究Nginx源码,其中Nginx中高性能的实现也为阅读带来了很多障碍。遇到困难的地方就使用抄写的手法,白天抄写,在晚上一个人冥想。在研究和学习期间得出这样一个结论:Nginx远不是http server,这个软件的野心要远远超过大多数人对它的理解。 冥想和研究的最初结果就是独自开发的Nginx Echo模块,在Nginx的配置文件中实现了echo, sleep, time等功能。目前是为Nginx开发模块的开发者通常都会参考的一个典型范例。(此项目的文档之详细及深入,实在值得绝大多数的中国开源软件开发者学习) Nginx 的核心代码大约 10W 行,就其来说,已经是很紧凑的规模了,相比之下,Apache的核心代码大约有 30W 行。而Agentzh所在的团队针对Nginx所写的的扩展的规模,都已经有3W行了。 Apache的多线程模型中,每个线程I/O阻塞,使用多线程拼并发。Nginx不支持多线程,而是使用多个进程来对应CPU 核数,从而提升在多核CPU下的性能。 而为Nginx开发子模块时需要注意的关键问题也是实现非阻塞I/O。因为实现高性能的前提,就是在处理的各个流程部分实现I/O非阻塞,如果仅仅是Nginx本身实现了I/O非阻塞,而处理的子模块却无法实现,那么整个性能的优化就变得没有意义了。 前面抛砖引玉的部分结束,接着从echo模块开始,agentzh将自己开发的众多Nginx模块逐个进行了介绍,通过在nginx.conf文件中应用这些模块,实际上就基本构成了单独使用Nginx来进行高效率非阻塞I/O服务器端开发的前提。我在这里也凭借记录将这些模块在这里简单罗列一下,具体的详情和范例可以参见 agentzh 的幻灯片:Slide1Slide2 if statement的实现 - (ngx_dev_kit, set-misc-nginx-module)模块 array的实现 - (array-var-nginx-module)模块 子请求,一个请求中执行其它请求,可以提高服务器的并发度,提高平均相应时间,但是注意同时也增大了服务器的压力。子请求的具体应用实例:前端通过多个子请求的方式来异步获得处理结果,然后Nginx可以把结果合并并展示(比如合并成为JSON 用于AJAX)。 用C重写的Non-blocking memcached 模块 - (memc-nginx-module),可以实现在nginx.conf中直接用非阻塞方式操作memcached 用error_page 这个命令来实现等同于程序语言中try/catch的语句 memcached 连接池 - (ngx_http_upsteram_keepalive) 来实现连接池 使用非阻塞方式来访问 MySQL - (drizzle-nginx-module, rds-json-nginx-module) 这里有个问题,就是通常使用的libmysql是I/O阻塞的,如果在这个应用场景中使用这个库则无法发挥Nginx的高效率。在这里使用了Drizzle模块中的driver可以实现非阻塞IO访问mysql, sqlite3 rds-json-nginx-module模块负责将数据库查询的结果以json格式提供输出 使用Nginx来操作memcache及MySQL所带来的一些性能优势:
  • 单机几千QPS常见,千兆网卡跑满!
  • (个别应用场景) MEMCACHED 不使用连接池 2W QPS,使用后14W QPS
  • Qunar网站上面的一个Ajax应用案例实测,单机7k-8k QPS
  • 比较Java+Tomcat平台与单纯使用Nginx来实现的相关性能对比 - Java: 50~60 QPS; Nginx: 700~800 QPS
Nginx直接接受表单提交的信息 - (ngx_form_input模块) Nginx非阻塞直接操作Postgre数据库 - (ng_postgre模块), 得益于libpq API对于非阻塞的实现 srcache模块 - (srcache-nginx-module) 用来对页面和数据结果进行缓存(和前面提到的memc模块有区别,这里的sr表示SubRequest) 在Nginx配置文件中嵌入Lua脚本 - (lua-nginx-module) 很快Nginx的Lua子模块中就可以使用非阻塞IO的方式来调用Nginx的子请求了 现场讲述的一个Nginx-Lua应用实例:单纯用Nginx来实现数据库集群中用户Hash的计算 所提到的应用方式已经在淘宝量子统计以及Qunar中实际应用。 (Jul 10, 2010 更新:细节修改,感谢 agentzh 及 vipcalio 的指正) 本次活动在技术上涉及的方面很多,限于个人知识水平的限制,记录如在某些方面有什么偏差和不足,欢迎大家指正。想要了解活动详情以及本次活动其它话题的朋友,可以在此查看"荷风清韵"活动的所有话题情况。同时也请关注OpenParty网站对于此次活动的总结。

糖醋鼻子:Geek的世界―OpenParty荷风清韵后记

“给我一个杠杆,我会撬起地球;给我一根火柴,我会点亮整个世界”前半句是伽前辈说的,后半句似乎是每个 Geek 的心声。 Geek,互动百科:“一般定义 Geek( 极客 ) 在一般的字典上解作一些拥为古怪性格的人。而对于早期的电脑发烧友, Geek 就是一般人对 hacker 的贬称。”但是在 openparty 上所认识的人身上,我看到的却是另一种解释。 6月的活动,正值骄阳似火,虽然还没有进入让人抓狂的伏天, T 恤也早成了大家谈论的话题,刚刚到达会场,就听到关于 openparty 主题 T 恤杀入普通人视野的消息,这无疑让每一位组织者和参与者感到高兴。 会场里,不但有很多美女前来捧场,而且还见到了老朋友 Martin ,他自从去了新加坡发展,还是第一次回来看大家,虽然只来京4天,但能够赶上我们的活动也让大家感到无比的开心。
来自搜狐的雨磊童鞋带两只可爱的小狐狸一同为大家献上了“读本好书”的话题,也让各位在互动的同时,获得了期待已久的奖品。
每次活动,都会有一些重量级嘉宾现身,这次也不例外,有《把时间当作朋友》的作者李笑来老师;淘宝的 Geek 大牛 agentzh ;当年在 Delphi 界叱咤风云如今又潜心研究 DB2 的左轻侯老师 … 而话题也越来越有 Geek 的倾向,比如冬清带来的“量天――软件助力天文物理”、淘宝 agentzh 的 nginx.conf脚本编程 … 可谓是量大质优。

李笑来-“时间管理”

Session 1 中,李笑来老师给大家带来了关于“时间管理”的话题,虽然对于程序员来说,管理coding 时间已经是每天必备工作(不要告诉我你连 coding 的时间都没法把握),但对于不正当竞争越来越激烈、计算生产力全按每周 40 小时来的公司的员工(我想是大多数),这个话题的重要性应该高于闷头 coding 。 由于拍摄任务的原因,李笑来老师的话题我只听了个大概,在后面,我选择了感兴趣的“量天――软件工程助力天文物理”和“ nginx.conf 脚本编程”。

刘冬清-量天

“量天――软件工程助力天文物理”讲述了一个属于计算机行业本职的工作,科学计算。冬清所在公司负责天文观测工作的地面应用系统开发,其工作可以用“伸手碰到天,低头摸到键盘”来形容,也真正体现了一群为科学努力发挥计算机真正意义的 Geek 们的梦想。 他们目前正在做而且正在招聘新人的项目是一个与赫歇尔望远镜有关的科学计算分析平台,这个平台使用 java 开发,是一个用于支撑科学计算用 python (主要用于天体图像的处理和分析)的 IDE ,堪比eclipse 。能够把手头的工具发挥到极致并为科学研究尽最大努力,应该是战斗在各个领域的 Geek 们不约而同的选择。

agentzh-nginx.conf 脚本编程

“当热情被点燃,手上的任何东西都能成为武器”,这也许是 Geek 世界不变的宣言, session 3里, agentzh 带来的 nginx.conf 脚本编程更是把它体现的淋漓尽致。 nginx 我想大家并不陌生,关键字也很熟悉:俄罗斯、反向代理、黑客 … 我们一般用它作为站点的前端,平衡请求负载和转向。但跟很多流行的工具、平台一样, nginx 流行的特性只是其中的某个功能,我们通常是拿它们的某一个特性来拼凑一个系统,说好听叫拿来主义,说不好听就是一知半解能用就行,而很少有人知道,你手里的工具还能用的更好――轮到 Geek 出场了。 正如前文所述, nginx 在作为网站前端的应用只是它特性的一小部分,而对于深层次的应用带给我们的还有另一片激动人心的景象。 对于 nginx 的高性能,归因于它基于线程的非阻塞访问方式, nginx 内置 CPU 时间片管理机制,而且可以让线程配合 CPU 的多核机制,让整个处理流水线不存在空转和空等,不过这个特性仅仅是一个前提, nginx 后端的业务访问同样也支持非阻塞的时候,它的高性能才能最大限度的发挥。让人高兴的是, agentzh 以及其他一些贡献者已经为传统的阻塞式应用编写了非阻塞的驱动,比如 mysql 数据库的驱动。更令人高兴的是, nginx 支持 module 扩展,那么这就意味着任何人都可以在引擎上构建自己的高性能应用。 目前,使用现有的 module,nginx可以:
  • 直接接受 form 请求;
  • 直接响应 ajax 请求;
  • 直接读取数据并返回数据;
  • 无缝连接缓存服务器;
  • 直接把数据转换成 json/xml 并返回 …
这些经常躲在后端应用服务器上的功能,如今则直接得益于 nginx 的杀手锏――高并发,相对于其它平台语言的实现,上面提到的这些功能可以将请求响应数提高上千倍, agentzh 在 topic 中最频繁出现的关键字就是“单台 X 万 QPS ”“ XX 万 QPS ”“跑满千兆网卡” … 而这一切,却并不复杂,它们都可以在 nginx.conf 中使用几行代码实现。 当然我们还可以借助 nginx 的 module 机制自己扩展应用,它不但支持原生的模块程序,还支持 lua脚本,其扩展成本远低于大多数流行的语言(即便是学习成本略高,但其带来的性能提升足以让整个预算团队振臂一呼了)。 agentzh 在 topic 中让大家着实领略到了“把工具用到极致”的实战精神,这也让我回想起了曾经想尽一切办法把第一个卡片机用到性能极限的情景,这种共鸣使之感触颇深。 Geek 的世界并不是人们在定义中描述的异次空间,而仅仅是一个有着耀眼航标和足够空间的小窝。在里面 Geek 们只是并不满足于“能用就好”“不求甚解”的现状,也直接对那些普遍存在的浪费说“不”,他们无法容忍独裁式的消沉,无法容忍官僚式的欺骗,无法容忍击鼓传花式的逃避,因为所有的原因都是那个耀眼的航标。

总结

OpenParty 正在努力成为 Geek 最忠实的朋友。 本次活动照片已上传,访问地址: http://www.flickr.com/photos/41954905@N06/sets/72157624373551000/ 也可以关注我们的新网站: http://app.beijing-open-party.org 如果你不希望自己出现在照片中,或者有其他问题(比如索取无水印版),请直接与我联系,鸡毛: zhmocean#gmail.com

特别感谢:

个人致谢: 糖醋鼻子、罗婧、 轻眉、璎珞、隋冉、 CNBorn、Wendy、 李英豪、钱安川、 Tin、李响、李剑、 刘冬清、吴斌、Chloe、 雨嘉、肖鹏、文桦、 程勇、詹老师、李笑来、 蚂蚁、李兆海、丛林、 西乔、端木、Donkey、BillyJohn、Wentrue、陶黎、杜正斌、Jason Ma、佘广、刘江、杜正彬、刘静、ChrisLo、Limo、Makestory... 社区致谢: 华章出版社 图灵教育出版社 OReilly出版社 Google中国 Matrix.org.cn OpensourceCamp JetBrains 是他们的努力和奉献, 让我们享受这一切!

活动照片:

糖醋鼻子:活动实录

活动视频:

http://v.ku6.com/playlist/index_3816209.html

活动讲稿:

http://app.beijing-open-party.org/event/2

更多活动动态

请随时访问OpenParty活动网站,或者在Twitter.com新浪微博上搜索关键字#openparty!

BeijingOpenParty2010年06月”荷风清韵”活动总结的评论

如要发表评论,请先 登录