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

分布式架构 是买一台高配的服务器(比如 8C16g 或 8C32g)比较好 还是买多台低配的服务器(比如 2C4g 买 4 台)

  •  
  •   KarlChen2015 · 2020-09-25 11:35:01 +08:00 · 5397 次点击
    这是一个创建于 1518 天前的主题,其中的信息可能已经有所发展或是发生改变。
    第 1 条附言  ·  2020-09-26 22:23:10 +08:00
    换个问法:4 个应用部署在一台机子(8C16g)好,还是部署在 4 台机子(2C4g * 4)好
    第 2 条附言  ·  2020-09-26 22:24:44 +08:00
    大家不要再回答主从或者双机热备等等了,本题目和可用性无关,我只是想问问硬件部署方式
    34 条回复    2020-09-27 09:58:29 +08:00
    KarlChen2015
        1
    KarlChen2015  
    OP
       2020-09-25 11:35:08 +08:00
    这里不需要考虑主备或者负载均衡问题 因为前面的服务器不管怎么买,都是一整套系统,会基于此配置部署 2~3 套做负载均衡
    KarlChen2015
        2
    KarlChen2015  
    OP
       2020-09-25 11:37:19 +08:00
    在某云上 一台 8C16g 的价格=2C4g * 4 所以硬件成本几乎一样
    duhongle
        3
    duhongle  
       2020-09-25 11:40:49 +08:00
    建议多台低配都服务器,,最起码 I/O 能提升不少。。。
    cccp2020
        4
    cccp2020  
       2020-09-25 11:43:02 +08:00
    多态吧,起码能容错
    linvaux
        5
    linvaux  
       2020-09-25 11:43:30 +08:00 via iPhone
    买一台的话,一点都不“分布式”
    zhenjiangidc
        6
    zhenjiangidc  
       2020-09-25 11:46:00 +08:00
    不要把鸡蛋放一个篮子里面,
    KarlChen2015
        7
    KarlChen2015  
    OP
       2020-09-25 11:48:44 +08:00
    @duhongle I/O 多台其实是不升反降了 aws 的 IO 是根据硬盘容量计算的 单一硬盘越大 IO 越大
    coderxy
        8
    coderxy  
       2020-09-25 11:53:00 +08:00
    单台你就没法保证高可用。
    shakoon
        9
    shakoon  
       2020-09-25 12:01:26 +08:00
    我觉得没必要。云服务器底层都是物理机的集群,各种硬件资源都是分散的,硬盘也是接的存储,所以单个机器和多个机器不存在明显的性能差异。除非你的应用本身是不支持多线程的,那分几个机器做集群才能提高总体效率。另外,即便性能相同,集群还有一个优势就是高可用性比单机要高得多,对于重要业务来说连续性是远比性能重要的。
    reus
        10
    reus  
       2020-09-25 12:16:11 +08:00
    测试一下不就知道了
    KarlChen2015
        11
    KarlChen2015  
    OP
       2020-09-25 12:41:19 +08:00
    @KarlChen2015 注意是 4 个应用,是部署在 1 台高配机还是分开部署在 4 台机的问题
    ericgui
        12
    ericgui  
       2020-09-25 12:45:08 +08:00
    我以为分布式就是因为一台机器不够用了才搞分布式。。。。。。。。
    opengps
        13
    opengps  
       2020-09-25 12:54:04 +08:00 via Android
    如果你是分布式弹性架构,那么放心的买多台
    wangyanrui
        14
    wangyanrui  
       2020-09-25 13:13:21 +08:00 via Android
    看性能损耗在哪里,才能明确到底是买什么类型
    空谈没答案
    xuanbg
        15
    xuanbg  
       2020-09-25 13:19:20 +08:00
    多台√
    单台×
    mawenjian
        16
    mawenjian  
       2020-09-25 13:29:47 +08:00 via Android
    现在稍微重要点的业务都得双机热备吧,如果连灾备都不用考虑,我更怀疑是否有必要用“分布式架构”。
    ArJun
        17
    ArJun  
       2020-09-25 14:05:37 +08:00
    肯定优先多台吧,kvm 虚拟化下高性能不见得优势大很多
    duhongle
        18
    duhongle  
       2020-09-25 14:20:00 +08:00
    @KarlChen2015 AWS 中的硬盘我不知道什么情况。。。阿里云上,SSD 云盘 买的越大(数据磁盘大于 60G )性能越好。。。但是高效云盘中,我们测试 Kafka 集群。。。多台部署 ECS 使用高效云盘,处理能力提升还是比价明显的。。
    Lockeysama
        19
    Lockeysama  
       2020-09-25 14:54:19 +08:00
    多台吧,至少挂掉一台的时候,不至于全部服务不可用(服务有主备模式之类的就更香了)
    whileFalse
        20
    whileFalse  
       2020-09-25 16:19:36 +08:00
    每个服务只跑一个实例?
    chenzheyu
        21
    chenzheyu  
       2020-09-25 17:17:51 +08:00
    数据库之类的一定要大,性能牛逼的。像 nginx 跟 php-fpm 之类的随意拓展的无所谓啊
    misaka19000
        22
    misaka19000  
       2020-09-25 17:29:06 +08:00
    肯定多台
    brendanliu
        23
    brendanliu  
       2020-09-25 17:38:47 +08:00
    分布式建议多台
    fancyhan
        24
    fancyhan  
       2020-09-25 17:42:27 +08:00
    2C6g,四台放在不同机房,最好跨一个服务商
    rainbirda
        25
    rainbirda  
       2020-09-25 17:50:32 +08:00
    分布式架构最少的两台吧,保证可用性,为啥不整 2 台 4C8G?
    cominghome
        26
    cominghome  
       2020-09-25 18:47:43 +08:00
    看需求,普通 Java 应用的话,实例拆越小越好,2c4g 跑一个进程正好
    asuraa
        27
    asuraa  
       2020-09-25 22:12:07 +08:00
    反正我们的 k8s 是 8h16g 的节点
    jerryshao
        28
    jerryshao  
       2020-09-26 05:39:03 +08:00
    我的理解是这一套搭在不同地域或者同一区域的不同可用区然后前面加负载均衡。

    可以自己先做一下测试,比如在一个可用区启动 2 个 2C4G 和一个 8C16G,给前面两个 50%的负载,后面一个 50%的负载。不断增加请求,看看 CPU,内存,硬盘吞吐等等指标的情况,找一下性能瓶颈再决定单机还是多机。

    前两个月也可以先用 on demand 看看,太着急包年买可能会造成浪费。
    lsnl8480
        29
    lsnl8480  
       2020-09-26 12:05:36 +08:00
    os 的基础损耗差不多在 0.5v 左右,资源不多的话,不建议分太多虚拟机,计算资源都浪费在 os 损耗上了。
    KarlChen2015
        30
    KarlChen2015  
    OP
       2020-09-26 22:17:13 +08:00
    @mawenjian 我可能标题写的不够清楚,我的意思是多个应用部署在一台机子上 还是部署在多台机子上的问题,比如 4 个应用部署在一台机子或者四台机子上,再基于此部署方式作双机(部署两套)负载均衡
    KarlChen2015
        31
    KarlChen2015  
    OP
       2020-09-26 22:18:55 +08:00
    @Lockeysama 你没 get 我的提问...
    KarlChen2015
        32
    KarlChen2015  
    OP
       2020-09-26 22:19:26 +08:00
    @rainbirda 你没 get 我的提问...
    young1lin
        33
    young1lin  
       2020-09-27 09:38:25 +08:00
    一台机器上更方便,如果其他应用内存不够了,刚好有一个应用不常用,使用内存或者 cpu 资源少,可以这么做。
    多台机器增加了部署以及运维的成本,而且耗流量。
    当然,如果你要完全隔离所有应用的资源,那当我没说。
    Lockeysama
        34
    Lockeysama  
       2020-09-27 09:58:29 +08:00
    @KarlChen2015 各有优势劣势,从运维来说:多台机子运维成本增加是必然的,但是是故障恢复的时候,程序设计的合理的话,多台恢复比一台的要简单些(不太可能多台同时 GG,只要恢复其中故障的一两个就行);从网络角度来说:服务程序间通信,在一台内总是比多台内更稳定可靠快速的(如果现在体量没那么大的话,这些差别根本不重要);个人是比较习惯用多台低配这种方案的,觉得按照这种方式去优化架构的话,之后业务增长了,去做服务横向扩展这些的时候,能避免掉一些坑(主要是网络通信问题)。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1226 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 18:01 · PVG 02:01 · LAX 10:01 · JFK 13:01
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.