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

关于 elasticsearch 机器的选择

  •  
  •   Q9K · 84 天前 · 2034 次点击
    这是一个创建于 84 天前的主题,其中的信息可能已经有所发展或是发生改变。

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


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

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

    给你的建议:鉴于 es 是高性能的 IO Java 应用程序,把 2000 买一台 CPU:内存比是 1:2 的 SSD vps 服务器,运行单节点 es
    验收的时候,不走真实的业务数据的 es 查询,随便造一点数据作为验收就可以了
    另外 500 块,小组的人一起吃个饭,(逃~
    iomect
        18
    iomect  
       84 天前
    按最小的 1000qps 来算 每秒查询 1000 次
    一分钟 6 万次
    一小时 360 万次
    一天 8640 万次
    2.5k 解决这个?
    Q9K
        19
    Q9K  
    OP
       84 天前
    @iomect 啊这,还是我们太天真了吗,我们想的是大部分没有那么大的压力,只有压测的时候需要达到这样的要求
    neoblackcap
        20
    neoblackcap  
       84 天前
    @Q9K 一般校园系统,不是什么选课之类的活动,100qps 差不多了。而且很多时候是可以在前端人为控制速率的。还能加队列慢慢处理。
    而且 es 也要看索引以及分词做得好不好,不是说你们上了就能做到 10000qps 。腾讯他们自己分享过,他们的 QQ 登录服务器也是 1000qps 这个量级
    neoblackcap
        21
    neoblackcap  
       84 天前
    @Q9K 当然了,腾讯那边是每台是 1000qps 这样子,不过他们是有做分流
    cdlnls
        22
    cdlnls  
       84 天前
    如果内存能一次性放下所有的文档索引,磁盘 io 就算不用高配的,也没啥问题。数据量在几亿条,内存应该是够的。
    如果是我的话,大概率会选几个 4C/32G ,700 一块钱/月。3 台正好 2100 。

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