《腾讯周小军:十个人管理1万多台 NoSQL 存储服务器的秘密》要点:
本文介绍了腾讯周小军:十个人管理1万多台 NoSQL 存储服务器的秘密,希望对您有用。如果有疑问,可以联系我们。
周小军
腾讯高级运维工程师,目前在腾讯社交网络事业部负责社交业务海量NoSQL集群运维和团队管理.曾在天涯社区任运维副总监,负责天涯整体运维.对互联网网站架构、数据中心、云计算及自动化运维等领域有深入研究和理解,积累了十多年的IT运维管理经验.希望穷尽一生来深入钻研运维领域.
腾讯目前有三大NoSQL分布式存储系统,分别是:
我们是SNG(腾讯社交网络事业部)社交网络运营部平台技术运营中心下的数据运维团队.团队主要负责CKV和Grocery二大NoSQL分布式存储集群的运营.目前团队有十几名工程师,负责一万几千台存储服务器.主要部署在深圳、天津、上海和广州等大区域.
存储服务器划分为几十个SET(仓库)集群,共有几百TB的内存和SSD存储容量,服务于QQ、朋友网、QQ空间、相册、广点通、微云、音乐等各类互联网核心业务.
NoSQL集群按SET的方式部署,SET也称之为“仓库”.一个SET是一个物理单元.仓库内至少拥有四种服务器角色:
- 接入机(代理服务器)
- 存储机(主机+备机)
- 仓库管理机
- 搬迁机器
每个SET可部署为跨机架、跨IDC、跨城容灾.一个SET就是一个永不停服、永不丢数据的独立的,标准化的服务单元,类似于标准化集装箱.我们最大的SET机器部署数量不会超过上千台,超大的SET会加大管理成本.
在腾讯的海量服务运营模型中,SET是一个非常重要的概念.接入层、逻辑层和数据层均按SET单元化来部署.一个业务譬如QQ音乐可能接入层和逻辑层各有十几个SET,数据层有几个SET.SET分别部署到不同的区域.每个SET都能容纳一定数量的在线用户(譬如500万在线用户).
天津大爆炸2亿用户跨省大调度
8月12日发生在天津的特大爆炸事故中,腾讯天津数据中心距爆炸现场才1-2公里.当时天津数据中心高危,现场数名工程师受伤,市电随时可能中断,柴电只能支持不到一天.8月13日我们启动了大调度,把天津所容纳的二亿多华北活跃用户全部调度回深圳和上海.调度过程QQ用户无感知(从那几天IT业界的新闻来看,外界对这一大事件毫无知晓).
这应该是中国互联网史上最大规模的一次调度.调度的成功受益于SET化的管理,受益于数据SET的三地同步.
业务数据按仓库为单元,在全国各地IDC部署几个异地仓库,通过数据流水来实现各异地仓库间数据同步和一致性保证.当某一城市的IDC灾难性故障时,业务能迅速切到其他城市IDC恢复数据的读写,实现业务柔性可用,保证业务服务的持续性.数据的同步由同步中心负责,业务写入同步中心,由各地的仓库同步服务,从同步中心中读取数据,并写入本地仓库.
经过几年的不断打磨及优化,我们NoSQL分布式集群的架构已经非常的成熟,主要有以下几个特点:
数据中心由计算、存储、传输三大要素构成,IaaS服务提出了把传统数据中心的CPU,内存,网络和存储等转变为资源的目标,为业务提供计算资源的池化及智能调度管理.对于数据层我们的目标则是DaaS,把数据做为服务提供给用户.
我们的分布式数据库把存储资源池化,把内存存储块及磁盘存储块做为资源,放在一个存储大池子里按照较固定的存储单元进行管理,并在其之上部署存储智能调度系统.
因此,我们的上万台存储服务器已经是真正意义上,具备动态伸缩能力的分布式数据库:
我们的数据管理集中化,在数据复杂度以及数据量不断增长的情况下,数据运维能够支撑多变的业务需求.
在DaaS中,我们已经落地实施了以下几点:
上万台存储集群的成本优化是运营中比较核心的目标之一,我们在成本上的措施主要为:
研发和DBA的关系就如同一辆车,我们造好一辆车,写好说明手册,而DBA则负责调教和维护这辆车,让它能发挥最高的性能,坐得最舒服
—MySQL研发团队成员赖铮
的确,我们运营团队也是类似,与研发团队一起把原始的数据库引擎打磨得更易于运维、性能更高及对业务更多的特性支持,发挥工匠精神,不断在成本、安全、质量和效率上追求极致.
除了研发团队,运维团队本身也是开发&运维相结合的团队,团队内有开发和运维二种角色:
开发工程师:负责持续集成环境、流程引擎、接口、代码审核等工作.
运维工程师:负责上到产品经理,下到任务粒度级的开发等职责.
运维强大的工具平台具备了功能丰富的API接口,譬如身份验证、流程引擎、CMDB接口、监控接口、日志上报、包安装接口等功能,极大地提高了运维工程师工具开发效率.
转载请注明本页网址:
http://www.vephp.com/jiaocheng/4372.html