中大型 I/O 密集型微服务项目,搭建测试环境方案 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
wyfig
V2EX    程序员

中大型 I/O 密集型微服务项目,搭建测试环境方案

  •  
  •   wyfig 2024-06-02 10:54:12 +08:00 2583 次点击
    这是一个创建于 496 天前的主题,其中的信息可能已经有所发展或是发生改变。

    目前有个线上运行的项目,用 spring boot 开发的微服务项目,总过大概五六十个微服务,项目部署在十多台阿里云 4 核 16GB 服务器上,个别是 32G 的。想搭建一个一样的一套测试环境,用来方便后续测试和开发。按照服务器配置和使用率算了下,总过至少需要 100G 的内存,但是项目对 cpu 的需求很低。

    目前想到的方案中直接再租用一套阿里云的服务器来部署费用是惊人的。本地部署的话,目前手头上没有那么大内存的电脑。网上搜了下,看到有 dell r730 这样的二手服务器,费用倒是不贵,淘宝上看到 2000 多就可以配置出来。但是可能功耗和声音太大,功耗还好,只是电费多一些,声音太大的话比较麻烦,朋友的项目,所以如果本地部署就是放在自己家里。

    有没有相比而言更好的方案可以把项目跑起来的,只要能够折腾测试和开发就可以。

    本地部署的网络方案可以看上个帖子 家用公网 ip 多域名映射方法如何实现 https://v2ex.com/t/1045897#reply35

    14 条回复    2024-06-03 18:12:02 +08:00
    mxtob
        1
    mxtob  
       2024-06-02 11:46:57 +08:00   1
    io 密集,java 吃内存,稳定不常改动业务转移到 go,未来成本有很大下降空间.

    测试业务自动化,剩下 io,规模化,分布式交互带来问题.
    高 io 是吃内存,但是某个业务一旦出现故障或者瓶颈,cpu 可能会飙升,LB,NAT 其他中间件也可能会受影响.最好每隔段时间,在阿里云部署一整套,选择按量付费,租用一段时间,高并发压测下,模拟线上 2-3 倍流量.

    如果打算用非云服务,搭建时间成本难以估量,可以选择便宜的云商部署一套测试环境 ,阿里云这种就生产使用.

    一整套测试环境全部部署,这块随着业务增长,会越来越不可能.
    部分服务设计成不区分测试环境和生产环境使用,限流机制要做好.
    只有高频改动的业务才长期部署;非高频业务只有改动时候,暂时在测试环境部署下.
    codegenerator
        2
    codegenerator  
       2024-06-02 12:37:00 +08:00
    用 pc 机器就行了
    106npo
        3
    106npo  
       2024-06-02 12:42:02 +08:00 via Android
    物理机找个机房托管也可以
    mark2025
        4
    mark2025  
       2024-06-02 12:43:41 +08:00
    pc 机 32G x 4 就是 128G ,64G x 4 就是 256G ,内存肯定够用的
    davehandong
        5
    davehandong  
       2024-06-02 12:43:41 +08:00
    只是测试开发的话,如果身边有一些个旧电脑是不是可以利用一下
    wyfig
        6
    wyfig  
    OP
       2024-06-02 13:50:19 +08:00 via iPhone
    @mxtob 现有的业务改动不大,现在是 spring boot 开发的微服务但是没有上 docker 。不知道有没有可能把系统改造成 docker+k8s 来部署和管理,不改变业务本身,不知道是不是难度很大。
    R4rvZ6agNVWr56V0
        7
    R4rvZ6agNVWr56V0  
       2024-06-02 13:55:30 +08:00
    买一台准工作站配置的志强 cpu 的 pc 就行了,2000 以内搞定。
    hallDrawnel
        8
    hallDrawnel  
       2024-06-02 14:49:53 +08:00
    没有容器化的话确实有点复杂哦。
    我们容器化的业务直接新开一个集群后,复制粘贴资源过去就行了,然后网关改改配置,服务留一份测试环境的配置就齐活了。甚至可以写工具检查测试环境和生产环境的一致性。
    xiaotianhu
        9
    xiaotianhu  
       2024-06-03 12:12:16 +08:00
    声音最好办了,之前创业公司就用这种服务器,暴力扇都拆了,开盖跑,换几个 PC 上的静音风扇怼 CPU 上,再不行弄个大风扇对着主板吹,方案很多的。
    CodeCodeStudy
        10
    CodeCodeStudy  
       2024-06-03 13:46:03 +08:00
    才十多台 4 核 16GB 服务器,就搞五六十个微服务吗?这划分的颗粒度也太小了吧?
    1178615156
        11
    1178615156  
       2024-06-03 16:25:53 +08:00
    @wyfig
    我这迁移过,其实把 spirng boot 迁移到 docker+k8s 难度不大,加个 maven 插件就能把项目打包成 docker 镜像,之后写个 yaml 配置就行了.
    服务器可以换成 4 核 32G 的这样会省能很多.
    还有 java 程序,按照微服务设计,一般一个程序只要 300-500M,是不是真的需要 100G 的内存?
    wyfig
        12
    wyfig  
    OP
       2024-06-03 16:44:16 +08:00
    @1178615156 #11 100G 是我根据现在的服务器每台的配置 * 内存使用率,这么加到一起总共 100G 。五六十个微服务部署在 10 多台阿里云服务器上面,不清楚如果打包成 docker 项目后,最终会是多少内存。
    1178615156
        13
    1178615156  
       2024-06-03 17:01:59 +08:00
    @wyfig 一样,容器并不会多花内存,以及容器更好对程序的内存作管理,或许还能减少内存使用.
    sampeng
        14
    sampeng  
       2024-06-03 18:12:02 +08:00
    说的好像上了 k8s 后就不要 100G 内存一样。。。。

    合理方式是:合并微服务。java 的项目。你微服务越多,内存浪费越多。99%的项目,不需要拆他 5-60 个微服务。

    合并一半就节省一半云成本。。。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2200 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 26ms UTC 00:48 PVG 08:48 LAX 17:48 JFK 20:48
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86