从成本角度看Java微服务
极客时间编辑部
讲述:杜力大小:1.11M时长:02:25
近年来,微服务因其良好的灵活性和伸缩性等特点备受追捧,很多公司开始采用微服务架构或将已有的单体系统改造成微服务。IBM 也于近日开源了轻量级 Java 微服务应用服务器 Open Liberty。
但是采用 Java 开发微服务真的是最好的选择吗?来自 JPmorgan 的高级工程师埃利奥特·福布斯(Elliot Forbes)基于自身的经历,从成本角度进行分析,并与其他语言的微服务做了对比,很好地回答了这个问题。
埃利奥特所在的团队最初使用 Java 开发了一个单体系统。他们的生产环境总共有 12 台服务器,每台服务器上部署了 20 到 30 个实例,每个实例使用 8G 内存。这样,总共耗费了 1.5T 到 2.5T 内存。
后来,他们将单体拆解成 5 个微服务,并使用容器来部署微服务。每个容器运行一个微服务,因为是基于 JVM 的,所以至少需要 1G 内存。原先的一个单体实例使用 8G 内存,拆成微服务后总共只需要 5G 到 6G 内存,省下了至少 2G 内存。
但事情不会就这么简单。他们当中的一个微服务负责对外提供 REST API,是整个系统最为关键的部分。为了提高可用性,他们在欧洲、北美和亚洲分别部署了 4 个实例。这样一来,这个微服务总共使用了 12G 内存,所以整体的内存使用反而增加了不少。
而如果使用 Go 语言替代 Java 开发微服务会怎样呢?每个微服务的内存可以从 1G 降到 64M,那么之前那个部署了 12 个实例的微服务总共只需要 768M 内存,这比之前的单个 Java 微服务实例用的内存还要少。
假设微服务是部署在谷歌云平台上的,按照 GCP 的收费标准,1G 内存每小时收费在 1 美分到 2 美分之间,一年大概需要 87 美元到 175 美元,那么 12G 内存一年至少要花费 1000 美元,5 个微服务加起来一年至少需要 5000 美元。而如果使用 Go 语言,这个数字差不多是在 500 美元左右,可以说是减少了一个数量级。
不过埃利奥特也解释说,成本只是在采用微服务时需要考虑的众多因素当中的一个。除了成本,还需要考虑开发语言适用性等方面的问题。不过对于大型企业来说,他们拥有大量的微服务,成本仍然是一个重要的考虑因素,毕竟一年下来,有可能为他们节省数百万美元。
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
该免费文章来自《极客视点》,如需阅读全部文章,
请先领取课程
请先领取课程
免费领取
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
全部留言(1)
- 最新
- 精选
- Geek_f39659不知是翻译的问题还是原文问题。这篇文章讲的不清不楚,讲的故事对初学者有一定误导性。只字不提CPU使用情况,说的好像他们之所以需要12台服务器是需要那么多机器才能满足他们的内存需求似的。实际中绝大多数时候应用都是CPU intensive,需要12台机器多半是为了总系统吞吐量冗余+灾备。 当然,这点差别并不改变文章的结论。用Go之后不管固定内存开销还是CPU使用都比JAVA省不少。除此之外还有GC时间可控这个杀手锏(这点对P99要求高的项目来说至关重要),总的来说如果不是因为人才储备和经验储备原因,go 在各方面都比JAVA强。
收起评论