极客视点
极客时间编辑部
极客时间编辑部
113230 人已学习
免费领取
课程目录
已完结/共 3766 讲
2020年09月 (90讲)
时长 05:33
2020年08月 (93讲)
2020年07月 (93讲)
时长 05:51
2020年06月 (90讲)
2020年05月 (93讲)
2020年04月 (90讲)
2020年03月 (92讲)
时长 04:14
2020年02月 (87讲)
2020年01月 (91讲)
时长 00:00
2019年12月 (93讲)
2019年11月 (89讲)
2019年10月 (92讲)
2019年09月 (90讲)
时长 00:00
2019年08月 (91讲)
2019年07月 (92讲)
时长 03:45
2019年06月 (90讲)
2019年05月 (99讲)
2019年04月 (114讲)
2019年03月 (122讲)
2019年02月 (102讲)
2019年01月 (104讲)
2018年12月 (98讲)
2018年11月 (105讲)
时长 01:23
2018年10月 (123讲)
时长 02:06
2018年09月 (119讲)
2018年08月 (123讲)
2018年07月 (124讲)
2018年06月 (119讲)
时长 02:11
2018年05月 (124讲)
时长 03:16
2018年04月 (120讲)
2018年03月 (124讲)
2018年02月 (112讲)
2018年01月 (124讲)
时长 02:30
时长 02:34
2017年12月 (124讲)
时长 03:09
2017年11月 (120讲)
2017年10月 (86讲)
时长 03:18
时长 03:31
时长 04:25
极客视点
15
15
1.0x
00:00/02:25
登录|注册

从成本角度看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强。
收起评论
显示
设置
留言
1
收藏
25
沉浸
阅读
分享
手机端
快捷键
回顶部