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

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

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

    目前有个线上运行的项目,用 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  
       156 天前   ❤️ 1
    io 密集,java 吃内存,稳定不常改动业务转移到 go,未来成本有很大下降空间.

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

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

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

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

    合并一半就节省一半云成本。。。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1064 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 19:56 · PVG 03:56 · LAX 11:56 · JFK 14:56
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.