可观测性
软件和技术

腾讯云Elasticsearch服务为腾讯会议建立高效沟通稳固桥梁

高效稳定的读写能力

达成100w+/s数据写入性能要求,业务数据实时同步,运营分析系统查询延迟从小时级降至秒级

服务稳定性高达99.9%

得益于腾讯云ES内核稳定性方向的大量优化,保证了腾讯会议万亿级别数据量高压力使用场景下的服务稳定性,为腾讯会议的运营分析及问题排查保驾护航

平滑扩展满足扩容需求

平滑扩展至数百节点,百万核数规模,满足业务数据增长下的扩容需求

腾讯会议于2019年12月底上线,两个月内日活突破1000万,被广泛应用于疫情防控会议、远程办公、师生远程授课等场景,为疫情期间的复工复产提供了重要的远程沟通工具。极速增长的会议需求,让腾讯会议服务质量分析系统经受着巨大的考验。为了向全网用户提供高效稳定的服务,以及对重要的大型会议进行保障护航。在充分讨论调研了大量方案后,腾讯会议服务质量分析团队与腾讯云Elasticsearch(下文简称“ES”)团队展开合作,积极探索云端服务质量数据分析引擎架构的更多可能。

“得益于内核稳定性方向的大量优化,腾讯云ES的服务稳定性上达到了99.9%,保证了万亿级别数据量高压力使用场景下的服务稳定性,为腾讯会议的运营分析及问题排查保驾护航。”

– 腾讯会议相关负责人

数据极速增长,业务稳定面临挑战

新场景下会议需求激增,涉及超大规模资源扩容:为了应对疫情下远程办公的需求,腾讯会议每天都在进行资源扩容,日均扩容云主机接近1.5万台,8天总共扩容超过10万台云主机,共涉及超百万核的计算资源投入。

服务质量分析系统经受考验,为及时排查用户问题带来挑战:在会议中,偶尔存在会议实时音视频卡顿、音视频不同步等会议质量问题,造成上述问题的可能因素比较多,为了帮助运营团队快速精准地定位分析问题,需要大量运行时的会议质量数据支撑。然而,快速增长的用户数以及不断刷新纪录的同时在线房间数,让腾讯会议服务质量分析系统经受高压力,给运营团队及时排查用户问题带来了巨大的挑战。

原有自研搜索引擎无法满足数据暴涨下的业务需求:腾讯会议系统最关键的部分是基于lucene自研的搜索引擎,扩容能力较差,依赖于研发团队针对业务的优化,在数据激增情况下不能快速扩容以满足需求,导致了高压力、高吞吐的场景下服务质量分析系统写入性能严重不足。

选型ES及技术考量

1.高性能
腾讯云ES在社区开源的内核之上,根据云上的内外部业务的场景案例积累,做了大量的内核优化。腾讯会议服务质量数据上报至ES的流量,峰值高达1000+w/s。腾讯云ES内核团队对类似的高压力写入场景进行了追踪及分析,在与社区进行了大量的讨论及压测之后,最终确定了优化方案,且优化后的写入性能提高了20%以上。

这部分优化的代码经腾讯内部的业务验证后,最终整理提交回馈给了社区。由于这个优化在ES写入的所有场景下均适用,且对性能的提升非常显著,Elastic的创始人对该PR高度赞扬,并给腾讯云总裁发来了公开感谢信。截至目前为止,腾讯云提交的PR约有50+被合并到了主干。

2.扩容能力
腾讯云ES有着完善的分布式设计,单个集群支持扩容至数百甚至上千个节点。有可靠完备的选主算法逻辑以及sharding路由策略做保障。数据分片支持数据冗余,防止由于硬件故障导致的数据丢失,并提升集群的读性能。

同时,数据可以按索引维度设置数据分片及副本数目,可以根据业务特点更灵活地设置合理的数值,降低了数据存储的成本。腾讯云ES依托于腾讯云CVM进行构建,资源池充足,仅在疫情刚开始的一个月内就扩容了3W核,集群弹性伸缩的便利性得到了验证。扩容节点数目及变更节点配置等均为自动化功能,支持控制台及API一键操作,扩容过程平滑,不影响业务读写。

3.稳定性
腾讯会议服务质量分析系统,从2月份进行ES架构的方案切换开始,写入吞吐从5w/s不断攀升,现已达到100w+/s。业务的突发增长有时候来的很突然,并不能在前期做有效的评估。针对这种高并发场景,ES原生版本本身有限流策略,是基于请求数的漏桶策略,通过队列加线程池的方式实现。

腾讯云ES基于内存资源的漏桶策略,将节点 JVM 内存作为漏桶的资源,当内存资源足够的时候,请求可以正常处理;当内存使用量到达一定阈值的时候分区间阶梯式平滑限流。通过实际测试,平滑的区间限流能在高压力下保持稳定的写入性能,并且作用范围更广,覆盖协调节点、数据节点的接入层和传输层,并不会替代原生的限流方案。

4.易用性
用户数暴增,留给系统验证切换的时间非常短,这要求腾讯会议必须使用一种简单快速的解决方案。需要在一周之内输出适用方案,并进行线上数据的切换。由于时间紧迫,新的方案需要尽量保留原有架构的大部分基础设施,并做尽量少的代码开发改动。在这方面,ES的社区生态做得非常完备。从采集端、收集端到存储都有一整套解决方案。通过logstash的易用性和强大的生态插件,可以快速替代原有的自研数据接入组件,进行数据的清洗转换等ETL过程。

同时,ES社区也比较活跃,国内有10万+的开发者参与其中,问题都可以比较快地得到回复和解决。在此,也特别感谢ES的研发团队及一线运维团队,在疫情期间,对腾讯会议进行了7*24小时的支持,并对于使用ES的一些疑难问题给出了大量的解决方案。

腾讯云ES为业务提供高效稳定的读写能力

在腾讯会议服务质量数据分析系统全部切换至ELK架构之后,达成了100w+/s的数据写入性能要求,数据从入队列到可被搜索到的延迟时间从小时级别缩短至了秒级,保证了业务数据同步的实时性要求以及运营分析系统的查询延迟要求。

截止到目前,腾讯会议集群随着业务的增长已平滑扩展至数百节点,百万核数规模,满足了业务数据增长下的扩容需求。

并且,得益于内核稳定性方向的大量优化,腾讯云ES的服务稳定性上达到了99.99%,保证了万亿级别数据量高压力使用场景下的服务稳定性,为腾讯会议的运营分析及问题排查保驾护航。

腾讯会议的普及与腾讯云ES在数据搜索查询、高并发、弹性扩展以及安全领域的技术能力密切相关。腾讯云ES在腾讯会议质量服务上的成功实践,也为视频会议这个细分行业领域提供了一个优秀的范例,拓展了行业解决方案的思路。

未来,腾讯云ES仍将不断迭代,针对用户需求,不断打磨技术和产品,持续输出稳定可靠的Elasticsearch服务。

点击了解:腾讯云Elasticsearch
使用产品:Elastic Stack