ES 数据压缩问题

2022-04-15 16:46:58 +08:00
 aaa5838769
背景:ES 集群已经是百台高配节点。
1.单条数据平均大小占用 15K 左右。
2.每次请求要返回 1 万条的数据量。
3.会有大量的并发会去这样请求。
目前导致是带宽资源占用比较高,另一个返回的效率比较慢,大家都是怎么优化的,包括数据压缩或者负载均衡策略。

有之前负责 ES 大数据运维的工作,有打算想换环境的想法,可以聊聊。

2260 次点击
所在节点    Elasticsearch
7 条回复
mengzhuo
2022-04-15 22:37:59 +08:00
最简单是逻辑层加 cache ,查询一致的时候直接回之前缓存的数据,特别是用户会查询的东西可以自己先预热 cache 。

而且看你的需求,应该是某种 tsdb 的应用范围。预先计算,预先聚集到特定表,减少 aggregate 压力,或者干脆直接换 tsdb 。

不是 tsdb 的话,每条数据 15K ,也需要尽快垂直拆字段,特别是没啥用的数据,就不要跟着查询压力大的接口放在一起。
ES 的 shard 机制决定了你的数据肯定会跨节点查询,http gzip 都只是治标不治本的。
noparking188
2022-04-16 02:24:51 +08:00
好问题,关注
aaa5838769
2022-04-16 10:36:10 +08:00
@mengzhuo 感谢你的回复,我们库里大概有几十亿条数据,这几十亿条数据,根据用户的需求进行请求查询然后返回数据,未必有耦合的数据。
mengzhuo
2022-04-16 21:49:02 +08:00
@aaa5838769 类似搜索引擎么?那 ES 可不是好选择,可能需要直接建立单独的分词索引服务来完成任务,不过具体我没实施过,你搜搜看搜索引擎实现吧。
viggoc
2022-04-16 23:25:23 +08:00
查询条件是什么样的,有排序吗。拉数据一定要获取所以字段吗?不需要的话就只返回部分字段吧
aaa5838769
2022-04-17 10:59:03 +08:00
@viggoc 可以根据时间范围或者关键词查询,无排序,返回的字段是根据请求参数来决定的,可以全部字段或者部分字段的。
viggoc
2022-04-17 11:07:46 +08:00
时间范围查询可以考虑数据根据时间字段 index sorting 。返回的字段是从 source 取的话可以考虑用 docvalue_fields 取,从 source 取是要解析 json 的。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/847176

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX