你好,游客 登录 注册 搜索
背景:
阅读新闻

从成本角度看Java微服务

[日期:2017-11-02] 来源:infoq.com  作者:薛命灯 [字体: ]

近年来,微服务因其良好的灵活性和伸缩性等特点备受追捧,很多公司开始采用微服务架构或将已有的单体系统改造成微服务。IBM也于近日开源了轻量级Java微服务应用服务器Open Liberty。但是采用Java开发微服务真的是最好的选择吗?来自JPmorgan的高级工程师Elliot Forbes基于自身的经历,从成本角度进行分析,并与其他语言的微服务做了对比,很好地回答了这个问题。

Elliot所在的团队最初使用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美元左右,可以说是减少了一个数量级。

不过Elliot也解释说,成本只是在采用微服务时需要考虑的众多因素当中的一个。除了成本,还需要考虑开发语言适用性等方面的问题。不过对于大型企业来说,他们拥有大量的微服务,成本仍然是一个重要的考虑因素,毕竟一年下来,有可能为他们节省数百万美元。

本文永久更新链接地址http://www.linuxidc.com/Linux/2017-11/148197.htm

linux
相关资讯       Java微服务 
本文评论   查看全部评论 (0)
表情: 表情 姓名: 字数

       

评论声明
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款