关于 elasticsearch 机器的选择

162 天前
 Q9K

我们小组现在有 2000-2500 的预算购买一个服务器,我们的数据量在 1 亿到 10 亿之间, 我们需要购买一个月的云服务, 最后验收的时候需要达到秒级查询和 1000-10000qps 的要求, 我们看了一下华为云的服务器,这个预算可以让我们买 3 台 4 核 16G 的机器 或者 1 台 8 核 64G 的机器 我们想问一下 我们应该怎么选择 或者大家有没有推荐更好的选择

2233 次点击
所在节点    Elasticsearch
29 条回复
Q9K
162 天前
之所以是 1000-10000qps 的要求,是因为跟最后的评分有关,对我们来说,1000qps 应该也够了
1018ji
162 天前
在一个生产集群中我们可以对这些节点的职责进行划分,建议集群中设置 3 台以上的节点作为 master 节点,这些节点只负责成为主节点,维护整个集群的状态。再根据数据量设置一批 data 节点,这些节点只负责存储数据,后期提供建立索引和查询索引的服务,这样的话如果用户请求比较频繁,这些节点的压力也会比较大,所以在集群中建议再设置一批 client 节点(node.master: false node.data: false),这些节点只负责处理用户请求,实现请求转发,负载均衡等功能。


难道你要混部?
somebody1
162 天前
1000-10000qps 要求非常高了。
如果是这样的话,数据库就没那么重要了,因为数据库是扛不住这么大的 qps 的。肯定要做分流,缓存之类的。
这么高的要求,就 2500 块钱,闹呢?
Hieast
162 天前
@somebody1 #3 说不定是同一个查询请求 1000qps 呢(狗头
Q9K
162 天前
@somebody1 我们是打算把大部分数据都放在 es 中,mysql 里只放一些用户相关的数据,qps 的要求主要是对搜索而言的,大佬按照您的意思,2500 一个月可能还是太少了吗预算
Morriaty
162 天前
你得说清楚:
1. 具体是什么查询,单 term query 和复杂的 bool + function_score 查询,差别大了去了
2. 数据结构是啥样的
3. 只读还是同时读写
4. 全靠 es 抗,还是程序层会做缓存
nicoljiang
162 天前
云服务器的话预算明显太低了(单台预算翻倍,然后需要 3 台)。
因为云服务的高速 IO 磁盘非常非常贵,而 ES 恰好是高性能 IO 场景。
zhangxudong
162 天前
2500 感觉只能捡垃圾搞服务器
somebody1
162 天前
@Q9K #5
你对 1000-10000qps 可能没有概念。我按 1w 给你算,这种 qps ,假设你们用户只要使用就会查询数据库。那你们大概有 10w~100w 的活跃用户,活跃用户!!!,你们的总用户量大概是在数百万到数千万之间,取决于你们业务类型。

百万千万级的用户,2.5k 买云服务器,你闹呢!这个用户体量,搞出来个新的腾讯云都分分钟的事情。
Q9K
162 天前
@Morriaty 大佬你好,数据是 openalex 的那种论文数据源数据,每一条数据记录了论文的标题,概要,作者相关信息等等,导入完数据后我们是只读的,查询只是会涉及到按照论文某些字段比如发表时间有 bool 查询,我们测试的时候发现 es 本身会有做缓存的情况,有可能是我们用的 elasticsearch_dsl 做了缓存,我们自己还会用 redis 做一些缓存
Q9K
162 天前
大佬你好,不好意思我没有说清楚我们这个项目背景,我们这个是一个软工的团队大作业,所以并没有那么多用户,对 qps 的要求应该是需要我们最后用 jmeter 做压力测试需要达到一定的指标,怎么说呢,就是我们也不太懂生产方面相关的东西。
Q9K
162 天前
@Q9K 之所以是 2000-2500 的预算,是因为学院只给发了一个 2000 的优惠券,我们小组 10 个人,我问了一下大家大概就是说能接受一起添点但不是特别多,另外我还想问一下 1000qps 可能大概需要多大的带宽对我们这个场景来说,我们这个项目大概就是说通过关键词查询论文和作者信息等等
Q9K
162 天前
@1018ji 您好,应该不是,我们都没有听说过混部这个名词
Q9K
162 天前
@nicoljiang 大佬按照你的意思,就是我们可能需要 3 台 16 核 64G 的服务器吗
ntedshen
162 天前
2500 预算如果就个大作业,要不直接装一台算了,esxi 或者物理机都行。。。
可能都不需要搞破解毕竟你可能都用不满试用期。。。
但是你租 vps 可是从你购入开始就算钱的,就这数据量可能部署还没完千把块已经下去了。。。
liuhan907
162 天前
1000qps ,根据你的查询复杂度和数据量,从一个 4c32g 小机器就能绰绰有余,到一个 10 节点集群都扛不住。一切皆有可能
blackeeper
162 天前
业务数据量在 1 亿到 10 亿之间,要达到秒级查询,而且最低 1000qps ,2500 块怕不是在开玩笑?在加两个 0 说不定可以搞定

给你的建议:鉴于 es 是高性能的 IO Java 应用程序,把 2000 买一台 CPU:内存比是 1:2 的 SSD vps 服务器,运行单节点 es
验收的时候,不走真实的业务数据的 es 查询,随便造一点数据作为验收就可以了
另外 500 块,小组的人一起吃个饭,(逃~
iomect
162 天前
按最小的 1000qps 来算 每秒查询 1000 次
一分钟 6 万次
一小时 360 万次
一天 8640 万次
2.5k 解决这个?
Q9K
162 天前
@iomect 啊这,还是我们太天真了吗,我们想的是大部分没有那么大的压力,只有压测的时候需要达到这样的要求
neoblackcap
162 天前
@Q9K 一般校园系统,不是什么选课之类的活动,100qps 差不多了。而且很多时候是可以在前端人为控制速率的。还能加队列慢慢处理。
而且 es 也要看索引以及分词做得好不好,不是说你们上了就能做到 10000qps 。腾讯他们自己分享过,他们的 QQ 登录服务器也是 1000qps 这个量级

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

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

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

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

© 2021 V2EX