Elastic Meetup 2021 深圳站回顾

2021-08-24 15:37:34 浏览数 (1)

1. 背景

      一波未平一波又起的疫情对大家的生活、工作造成了一定影响。在信息化飞速发展的今天,小伙伴们技术交流的方式也变得多样化。2021年8月21日下午,ES 中文社区联合腾讯云在腾讯滨海大厦举办了深圳地区年度首次 Meetup,活动采用线下现场参与、腾讯会议、云 社区线上同步直播的方式进行。来自腾讯、Tapdata、字节跳动、vivo 的技术专家们给 ES 社区的小伙伴们带来了一场精彩的技术视听盛宴。

2. 社区发展

      活动开始 ES 深圳分会主席杨振涛先生回顾了深圳 Meetup 历史并对本次活动表达了祝福,分会副主席黄华先生介绍了 ES 社区最新的发展动态。

      截止目前 Elasticsearch 总下载量达到 8.3 亿,Elastic Stack 技术栈产品的下载量超过 25 亿。作为开源产品,发展趋势非常火爆,这背后得益于 ES 在大数据生态下服务场景的不断扩展。ES 社区的发展也是非常的迅猛,全球近百个城市举办过 Meetup 活动,共 5 万多参会者,全球社区用户量超过 10 万。中文社区有 9 个城市定期举办 Meetup,相信后续会越来越多。ES 技术栈这么火爆主要是因为搜索领域它是王者,海量日志实时分析领域它正在成为很多公司的平台化、数据中台的标配。

      云是未来,拥抱云原生。腾讯云和 Elastic 公司达成商务战略合作已有两年多时间,云上的托管 ES 服务已成为大数据产品线的火热品牌。与此同时,腾讯并没有白嫖开源产品,除了引入官方 X-Pack 商业特性,技术层面进一步拥抱开源、贡献开源。腾讯 ES 的内核团队向社区贡献了大量的 Patch,腾讯已成为 ES 社区全球贡献最多的第三方公司。

3. 主题分享

3.1 腾讯 Elasticsearch 压缩编码优化实践

      首先分享的是来自腾讯 ES 内核团队的专家工程师毕杰山老师,他的分享主题是腾讯 Elasticsearch 压缩编码优化实践

      ES 底层的存储引擎是 Apache Lucene,它支持多种数据结构,包括行存、列存、倒排索引、数值类型索引(BKD-Tree)等等。正因为其支持多种数据结构,使得 ES 能支持的业务场景非常丰富。也正是因为多种数据结构的支持,导致 ES 的存储成本开销比较高。另外 Lucene 的发展已有二十多年历史,在各种数据结构的压缩优化、编码优化方面并没有演进的特别快。

      压缩算法的技术门槛较高,一般涉及众多的复杂算法,重复研发一种新的压缩算法代价非常大,业界也有较多成熟的算法例如 Zstd、Brotli、Deflate 等。从 ES 众多的数据结构中寻找文件存储可优化点本身比较挑战,我们需要兼顾压缩比和性能的开销。除了引入通用的压缩算法,还要针对部分结构做深度的编码优化。

      在本次分享中,杰山老师深入浅出地剖析了压缩算法的基本原理,解析了腾讯 ES 在压缩编码方面系统性的优化。点击图片下方链接,查看详细分享内容。

                  腾讯 Elasticsearch 压缩编码优化实践

该主题问答环节:

问题1:这些新特性基于哪个版本做的?

答复:基于 es 7.10 版本,对应着 lucene 的版本为 8.7。

问题2:能不能不对行数据进行压缩?我们发现在 es node 侧压缩的话会特别消耗 CPU,所以在外部提前做了压缩。

答复:行数据压缩是默认开启的,目前并没有提供关闭的选项。因为大部分场景下都对存储成本非常敏感。 外部提前对数据做了压缩然后再写进来的话,得考虑如何分词,这里需要很强的定制,也有使用场景上的限制。对我们来说,这种方案并不具有通用性。

问题3:行存有没有可能提供用户自定义排序呢?

答复:ES 的排序是索引维度的设定,不针对具体的数据结构,但对排序的字段类型有一些限制,只能是 boolean, numeric, date 和 keyword 类型且开启了 doc_value,当设定以后,整个文档的所有数据结构会按照设定的字段排序后的 doc id 顺序进行写入,包括写入和 merge 流程。对于行存,Lucene 底层会将 flush 前的行存先写入一个临时目录,flush 时再从临时目录读取根据 doc id 排序再按顺序写入,因此行存带排序写入开销会比较高。

问题4:存储计算分离大概什么思路可以简单说下么?

答复:存算分离的主要实现思想是基于共享存储实现多个节点的数据共享,ES 层面只保存一个物理副本。文件系统底层确保数据本身的可靠性,同时 ES 提供逻辑上的主从副本,实现数据一写多读的能力。从而达到优化存储、计算成本的目的。

3.2 ES MongoDB 的实时数据融合平台架构

      接下是来自 Tapdata 的资深架构师杨庆麟老师分享基于 ES MongoDB 的实时数据融合平台架构。跨地域业务需求在数据一致性、实时性层面始终是痛点。例如珠宝行业的头部客户在中、港、台、澳等多地有业务系统。由于历史原因,系统还是多年前的架构,存储系统以 Oracle 为主,数据冗余、订单状态无法统一、运维成本高。Tapdata 提供了一套面向业务的 DaaS 解决方案,基于 ES 和 Mongo 的跨地域实时数据融合平台。上线之后统一了各个地域门店后台,大幅降低了数据维护成本。详细的分享内容请点击图片下方的链接。

          基于 ES MongoDB 的实时数据融合平台架构分享

该主题问答环节:

问题1:数据同步时,针对多个数据源多个表的数据聚合,请问是通过脚本来处理的,还是通过编码处理?

答复:通过 js 来做的,⾃研的实时计算引擎。

问题2:数据库实时同步的原理是什么?

答复:针对 oracle,采⽤的是 logminer;mysql 采⽤的是 binlog ⽅式;mongo 是 changestream。

问题3:通过 mongo es 完成业务数据的交付,那么 ES 会处理计算吗?

答复:ES 不负责计算, mongo 也不负责⼤部分计算。⼤部分计算都是通过平台完成的,mongo 负责⾼并发的更新,es 负责⾼并发、搜索场景的查询。

茶歇时间

      在两场主题分享完毕后的技术交流环节,活动主办方在美丽的腾讯滨海大厦提供了精美的茶歇。

茶歇交流茶歇交流

3.3 字节跳动在ES的内核扩展

      接下来是来自字节跳动的鲁蕴铖老师分享字节跳动在 ES 的内核扩展。字节跳动实现了基于内部自研 NFS 的存算分离功能,实现了一写多读的架构,底层云存储多副本保证可靠性。Primary 分片承担所有的写操作,通过传送 Segment Infos 到各个副本,实现副本同步,基本可以实现秒级副本扩容。

      官方的跨集群复制需要 License 支持,字节跳动实现了自研的跨集群复制能力,并采用了 Leader 向 Follower Push 的模式进行同步,提升数据同步的实效性。除此之外,他们还对向量化检索进行了插件化的扩充,支持更多的算法。链路安全方面,实现了底层存储加密、支持基于 GDPR 认证授权方式等。在可观测性方面,ES 擅长于做链路追踪,他们对 ES 本身的读写流程进行了函数调用链的追踪,便于性能分析。详细的分享内容请点击图片下方的链接。

                            字节跳动在 ES 的内核扩展

该主题问答环节:

问题1:向量化怎么实现的,性能如何?

答复:通过扩展 ES 的 Engine plugin,然后对于不同的向量组件实现自己 codec,性能在 kw 级数据下基本在百 ms 以内。

问题2:审计的实现,性能如何?

回答:会通过 Action Filter 将用户的请求主动上报到审计日志或平台,对于百万请求量,写入降采样,查询全量的情况下,性能损耗低于2%。

3.4 vivo Elasticsearch集群应用实践

      接下来是来自 vivo 的资深 DBA 刘石林老师分享 vivo Elasticsearch 集群应用实践。在大数据横行的今天,如何规模化运营 Elasticsearch 集群、提升数据管理者的幸福感,成为各个企业需要重点关注的问题。在实际业务运营中经常会遇到各种挑战,例如高并发读写资源开销过高、 Elasticsearch 本身存在的 Bug 以及各种业务使用不当导致的问题等。如果企业内没有很好的平台支撑,靠人肉管理,会给数据管理者带来很大的挑战。本次分享中,主要介绍了 vivo 使用 Elasticsearch 的经典场景,以及如何基于自主研发的 ES 管理平台规模化地运营 ES 集群。详细的分享内容请点击图片下方的链接。

                        vivo Elasticsearch 集群应用实践

该主题问答环节:

问题1::这个可视化界面是用哪个工具?

答复:可视化界面是自主开发,产品经理参考了 Cerebro 的管理界面。

问题2:请问扩容的时候,会调整主分片数么?

答复:暂时没有考虑,我们扩容只扩容节点数量,主要原因是因为调整主分片数需要 reindex,除非业务有需要可配合线下操作。

问题3:请问你们 index 生命周期管理是怎么做的,是用官方的 ilm 吗?你们对升级 es 版本怎么看?

答复:我们暂时没有使用官方的 ilm 相关模块,但是我们参考了他们的基本逻辑,由业务调用 api 接口实现索引生命周期管理。我们要求统一版本,非特殊情况 (bug 问题导致业务问题不可正常使用) 不会给业务维护特殊版本号,我们当前使用版本都是内部测试后,满足大部分业务场景需求才会选择。

问题4:会有定期合并索引的操作吗?

答复:暂时没有这个方面需求,后续平台可能会集成。

问题5:一般集群控制多少分片数左右比较好?

答复:社区版本对分片数做了软限制,单节点不超过1000个分片,社区版本集群超过3万分片时元数据变更已非常缓慢(数秒甚至十几秒),社区已有团队对集群扩展性做了相关优化,可支持到百万级分片。可参考:腾讯Elasticsearch百万级分片扩展性优化

4. 视频回放

https://cloud.tencent.com/developer/salon/salon-1545

5. 圆满结束

      疫情阻挡我们出行,但阻挡不了技术的演进,阻挡不了 ES 社区的发展,让我们下一期深圳 Meetup 再见!

Elastic Meetup 2021 深圳站大合影Elastic Meetup 2021 深圳站大合影

      感谢腾讯会议、腾讯云 社区对本次活动直播提供技术支持!

      感谢本次活动推广社区:

0 人点赞