2011北京QCon全球企业开发大会演讲点评-day1
早上是三场专题演讲,分别是Facebook的《支撑Facebook消息处理的HBase存储系统》,Oracle的《Java EE 7平台:走进云计算》以及《在实践中实现企业的敏捷性》
Facebook的Nicolas在演讲时演示了在中国打开Facebook.com是什么样的,当然结果是引得大家大笑,不过这也引起了一个引人深思的问题,那就是许多与会者会由于墙的原因根本无法访问这个全球最大的SNS网站,即使通过某些手段上了Facebook,也没有条件在Facebook中添加足够多的现实中的朋友,形成关系链,以至于体会不了Facebook中的几个特别强大的功能及其优势,例如Facebook的Messaging System,Face Recognition等。而在这种情况下,从使用者的角度会让人感觉到Facebook.com“也不过如此”,从而导致对Facebook的印象没有像校内,开心那么好。其实从我的角度来说,由于在以前的工作中认识了很多外国的同事和朋友,所以我也算是一个中度的Facebook使用者,对其技术以及一些新的功能还是深有体会的。
就拿本次Nicolas所演讲的HBase系统来说,Facebook使用其作为Messaging System的主要载体,每天数据存储量能够达到几十亿条,而HBase在Facebook的应用中也覆盖了包括Cache,数据分析,数据存储这三个不同的领域,有Facebook这样的老大哥带头,无疑是给我们中国的这些社交网站指出了一条技术上的发展方向,也显示出了Facebook技术团队与我们与会的许多中国网站包括虎扑网所不同的地方。当百姓网、新浪微博、淘宝等兄弟还在研究在纠结怎么优化MySQL性能的时候,国外的SNS抗巴子脸书哥儿早调转枪头了。
上午第二个专题演讲则是由Oracle的Lee Chuk Munn所带来的Javaee 7介绍,我在两年前用javaee开发过CRM和电子商城系统,回忆当时,在做开发和部署时总是会遇到包不兼容的问题,当时业界也没有很好的解决方案,索性大家最后都养成了自带专用jar包的习惯,也算是曲线克服了这个问题。而在这次关于javaee7的演讲中则着重介绍了javaee7的包管理功能,在包管理特性的演示中甚至出现了把jar包打包成一个deb/msi的官方打包工具,在其他特性上,javaee7也将会支持例如json,NIO v2,HTML5的websocket等功能。虽然看着打Oracle牌子的Java不太习惯,不过不得不承认被Oracle吃了的Sun并没有因为并购而停止脚步,反而种种迹象表明Java将会更加拥抱社区。
上午第三个专题演讲则是David为我们带来的在企业中实施敏捷的一些经验,我查阅过David的资料,也通过演讲了解到他在敏捷领域的丰富经验。他为我们带来的演讲也是非常精彩,David谈到了在企业实施敏捷的过程中不应该去遵循一个“流程”,而是应该根据每个团队自身的特点去实施不同的流程,Scrum Master的目标也是用每个团队成员都能理解的方式去引导大家往一个正确的目标前进,而不是提出一些高深的没人明白的规则让团队去执行。反观我这几年实施敏捷的经验,以前也往往遇到在实施敏捷几个月后,发现团队会有往听从命令做事这个方向上靠拢的倾向,而不会再去做自我改进和improve,以至于丢失了“我们=团队”这个最基本的概念。虎扑目前还在开发人员扩张的阶段,将来如果要实施敏捷我相信会是一个比较顺利的过程,毕竟有那么多经验和极具团队精神的开发团队在这里,而且不得不赞叹一下,虎扑的团队很团结也很有活力,怪不得外人会评论我们虎扑说“做体育的心肠都不坏”。
中午吃饭人很多,抱怨一下,京仪大酒店是 4星还是5星的酒店?档次应该不低了,午餐提供的果汁竟然是用糖浆和果位剂调出来的,完全没水果,全是色素和甜味剂,各位尽量少吃。
吃完回房间充个电上个网,然后下楼继续参加下午的会议,由于下午的知名网站案例分会场比较吸引人,所以我下午就一直在大会场听这些案例,错过了其他精彩的演讲,各位看看有没有其他人分享这些内容吧。
下午第一场是由百姓网的潘晓良所演讲的《为速度而生——百姓网如何优化网速》,对于能认为“速度是网站最重要的功能之一”的百姓网来说,百姓甚至撤下了Google的广告条,在百姓网通过优化网站速度从而提高用户体验这点上我是很佩服的。可是需要从一个更高角度去看待这个问题的时候,我不禁地想问:真的需要为了速度把广告都撤下么?毕竟网站收入很大的一块在于广告收入,而且google的广告也会针对百姓网这种类型的网站匹配出适合用户的内容,也不全是垃圾广告和“高朋网”吧,适当的放一些广告,为用户提供合适的站外信息来源,对于用户来说也是有利的啊?这种自我断臂的举措换取速度上的提升是否有些偏执了?
而潘先生在提到百姓的监控系统时,例举了百姓网正在使用的监控方案,不过很可惜的是百姓网至今还在使用Google Analysis这种对用户影响很大的侵入式监控方案,百姓网有没有考虑过实施基于日志的分析,从而把被ga所占用的时间还给用户?真的需要拿用户浏览器版本等js才能获取的信息的时候,也可以做抽样嘛,百姓网的用户访问量和用户基数那么大,取百分之一的样本也不至于影响总的数据。百姓网的榜样craigslist也没有用ga。顺便说一下,百姓的html代码都没有经过最小化处理,很多空格和换行是可以去掉的,这样还能节省一部分流量,虽然量不是很大。不过看在实施起来并不复杂的角度上,潘先生还是可以考虑一下的,对于手机用户这些流量敏感用户来说,0.1k也是肉。
潘先生还提到了百姓网目前遇到的一些问题,例如多机房数据不同步,数据延迟导致一致性无法保证,其实这个问题在所有采用分布式架构的互联网公司中都会碰到。为了解决网络延迟,业界有多种解决方案,例如硬件上比较有效的是在数据中心之间部署VPN加速设备,其原理是这些硬件设备会将TCP包打成UDP,然后用特殊的加密和压缩方式达到高效传输数据的目的。而软件上,则可以使用在多个机房部署消息队列的方案,数据直接走消息队列,或者数据走replication,清cache以及其他操作走消息队列两种方案,具体哪种取决于你们不同的应用和需求。当然在这点上还是facebook最牛逼,直接改了MySQL的SQL语法验证规则,把需要删除的cache的key放在sql里通过replication的同步功能直接送到节点上去。感谈一下脸书哥,你又把我们甩在了后面。
下午第二场是新浪微博的《构建高性能的微博系统——再谈新浪微博架构》,感觉杨先生此次演讲就是给redis和protobuf做广告的,一些微薄界很头疼的问题例如某些用户following太多,新浪微博竟然用业务手段给解决了:新浪微博限制了最多follow 2000人的限制。通过业务手段解决技术问题也不愧为一种很实用的解决问题的思路,相信这个解决方案在隔壁的《投资家CLUB》里应该会作为经典案例得到表扬,可这是在QCon啊,产品经理不会来的啊,被需求逼着的程序员你伤不起啊。杨先生也谈到Redis,Redis确实是个好东西,在包括虎扑在内的很多互联网公司中都已经得到了广泛的应用。之后杨先生提到了google的protobuf协议,在夸了一顿protobuf,然后举了诸如3-5k的json,转成xml要10k,转成protobuf只要500字节之类的案例之后,感觉还是有必要在虎扑内部架构之间的数据传输上推广这种新的数据格式的,让我回到虎扑后先研究一下到底有没有那么神。
下午第三场是由天涯论坛带来的技术进化史,天涯目前的架构很杂,前端是均衡和四层交换机F5,中间是Haproxy和Varnish,App用到了IIS+asp,Resion+JSP,ICE,PHP等技术提供不同的服务,后端则是Memcache和Redis为缓存,MySQL为数据仓库的数据库集群。相信天涯目前这个格局也是经过了无数批人前仆后继的不断改版,重构所导致的,技术团队也至少换了3批人。如此混乱的技术架构抛开维护性不谈,无论是开发速度还是与前后端服务的兼容性都是能折腾死人的,想想为asp,jsp,php都装上memcached支持就能让天涯的系统工程师郁闷半天(如果他们在asp,jsp,php里都用memcached的话)。而天涯技术上唯一的亮点则是其自主开发的memlink缓存服务,具体是个什么东西林先生也没透露太多,不过从名字应该可以猜出来是类似于支持链表之类的数据格式的类Redis缓存数据库吧,本来我本来还期待天涯和Google合作后会有一些技术上的亮点能够展示给我们的,可惜一点都没有,不知道是天涯和Google之间有保密协议还是⋯⋯。
最后王建科介绍了天涯将来的发展规划,提到了云,Saas,PaaS,IaaS,虚拟化,动态架构之类的,我觉得这个就太虚了,骗骗投资人钱还行,大家搞技术的看过就算了。
最后一场是淘宝给我们带来的《淘宝商品库优化实践解析》,淘宝商品库是淘宝最核心的数据库,没了商品的淘宝还能叫淘宝么?这个数据库的性能高低直接影响各位亲们做生意的心情,淘宝能不重视么。来自淘宝的余锋向我们展示了淘宝数据库团队优化MySQL的整个过程,通过从MySQL本身,到操作系统,网络,硬件等等多个方面,淘宝数据库团队将MySQL数据库的单机性能从原有的10000 QPS提高到了34000QPS,实在是太强了。
不过林先生所分享的优化案例也实在是太过于Geek和具有限制性,好像一群汽车改装狂人在研究如何改装才能将一辆摩托的速度提高到极致--最后的结果竟然是往摩托车上装喷气发动机。淘宝的优化经历很经典,对于广大MySQL DBA来说具有参考性,可惜的是对于广大互联网公司来说却并不具有操作性,毕竟不是所有公司都有像淘宝这样的极端案例可供研究,也没有这么多精力放在为了提高1000QPS而改MySQL源码这样的事情上。从优化数据库这个角度来说,包括虎扑之内的公司,倒是可以尝试去思考如何使用硬件来解决这个性能问题,极端情况就如我在演讲后提问环节中提到的Fusionio硬盘,它可以在普通MySQL服务器上提供100000的QPS,但是价格也是很吓人,具体数字请直接联系在场的fusionio代理,好像是个女的,有机会认识一下?回到正题上来,对于一般互联网公司来说,在普通情况下还是研究如何部署SSD硬盘吧,虎扑目前正在实施对数据库进行SSD硬盘升级,初步测试下来性能提升很大,价格不贵,操作起来也很简单,具备可行性,如果有机会的话可以向各位做个介绍。
最后插一个小广告吧,虎扑中国(hoopchina.com)是中国排名第一的体育综合门户网站,目前正在招聘PHP开发工程师,MySQL DBA这两个职位,工作地点在上海,有意者请发简历至:hr_engineer@hoopchina.com,谢谢
2011年04月08日 20:07
fb 主站主要用的mysql 加fusion io hb性能是不如mysql的,什么优化也不如业务优化,铁则
2011年04月09日 00:27
好像FUSION-IO的价格没有那么吓人呢。 淘宝使用的不会超过5万人民币。 新浪也在使用, 在不用调优的情况下, 可以达到单机QPS=10,000.
2011年04月09日 03:08
Google Analytics可以在页面加载完之后再执行,对页面加载速度影响应该很小,相反Google Adsense由于某些众知的原因,对网站的访问速度影响非常大。
2011年04月09日 03:51
FB 目前所有的生产机器都是带IODRIVE的。 采用FLASHCACHE的主要目的是在高性能的基础上,节省成本。 这样在有热点的情况下, 可以用FLASH的机制,不需要把所有的现金都投资到FLASH上, 而是采用混合存储的方式。 H-BASE也在使用IODRIVE。
2011年04月09日 04:16
同意,当然对于类似虎扑这样的门户网站,这种速度影响是可以接受的,不过我们谈论的对象是希望把速度优化做到极致的百姓网,况且在中国还不能忘了ie6的问题,所以我认为没有绝对必需的要求去采集用户数据的话,尽量避免使用ga,再说ga的统计也是不准的,在我以前为中国电信做广告投放系统时,我曾经为了验证ga的误差数做过许多研究,最精确的基于服务端的统计出来的数字和ga提供的数字就pv来说,ga只能上报70%-80%的流量。
2011年04月09日 04:17
您是fusionio公司的?我们认识一下吧?以后可能有业务合作需求。