SDCC 2012 见闻感受

周末有幸参加了 SDCC 大会,基本"有用"比"无用" 一半一半吧。

第一天上午,没啥特别的,有点兴趣是腾迅的孙国政讲的《超大规模用户数据挖掘和推荐算法最新进展》,看题目以为讲的是腾讯自己目前数据挖据挖掘的进展,后来听着才发现,基本就是在介绍 KDD 大会。然后这个过程中有个比赛,叫 KDD CUP,有两个题目,track 1 倒是蛮有意思的,题目就是预测某个用户可能会 fo 哪些用户,就是做个推荐列表,推荐你感兴趣的人,去让你 folllow。很明显,twitter 也有这个,不过做的不是很好,推荐的推友我大多没啥兴趣,不过这是一年的情况,现在则改善了好多 :D
比赛这个东西大陆人最在行了,最后的获胜队伍也基本都是来自大陆。不够这题目起的太水了,两个 track 的数据量都不到 10G,这也算是大规模,还加了个超字?g 了下孙国政的一些背景,中科大 65 级校友,算起来估计有 6、70 岁了,真是老码农一枚了。

AMD 的那个基本是广告贴,不过深深的刺激我要联系英文听力的决心 -.-  电信的啥勃士基本就是在讲笑话让大家娱乐娱乐。

上午的至此结束,下午的含金量相对较高。由于每个人只有半小时,因此讲的都不是很详细,“泛泛而谈”,不过有个思路,开阔下眼界已经足够了。

先是讲腾讯的开放平台有多开放,里面很多技术都是换汤不换药,比如有个叫啥 TGW(tencent gateway) 的玩意儿,我理解就是个比较高级的防火墙,先在防火墙帮你把 TCP 建立起来,然后做转发,然后通过 OSPF 扩展。包括流量的自动切换等问题,这个貌似大公司都能实现了。

接下来是整个下午我觉得讲的最棒的一场,Twitter 来的中国籍工程师 @thinkingfish。气场十分的足,语速语调啥的配合的也是相当的好。介绍了 Twitter 的实时系统平台,官网竟然没找到报道,怕和谐?从 09 年讲起,流量大了,业务大了,从啥都挤在一台机器到模块化的思想,从 Ruby 切换到了 JVM 等等。后面主要还是介绍了 Twitter 开源的一些项目,包括 iago,好奇的是,竟然没有介绍那个现在看到就想吐的 bootstrap。在幻灯片的最后还看到了 Twitter 内部貌似在使用 chukwa 收集处理日志(?)

Appcelerator 的也在大大打广告,没听懂讲的是啥,也没啥兴趣,略过了。

Netflix 的是一个中国的工程师来演讲的,话说 Netflix 也真够胆子大的,敢把所有的业务都放在 aws 上,佩服佩服,我只能祝福他哪天 aws 的 dc 不全挂了。其中提及了 Netflix 比较著名的开源项目,专门用来做破坏性测试的 Chaos Monkey。另外他们的自动化做的也比较棒,他们做的一套叫 asgard 的东西只要点点就能很快的建立一个符合需求的 AMI,当然,这个貌似只能应用于 AWS。其公司的文化跟大陆确实不是很相同,我觉得,要实行他们的这套体系,前提是,充分相信每一位工程师有高度自制力,以及很强的技术实力。

最后一个是 alipay,讲了三年双十一的技术演变,很多方面确实跟 Twitter 很类似。他们考虑到的扩展比较的全面,小到 db 的扩展,大到 IDC 的扩展。db 的话,从最原始的拆分为多个,然后就是垂直,水平复制等。网络的话,主要是 LB 这一块的扩展,把流量分担到各个 IDC 的不同的 LB 上进行处理。IDC 扩展,就存在跨机房的问题,这个是每个公司从小发展到大的必经之路,除非你用 cloud。
然后就是整个系统最重要的一部分,监控,这个明显是发现的越早、处理的越早越好。alipay 目前由日志模型、计算模型和监控报表三部分组成,offline 的基本是放在 HDFS 里面,online 的原先是 Oracle,现在正逐步切换到 MySQL 或者更为可靠的 DB 上去。把这些监控抽象出来,做成 API,供上层的调用。
在这过程中提到了去 IOE 的事情,政治层面的就不谈了,说点实在的,被绑架在一家专利供应商的滋味肯定不好受,一旦用了他们家的服务,想出来就不是那么容易了。另外,由于这中间是个黑盒,出了比较严重的问题,只能干巴巴的求对方的工程师过来解决问题了。即使要用,最好也要使用两家或者以上的服务,固定一家结果肯定比较悲剧。上面这段话是我自己的感想,不单单适用于 IOE,同样适用于目前的 cloud、IDC、CDN 等业务。

圆桌讨论有个问题比较有意思,关于云计算的适用场景问题,现在只要是一个人都在炒云集算(炒你妹!),胡喜同学很直接了当的表明了自己的观点,不是很鸟这玩意儿,支付宝明显是不能放在云这么一个不透明的东西里。我觉得如果想自己掌握更多的权利,还是租用、自建 IDC 好,云对一些 startup 或者一些前景不明的业务使用效果可能会更好。zynga 目前也在减少对 amazon 的依赖,开始逐步的转向传统的 IDC,为啥,聪明人都明白。

第一天至此结束。

第二天上午首先是 Twitter 昨天的那个 mm 介绍 Twitter 开源的基于 Memcache v.1.4.4 版本的 twemcache,为啥不直接把新特性加到 memcache 里面,而要新立门户了?要么就是 memcache 不鸟她?

接下来皓叔讲的《高并发互联网应用优化实践》,全场爆满,很有个性的一个大叔级人物了,其个性可以从 about 中获得。演讲的内容主要来自他的这篇博客,讲的很多东西都是经验之谈了,那么多年的工作经验在那儿。这个得慢慢消化。

下午比较有意思的是 amazon 工程师讲的 《构建大型软件企业的自动化部署》,提到的观念很好,感同身受。之前国内外鼓吹的 devops 在某种程度上就是扯蛋,让运维进行一定程度的开发还可以接收,这种开发无非是开发一些更好用的工具来促进运维;但是让开发做运维就纯扯蛋了,我的经验是让一群连网关都搞不清是啥的人上线去做操作,简直就是噩梦,之前就有遇到而且不止一个写代码的在生产系统中直接执行了 apt-get upgrade。而任发科的观点是,我们需要进一步的做出更好、更实用、更傻瓜的工具让开发来用,开发要做的只是在网页上点一点,这样是不是能比较好的解决开发运维之间的一些矛盾关系了?还有一点,不管是开发还是运维,都需要足够的懒惰,这样才能做出更加牛逼的工具,之前不是有篇文章介绍说 fb 内务的工具文化么,主意就是说,让优秀的工程师来开发出更加好的工具,这不仅仅是工作效率的提升。另外还有个问题,监控,很多人以为系统出现了故障,通知到的人越多越好,实际情况并不是这样,人越多,造成的直接原因就是 N 个和尚挑水没水喝,出现了问题,大家都相互依赖,心想还有其他人也收到报警了,让他们去解决吧,这造成的问题就是,最后没有一个人去处理该故障!因此我理解的是一个故障,或者说跟这个故障相连的业务先最多发送 3 人就够了,一个是该业务的一线负责人,一个是负责该业务的运维人员,还有一个灵活分配就可以了。

阿里云的那个啥盘古,就听到了多 master、采用 Paxos 协议,貌似是个很牛逼的协议(?)。演讲的水平就不发表评论了,这也说明了一个道理,一个人的演讲水平不是天生的,是需要练习的。

蒋清野做的关于云平台的比较,幻灯片跟这个很类似。里面提到一些方法、工具不仅仅适用于云平台。包括像 byte-unixbench, mbw, iozone, iperf, pgbench 等工具都是可以随手拿来使用的。最终的结论是,国外的平台都不特别靠谱,这里拿的是 hpcloud 举例,大陆的就更别谈了。

整体来说,两天还是见识到了些东西,70 分。

最后感谢某 cdn 提供的门票。