V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Q9K
V2EX  ›  Elasticsearch

关于 elasticsearch 机器的选择

  •  
  •   Q9K · 2023-11-29 15:59:32 +08:00 · 2727 次点击
    这是一个创建于 386 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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


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

    百万千万级的用户,2.5k 买云服务器,你闹呢!这个用户体量,搞出来个新的腾讯云都分分钟的事情。
    Q9K
        10
    Q9K  
    OP
       2023-11-29 18:06:04 +08:00
    @Morriaty 大佬你好,数据是 openalex 的那种论文数据源数据,每一条数据记录了论文的标题,概要,作者相关信息等等,导入完数据后我们是只读的,查询只是会涉及到按照论文某些字段比如发表时间有 bool 查询,我们测试的时候发现 es 本身会有做缓存的情况,有可能是我们用的 elasticsearch_dsl 做了缓存,我们自己还会用 redis 做一些缓存
    Q9K
        11
    Q9K  
    OP
       2023-11-29 18:08:51 +08:00   ❤️ 1
    大佬你好,不好意思我没有说清楚我们这个项目背景,我们这个是一个软工的团队大作业,所以并没有那么多用户,对 qps 的要求应该是需要我们最后用 jmeter 做压力测试需要达到一定的指标,怎么说呢,就是我们也不太懂生产方面相关的东西。
    Q9K
        12
    Q9K  
    OP
       2023-11-29 18:11:50 +08:00
    @Q9K 之所以是 2000-2500 的预算,是因为学院只给发了一个 2000 的优惠券,我们小组 10 个人,我问了一下大家大概就是说能接受一起添点但不是特别多,另外我还想问一下 1000qps 可能大概需要多大的带宽对我们这个场景来说,我们这个项目大概就是说通过关键词查询论文和作者信息等等
    Q9K
        13
    Q9K  
    OP
       2023-11-29 18:13:32 +08:00
    @1018ji 您好,应该不是,我们都没有听说过混部这个名词
    Q9K
        14
    Q9K  
    OP
       2023-11-29 18:14:44 +08:00
    @nicoljiang 大佬按照你的意思,就是我们可能需要 3 台 16 核 64G 的服务器吗
    ntedshen
        15
    ntedshen  
       2023-11-29 18:16:05 +08:00
    2500 预算如果就个大作业,要不直接装一台算了,esxi 或者物理机都行。。。
    可能都不需要搞破解毕竟你可能都用不满试用期。。。
    但是你租 vps 可是从你购入开始就算钱的,就这数据量可能部署还没完千把块已经下去了。。。
    liuhan907
        16
    liuhan907  
       2023-11-29 18:25:21 +08:00
    1000qps ,根据你的查询复杂度和数据量,从一个 4c32g 小机器就能绰绰有余,到一个 10 节点集群都扛不住。一切皆有可能
    blackeeper
        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 块,小组的人一起吃个饭,(逃~
    iomect
        18
    iomect  
       2023-11-29 20:59:38 +08:00
    按最小的 1000qps 来算 每秒查询 1000 次
    一分钟 6 万次
    一小时 360 万次
    一天 8640 万次
    2.5k 解决这个?
    Q9K
        19
    Q9K  
    OP
       2023-11-29 21:32:31 +08:00
    @iomect 啊这,还是我们太天真了吗,我们想的是大部分没有那么大的压力,只有压测的时候需要达到这样的要求
    neoblackcap
        20
    neoblackcap  
       2023-11-29 22:05:09 +08:00
    @Q9K 一般校园系统,不是什么选课之类的活动,100qps 差不多了。而且很多时候是可以在前端人为控制速率的。还能加队列慢慢处理。
    而且 es 也要看索引以及分词做得好不好,不是说你们上了就能做到 10000qps 。腾讯他们自己分享过,他们的 QQ 登录服务器也是 1000qps 这个量级
    neoblackcap
        21
    neoblackcap  
       2023-11-29 22:05:47 +08:00
    @Q9K 当然了,腾讯那边是每台是 1000qps 这样子,不过他们是有做分流
    cdlnls
        22
    cdlnls  
       2023-11-29 22:14:13 +08:00
    如果内存能一次性放下所有的文档索引,磁盘 io 就算不用高配的,也没啥问题。数据量在几亿条,内存应该是够的。
    如果是我的话,大概率会选几个 4C/32G ,700 一块钱/月。3 台正好 2100 。

    我的建议是 ,可以开几个 按量计费/竞价实例 的 ECS 实例,把服务搭起来,数据导入进去,一天时间够测试完了,总费用不会超过 50 块钱。这样测试完了就知道该买什么配置的了。
    cdlnls
        23
    cdlnls  
       2023-11-29 22:19:36 +08:00
    基本上,遇到选机器配置的情况,我都是建议开 按量计费/竞价实例 实际测试一下,什么配置能选,什么配置不能选,基本上测试一下心里就有数了,开按量付费/竞价实例基本上也花不了多少钱。
    nicoljiang
        24
    nicoljiang  
       2023-11-29 22:20:13 +08:00
    @Q9K 还得看你查询的复杂度。因为上亿的数据是个非常大的量级,但是看你的数据量也可大可小。但基本上不太可能都是内存可以容纳的级别。
    mjikop1231
        25
    mjikop1231  
       2023-11-30 14:10:29 +08:00
    mjikop1231
        26
    mjikop1231  
       2023-11-30 14:11:26 +08:00
    #25 先按查询场景去 banchmark 上对照一下呗,然后抗 1000 qps 你让缓存去抗,es 自己单机是不太好抗的
    Q9K
        27
    Q9K  
    OP
       2023-12-01 15:04:49 +08:00
    @mjikop1231 哦哦好的,我去看看
    Q9K
        28
    Q9K  
    OP
       2023-12-01 15:05:29 +08:00
    @cdlnls 也想过按量付费,但是担心自己短时间内搞不定就多花很多钱 555
    Q9K
        29
    Q9K  
    OP
       2023-12-01 15:07:07 +08:00
    @neoblackcap emmm ,我们这个就是学校的软工大作业项目,好多东西也不懂,1000qps 其实对我们来说还不知道意味着生产是怎样的一个级别
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2635 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 15:29 · PVG 23:29 · LAX 07:29 · JFK 10:29
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.