【运维专家大讲堂】腾讯资深运维专家周小军:QQ与微信架构的惊天
《【运维专家大讲堂】腾讯资深运维专家周小军:QQ与微信架构的惊天秘密》要点: 社交领域一直是互联网创业的大热门,从PC到移动端,从OICQ、MSN到QQ.到了移动互联网时代,社交领域应用开始彻底爆发,直奔黄金期.腾讯在过去几年里,社交平台更是火到爆,QQ和微信坐拥几亿的粉丝,QQ空间和朋友圈各种刷屏,写心得,晒照片,秀视频,那么谁来为企鹅保驾护航呢?支撑QQ和微信海量数据背后的架构又有哪些惊天内幕呢?本期大讲堂的内容来自今年2月份ChinaUnix对腾讯社交网络运营服务中心资深数据运维专家周小军的专访.本期访谈将从运维的视角,为我们揭晓腾讯社交产品前端到后端的故事. Q1:?您好,很高兴有机会采访到您,我了解到您,您在天涯腾讯拥有非常丰富的运维工作经验了,能否介绍下自己?分享下自己工作中的苦与乐? A1:?我叫周小军,目前就职于腾讯社交网络平台技术运营中心,负责社交产品分布式存储的运维及团队管理工作. 我在运维领域工作了十多年,算是一个运维老兵.刚毕业时我进入国寿当系统管理员,负责系统和业务运维,也做过业务系统开发.较早接触了SCO Unix操作系统和Informix数据库,还做了一些业务系统开发.后来感觉在国企没有技术,没技术挑战,技术部门也不是国企的核心,于是工作一段时间后离开了国寿. 到了2002年,我进入天涯社区,主要负责网站运维.在天涯的职业生涯中,我从运维主管做到了云计算副总监,在此期间组建起了一支精锐的运维队伍,包括系统、网络、数据库、安全和运维开发等运维小团队. 随着越来越多的网友涌向天涯社区,天涯流量开始突飞猛进了,我不断推进网站的架构演进,从初始的二层架构发展到包括GSLB、LVS、Haproxy、Squid、应用WEB、数据缓存及数据库等多层可扩展的架构,从ASP/MSSQL/Windows平台迁移到JSP/MySQL/Linux开源平台,从脚本化运维进化到了工具化运维,我们建设了一套包括资源管理、监控、告警、配置管理、自动部署等服务在内的运维管理系统,探索了虚拟化技术的实践,保证了天涯从最初的日百万PV演进到日亿级PV架构. 有句话说得好,叫摸着石头过河.在天涯十多年的运维工作中,我们也踩到了许多大坑:比如被几倍出口的DDOS打了几小时、服务器被入侵、域名被劫持、数据中心断电、天涯拖库、谷歌出走等大事件,还有许多员工犯下的人为致命错误.回过头来看,当初踩坑多了,心理反倒变得极其强大,遇到大故障已如钢丝一般冷静,在反思总结教训的基础上不断提升自己的运维能力. 回顾我在天涯的时光里,遇到技术上最大的困难是双平台并运行的问题,天涯从Windows迁移到Linux过程中,由于架构复杂、产品繁多、技术资源投入不足,整个迁移过程持续了数年.在这个过程中,运维团队不得不在双平台上投入大量精力,比如开发运维工具要在Linux写一套Python,在Windows上写一套C#,运维精力很难兼顾.现在反思,有几点经验,希望做运维的伙伴们能够共勉,做系统重构时必须要有坚定的目标,强有力的一把手决策,投入精兵强将小分队,正确的说服老板,敢于血战,经受短时间的剧烈阵痛. 2012年我进入腾讯负责社交产品分布式存储运维,这里是亚洲最大的分布式存储集群,上万台内存和磁盘存储服务器分布在全国几个区域的存储仓库内.每秒有几千万的数据读写请求,服务于QQ、空间、腾讯云、相册和广点通等海量业务. 与此同时,腾讯业务的海量数据给我们运维人员带来了很大的挑战,这些挑战都是我们未曾经历过的.我们不断采用创新性的方法来解决这些难题,在存储运维上开辟新的思路,不断从效率、成本、质量和安全四个维度力求做得更专更精,不断追求更卓越,非常给力地支持了业务的高速发展. Q2: 腾讯在过去的几年里,社交平台火到爆,QQ和微信都已经拥有了几亿的粉丝,那么如何应对QQ空间海量用户上传图片、上传视频、上传文字等高并发负载? A2: 针对文字、图片和视频的不同应用场景,我们提供了不同的存储解决方案.其中有面向数据的NoSQL分布式存储和关系数据库,也有面向图片的图片存储平台,还有面向视频的文件存储平台. 不同的存储系统各有特点,NoSQL存储注重高性能、低延迟和高可用,图片和文件存储量更注重低成本和数据安全. 腾讯NoSQL存储由腾讯内部研发团队开发,现在有基于内存和SSD二级存储的CKV(Cloud Key-Value)、Grocery和Quorum_KV,有基于SSD存储介质的TSSD等. CKV主要服务于空间、相册、腾讯云等互联网业务,Grocery主要服务于QQ即通业务,Quorum_KV主要服务于微信消息业务. 经过精心设计的存储单机性能可以达到每秒十几万次的读写,完全可以应对高并发负载.比如CKV的内存存储采取了以下的设计思想以支持高并发能力: Q3: 八年前,腾讯就开始在社交产品中应用到了NoSQL数据库了,大家可以通过微信朋友圈或者QQ空间轻松自由地分享视频、文字、音频、图片等,那么微信与QQ在架构上究竟有哪些相似点与不同点呢? Quorum_KV通过Quorum协议实现双向可写功能,一个最小的存储单元由二台存储机和一台仲裁机组成,写存储机时经过仲裁决定被写的机器. 写数据时直接写内存的Memtable表.Memtable写满后转换成Immutable.Immutable定期Dump到本地磁盘变成数据文件,数据文件不断递增形成不同level级别数据文件,不同level级别的数据文件会定期合并. 内存表使用Skiplist来做内存的Key索引. 再来谈谈QQ,它使用的NoSQL存储名称为Grocery,属于最终一致性,持久化KV分布式存储,支持Key-value和Key-key-Row数据结构. (编辑:ASP站长网) |