前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Elastic Meetup 2021 深圳站回顾

Elastic Meetup 2021 深圳站回顾

原创
作者头像
黄华
修改2021-08-24 15:39:28
1.1K0
修改2021-08-24 15:39:28
举报

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 深圳站大合影

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

      感谢本次活动推广社区:

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 背景
  • 2. 社区发展
  • 3. 主题分享
    • 3.1 腾讯 Elasticsearch 压缩编码优化实践
      • 3.2 ES + MongoDB 的实时数据融合平台架构
        • 茶歇时间
          • 3.3 字节跳动在ES的内核扩展
            • 3.4 vivo Elasticsearch集群应用实践
            • 4. 视频回放
            • 5. 圆满结束
            相关产品与服务
            Elasticsearch Service
            腾讯云 Elasticsearch Service(ES)是云端全托管海量数据检索分析服务,拥有高性能自研内核,集成X-Pack。ES 支持通过自治索引、存算分离、集群巡检等特性轻松管理集群,也支持免运维、自动弹性、按需使用的 Serverless 模式。使用 ES 您可以高效构建信息检索、日志分析、运维监控等服务,它独特的向量检索还可助您构建基于语义、图像的AI深度应用。
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档