我们小组现在有 2000-2500 的预算购买一个服务器,我们的数据量在 1 亿到 10 亿之间, 我们需要购买一个月的云服务, 最后验收的时候需要达到秒级查询和 1000-10000qps 的要求, 我们看了一下华为云的服务器,这个预算可以让我们买 3 台 4 核 16G 的机器 或者 1 台 8 核 64G 的机器 我们想问一下 我们应该怎么选择 或者大家有没有推荐更好的选择
1
Q9K OP 之所以是 1000-10000qps 的要求,是因为跟最后的评分有关,对我们来说,1000qps 应该也够了
|
2
1018ji 2023-11-29 16:21:59 +08:00
在一个生产集群中我们可以对这些节点的职责进行划分,建议集群中设置 3 台以上的节点作为 master 节点,这些节点只负责成为主节点,维护整个集群的状态。再根据数据量设置一批 data 节点,这些节点只负责存储数据,后期提供建立索引和查询索引的服务,这样的话如果用户请求比较频繁,这些节点的压力也会比较大,所以在集群中建议再设置一批 client 节点(node.master: false node.data: false),这些节点只负责处理用户请求,实现请求转发,负载均衡等功能。
难道你要混部? |
3
somebody1 2023-11-29 16:34:20 +08:00
1000-10000qps 要求非常高了。
如果是这样的话,数据库就没那么重要了,因为数据库是扛不住这么大的 qps 的。肯定要做分流,缓存之类的。 这么高的要求,就 2500 块钱,闹呢? |
5
Q9K OP @somebody1 我们是打算把大部分数据都放在 es 中,mysql 里只放一些用户相关的数据,qps 的要求主要是对搜索而言的,大佬按照您的意思,2500 一个月可能还是太少了吗预算
|
6
Morriaty 2023-11-29 17:32:22 +08:00
你得说清楚:
1. 具体是什么查询,单 term query 和复杂的 bool + function_score 查询,差别大了去了 2. 数据结构是啥样的 3. 只读还是同时读写 4. 全靠 es 抗,还是程序层会做缓存 |
7
nicoljiang 2023-11-29 17:36:23 +08:00
云服务器的话预算明显太低了(单台预算翻倍,然后需要 3 台)。
因为云服务的高速 IO 磁盘非常非常贵,而 ES 恰好是高性能 IO 场景。 |
8
zhangxudong 2023-11-29 17:40:01 +08:00
2500 感觉只能捡垃圾搞服务器
|
9
somebody1 2023-11-29 18:00:19 +08:00
@Q9K #5
你对 1000-10000qps 可能没有概念。我按 1w 给你算,这种 qps ,假设你们用户只要使用就会查询数据库。那你们大概有 10w~100w 的活跃用户,活跃用户!!!,你们的总用户量大概是在数百万到数千万之间,取决于你们业务类型。 百万千万级的用户,2.5k 买云服务器,你闹呢!这个用户体量,搞出来个新的腾讯云都分分钟的事情。 |
10
Q9K OP @Morriaty 大佬你好,数据是 openalex 的那种论文数据源数据,每一条数据记录了论文的标题,概要,作者相关信息等等,导入完数据后我们是只读的,查询只是会涉及到按照论文某些字段比如发表时间有 bool 查询,我们测试的时候发现 es 本身会有做缓存的情况,有可能是我们用的 elasticsearch_dsl 做了缓存,我们自己还会用 redis 做一些缓存
|
11
Q9K OP 大佬你好,不好意思我没有说清楚我们这个项目背景,我们这个是一个软工的团队大作业,所以并没有那么多用户,对 qps 的要求应该是需要我们最后用 jmeter 做压力测试需要达到一定的指标,怎么说呢,就是我们也不太懂生产方面相关的东西。
|
12
Q9K OP @Q9K 之所以是 2000-2500 的预算,是因为学院只给发了一个 2000 的优惠券,我们小组 10 个人,我问了一下大家大概就是说能接受一起添点但不是特别多,另外我还想问一下 1000qps 可能大概需要多大的带宽对我们这个场景来说,我们这个项目大概就是说通过关键词查询论文和作者信息等等
|
14
Q9K OP @nicoljiang 大佬按照你的意思,就是我们可能需要 3 台 16 核 64G 的服务器吗
|
15
ntedshen 2023-11-29 18:16:05 +08:00
2500 预算如果就个大作业,要不直接装一台算了,esxi 或者物理机都行。。。
可能都不需要搞破解毕竟你可能都用不满试用期。。。 但是你租 vps 可是从你购入开始就算钱的,就这数据量可能部署还没完千把块已经下去了。。。 |
16
liuhan907 2023-11-29 18:25:21 +08:00
1000qps ,根据你的查询复杂度和数据量,从一个 4c32g 小机器就能绰绰有余,到一个 10 节点集群都扛不住。一切皆有可能
|
17
blackeeper 2023-11-29 20:52:41 +08:00
业务数据量在 1 亿到 10 亿之间,要达到秒级查询,而且最低 1000qps ,2500 块怕不是在开玩笑?在加两个 0 说不定可以搞定
给你的建议:鉴于 es 是高性能的 IO Java 应用程序,把 2000 买一台 CPU:内存比是 1:2 的 SSD vps 服务器,运行单节点 es 验收的时候,不走真实的业务数据的 es 查询,随便造一点数据作为验收就可以了 另外 500 块,小组的人一起吃个饭,(逃~ |
18
iomect 2023-11-29 20:59:38 +08:00
按最小的 1000qps 来算 每秒查询 1000 次
一分钟 6 万次 一小时 360 万次 一天 8640 万次 2.5k 解决这个? |
20
neoblackcap 2023-11-29 22:05:09 +08:00
@Q9K 一般校园系统,不是什么选课之类的活动,100qps 差不多了。而且很多时候是可以在前端人为控制速率的。还能加队列慢慢处理。
而且 es 也要看索引以及分词做得好不好,不是说你们上了就能做到 10000qps 。腾讯他们自己分享过,他们的 QQ 登录服务器也是 1000qps 这个量级 |
21
neoblackcap 2023-11-29 22:05:47 +08:00
@Q9K 当然了,腾讯那边是每台是 1000qps 这样子,不过他们是有做分流
|
22
cdlnls 2023-11-29 22:14:13 +08:00
如果内存能一次性放下所有的文档索引,磁盘 io 就算不用高配的,也没啥问题。数据量在几亿条,内存应该是够的。
如果是我的话,大概率会选几个 4C/32G ,700 一块钱/月。3 台正好 2100 。 我的建议是 ,可以开几个 按量计费/竞价实例 的 ECS 实例,把服务搭起来,数据导入进去,一天时间够测试完了,总费用不会超过 50 块钱。这样测试完了就知道该买什么配置的了。 |
23
cdlnls 2023-11-29 22:19:36 +08:00
基本上,遇到选机器配置的情况,我都是建议开 按量计费/竞价实例 实际测试一下,什么配置能选,什么配置不能选,基本上测试一下心里就有数了,开按量付费/竞价实例基本上也花不了多少钱。
|
24
nicoljiang 2023-11-29 22:20:13 +08:00
@Q9K 还得看你查询的复杂度。因为上亿的数据是个非常大的量级,但是看你的数据量也可大可小。但基本上不太可能都是内存可以容纳的级别。
|
25
mjikop1231 2023-11-30 14:10:29 +08:00
|
26
mjikop1231 2023-11-30 14:11:26 +08:00
#25 先按查询场景去 banchmark 上对照一下呗,然后抗 1000 qps 你让缓存去抗,es 自己单机是不太好抗的
|
27
Q9K OP @mjikop1231 哦哦好的,我去看看
|
29
Q9K OP @neoblackcap emmm ,我们这个就是学校的软工大作业项目,好多东西也不懂,1000qps 其实对我们来说还不知道意味着生产是怎样的一个级别
|