编者按:由InfoQ主办的全球架构师峰会将于2012年8月10日-12日在深圳举行,为了更好地诠释架构的意义、方法和实践,InfoQ中文站近期会集中发布一批与架构相关的文章,本篇即为其中之一。InfoQ也欢迎读者亲身参与到本次全球架构师峰会中,与来自国内外的顶尖架构师进行面对面的交流。报名参会请点击这里。
张松国,现任腾讯微博事业部技术总监,负责腾讯微博技术工作。曾任腾讯系统架构部架构师和腾讯网技术总监。主要工作领域:互联网海量系统技术架构设计和系统运营,互联网产品设计。他在ArchSummit分享的主题为“腾讯微博架构的成长过程”,主要内容是:腾讯微博业务高速发展,2年发展4亿用户,同时对服务质量的要求比以往业务更高,对技术架构形成巨大压力。本次演讲分享腾讯微博的技术架构,讲解如何应对海量业务的高速发展和高服务质量挑战。
InfoQ:能否介绍下您自己,还有您在架构方面的工作经验?
张松国:2005年进入腾讯,先后从事腾讯网建设,以及腾讯微博建设。主要架构经验:互联网海量用户网站应用的架构设计,运维系统架构设计等等。
InfoQ:腾讯云平台事业部总经理陈磊说:腾讯内部的系统架构都是以持续运营方式在不断演进的,请问腾讯微博在“持续运营”方面是如何做到的?
张松国:微博的架构从诞生起就在不断快速演进,每周都会有更新上线。体现在这几个方面:功能方面持续优化和增加;用户体验方面不断改进优化;用户高速增长,因此存储,性能要随之改变和调整,还有系统可靠性也是一个长期逐步完善的过程。这些优化需求的来源是公司内部、产品策划、用户反馈、数据监控等等。
InfoQ:回头看看腾讯微博架构的发展,是不是存在一些关键的时间点?为什么是这些时间点?
张松国:从架构上看,演进大概可以分成这几个阶段: 1. 10年5月前,功能实现阶段,这个阶段主要是实现功能和一些基本的安全设施,达到系统上线的基本要求。 2. 10年5月到11年6月 性能调优阶段。这段时间主要对用户体验性能进行调优。以及实现容错能力。还有就是用户高速增长,系统也进行局部重构来支撑规模的增长。 3. 11年6月后容灾系统搭建。这个阶段开始有时间对系统的稳定性进行专项改进。主要是实现多IDC、异地容灾能力。以及优化架构,提高开发效率,和加强数据挖掘。
InfoQ:在一开始做架构选型时,您觉得当时哪些决策现在看是正确的,哪些存在问题?为什么?
张松国:由于有腾讯其它系统的设计经验,微博一开始起点较高,基本架构设计到现在没有大的改动。好的地方有:1参考了其它系统架构经验以及应用了公司和业界的成熟的组件和系统;2 上线后快速的性能调优赢取了不错的体验和口碑;3对容灾容错的重视,到现在腾讯微博可以说是业界最稳定的微博系统。 有些方面可以改进:刚开始的架构在协议设计和耦合设计方面对开发效率的支持不够好,开发效率略低,到11年底才开始改进;对业界成熟开源系统的应用方面还可以加强一些。
InfoQ:在存在人员规模和架构复杂度增加这样的矛盾时,腾讯微博是怎么做的?
张松国:微博上线后,很快成长为一个庞大的系统。2年内增长到4亿用户,同时功能也快速增加。对系统架构挑战很大,需要架构的不断演进来支撑变化。另外腾讯微博采用一些架构方法减缓矛盾:1.采用可平行扩容的设计,尽量减少因为用户规模增长带来的架构变化。2.采用平台化设计和消息中转系统进行系统解耦,解决系统复杂性问题。3.应用成熟的组件和公司内部系统,可以提高开发效率和运营质量。
InfoQ:腾讯微博现在使用的后台数据库,是腾讯自行研发的NoSQL数据库么?相对于业界其他NoSQL数据库,有哪些特点?
张松国:微博使用的后台数据库主要两大类,一是自研的NoSQL数据库,二是集中托管的MySQL。消息和索引是存在NoSQL数据库上的。微博自研的数据库最大特点是基于SSD设计。因为微博数据小,而读量又很大,所以比较适合SSD存储。另外它是一个自动容灾的多IDC分布数据库。