近日, 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%.
来源: https://www.qcloud.com/developer/article/1500520