【IT168 评论】1999年,有一只萌企鹅破壳出世,如今邻家有鹅初长成,据QQ大数据报告显示,目前QQ有8亿多用户,其中90后“移动互联网原住民”超过50%。在这18年间,QQ创造了太多全民狂欢的记忆:2005年,QQ空间正式发行,用户可以在空间中听音乐、写心情;而在今年空间的日活跃用户峰值超过3.5亿,无疑成为社交网络应用中的大块头。2009年《QQ农场》上线时,瞬时引爆了全民“偷菜”的热潮......
最新数据显示,QQ最高同时在线数达到2.5亿,QQ 空间月活跃账户数也超过 6 亿。面对如此巨大的用户基数和访问频次,腾讯社交网络是如何做存储的呢?本次采访我们邀请到了腾讯社交网络运营部平台技术运营中心的王懂道,让他来和我们分享一下腾讯社交网络海量存储集群的运维和优化。
四度变迁,腾讯社交网络数据库有哪些门道儿
从初出茅庐到科技巨头,这18年间腾讯的业务不断发展壮大,社交网络的存储类型也在不断变更升级,王懂道认为腾讯数据存储的进阶之路大致可以分为四个阶段。
第一阶段是单机MySQL,这也是腾讯社交网络最早的存储,其在容灾、可用性和服务性能方面都很欠缺,2009年腾讯农牧场业务爆发,数据库成为了腾讯业务发展的瓶颈。为了打破存储瓶颈,腾讯自研了TTC(内存cache+MySQL)的缓存服务器,将MySQL表数据缓存到内存中(也可以全内存访问无需落盘),提供高速、高并发的访问能力,支撑了第一代的社交游戏产品。
2010年为了实现高效运维、提高服务可用性,腾讯实现了以MySQL为基础的CDB关系型存储集群,据悉这也是目前腾讯社交网络最常用的关系数据库集群,我们常用的QQ秀和黄钻用户信息都存储在此。
随着互联网高速发展,尤其是社交应用的爆发式增长,传统的关系数据库的性能无法满足业务需求。腾讯2010年自研了CMEM纯内存高性能NoSQL存储集群,每秒高达数百万的访问量;CMEM兼容memcached,实现了数据持久化、主备容灾自动切换和快速弹性扩展能力;另外,同期也自研了基于SSD的NoSQL存储集群TSSD,存放数据量庞大但是访问量不高的数据。
2013年可以说是腾讯的成本元年,在内存存储成本不断膨胀,但又要保证访问质量的背景下,腾讯实现了CKV(CMEM+TSSD)二级NoSQL存储模型。分层存储更符合社交业务的特性,随着业务生命周期的演变,数据会逐渐变冷,所以可以将热数据保留在CMEM的内存中,冷数据自动下沉到TSSD,且冷热数据随着用户自身的访问行为自动上升和下沉,释放了数千台的内存服务器。
三大方向,数据库的未来发展可期
据DB-Engines 2017年三月的最新统计,商业数据库与开源数据库的数量均为161,双方数量持平,从普及度来看,双方的差距也在拉近,其中开源数据库占比为53.7%,商业数据库占比为46.3%。就流行趋势来看,开源数据库自2013年以来一路看涨,2017年以从35%上升到46%。
开源数据库的市场份额不断扩大,“商业数据库已死”的声音渐起。对此,王懂道认为开源数据库的份额越来越高说明大家在数据库的跟进学习上加大了投入,这其实是好事情,能加快数据库的发展,而且也涌现了许多优秀的可提供稳定数据服务的产品,如陪伴互联网一起成长的MySQL,memcached,Redis,MongoDB还有Hbase等等。选择开源数据库要注意是否有社区在持续投入更新,避免使用更新迭代较慢、稳定性不足的开源产品,毕竟很多开源产品需要长时间的实践验证和持续人力投入优化。而商业数据库的中小企业市场虽然在萎缩,但凭借其高可靠高可用,稳定性强的特点,适合许多传统大型行业(如银行,政务等高机密,高安全性的企业)量身定做服务,其背后有一流的公司给商业数据库提供支持和服务,也具备很强的诱惑力。所以从市场的需求来看,商业数据库和开源数据库都存在很大的发展空间。
数据库一直是IT界比较活跃的技术,王懂道认为未来数据库的发展会呈现以下三种趋势:
·企业会选择服务上云,依赖云厂商的数据库服务;廉价、安全、高效的存储服务将会不断涌现。
·持续高可用是将来特别重要的一个方向,特别是业界近期因为数据库异常导致数据丢失、服务不可用的问题频发,实现真正多活、集群有效同步、可靠备份已是迫在眉睫。
·分布式SQL数据库将会得到更广泛的应用。
出战DTCC,王懂道揭秘腾讯的NoSQL集群
据悉,目前腾讯社交网络90%的业务使用的是NoSQL数据集群,腾讯也有很多自研的分布式KV集群,如CKV跟Grocery。2012年-2014年间腾讯的业务快速发展,特别是内存的NoSQL存储,年增存储量均超过40%,由于存量基数大,导致腾讯的存储成本急剧膨胀。
为了解决这一问题,腾讯开始做成本优化,如引进了访问密度的概念,1G内存的访问量如果少于500次/s,那么这个内存访问可以定义为是低负载的,是需要优化的。王懂道认为业务发展前期基本是不惜成本的投入,等业务处于稳定的生命周期后,降低业务成本就是运维该做的事情。
本次DTCC大会王懂道会和大家分享腾讯社交网络NoSQL集群的基本实现,以及他们在成本优化上的具体手段,包括自动采集业务存储画像,制定冷热分离策略,自动化的冷数据下沉和上升,自动调整内存碎片。