近日,Elasticsearch 的创始人兼首席执行官Shay Banon 向腾讯云发出了一封“特别”的邮件,专程对腾讯团队为Elasticsearch开源社区做出的贡献表示了感谢。
据了解,腾讯工程师通过提交代码,成功优化了Elasticsearch高并发写入性能,实现将1000万数据量的写入时长从原来的18分钟缩减至15分钟,速率提升20%,并在Elasticsearch开源社区分享了项目方案。
Shay Banon 在发给腾讯副总裁、腾讯云总裁邱跃鹏的感谢信中表示:
“我们最近对Elasticsearch进行了重大而巧妙的改进,这是由腾讯的一位开发者提出的。这种改进使Elasticsearch的某些类型的写速度提高了约20%,我们非常期待后续腾讯云继续保持这种良好的合作关系。”
事实上,在今年5月的腾讯全球数字生态大会上,腾讯云与Elastic签署了战略合作协议。双方同意在产品、技术、生态三个维度展开合作,依托Elastic在搜索软件领域的产品和技术优势,以及腾讯云在云计算大数据领域的技术能力和市场资源,双方联合推出具备高级商业特性的腾讯云Elasticsearch Service ,该版本上线了集群权限管理、SQL、机器学习、图查询等高级功能。并结合腾讯云全球领先的公有云架构,实现Elasticsearch集群应用的低成本、易开发、易管理、高可用、高安全性。
其实,这次源码优化的契机,源自腾讯内部一站式智能化的大数据服务平台全民BI的真实业务场景,其中,全民BI的统计功能,在底层使用了Elasticsearch的开源代码。在实际使用中,因为存在历史数据比对的需求,需要每天全量导入新的数据。数十亿级的数据量,超过500个标签,需要尽可能的快速的导入到ES系统中,但这一块经过多次的参数优化,依然需要几个小时才能完成导入,是整个系统的一大瓶颈。
在此背景下,腾讯全民BI团队开始着手优化Elasticsearch高并发场景下的写入性能。项目团队通过分析ES的写入机制,在多次堆栈分析取样中,发现较多线程因writeLock被rollGeneration占用,在获取锁的等待上耗时偏长。因而将优化的着力点,从参数的调优转移至线程的优化。项目团队最终在实验理论值的基础上,通过优化rollGeneration,实现将1000万数据量的写入时长从原来的18分钟缩减至15分钟,速率提升20%。
“非常感谢Elastic公司创始人之一和技术负责人Simon Willnauer的支持和建议,本次优化大幅度提升全民BI系统的数据分析效率,接下来,这些领先的特性都能够在腾讯云Elasticsearch Service上获取。” 主要负责人表示。
更加值得期待的是,这次优化只是一个开端,未来仍存在较多优化空间,腾讯云目前正在积极与开源社区沟通中。
值得注意的是,这次社区代码贡献并不是腾讯的个别案例,从2010年开始,腾讯就开始通过“三步走”的开源计划,积极推动代码开放和社区参与,从封闭孤立向协同开放和社区开放治理的纵深方向发展。
“我们将通过内外部开放源代码的方式,积极参与全球科技共同体的构建。”腾讯公司董事会主席兼首席执行官马化腾在八月底重庆召开的2019智博会高峰论坛上表示。
如今,腾讯正以发起者、贡献者等不同方式积极参与开源。在社区贡献方面,腾讯已经获得 OpenStack 社区、Linux 基金会、LFAI 基金会、MariaDB 基金会、Apache 基金会等多个白金会员或白金赞助商身份。
去年,腾讯云向 KVM 内核贡献了 40 个 patch,连续第二年登上 KVM 全球开源贡献榜,也成为中国唯一入选云厂商。今年初,腾讯云正式发布基础设施层面四大核心技术项目,分别涵盖数据中心、网络、服务器以及自动化平台领域,并宣布将这四大技术项目全部贡献给开源 OCP 社区。
而在自主开源方面,截至2019年8月,腾讯已在Github上发布82个开源项目,包含微信、腾讯云、腾讯游戏、腾讯AI、腾讯安全等相关领域。腾讯发起的开源项目累计在 Github 获得了24W+ Star数,在国内和国际收获了广泛的关注和认可。
未来,腾讯还将进一步拓宽开源的范围,在开放、共享、合力开发的研发模式中,不断夯实已有的技术能力,不断深化与开源伙伴间相互促进的良性关系。