写点什么

从成本角度看 Java 微服务

2017 年 11 月 01 日

近年来,微服务因其良好的灵活性和伸缩性等特点备受追捧,很多公司开始采用微服务架构或将已有的单体系统改造成微服务。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 也解释说,成本只是在采用微服务时需要考虑的众多因素当中的一个。除了成本,还需要考虑开发语言适用性等方面的问题。不过对于大型企业来说,他们拥有大量的微服务,成本仍然是一个重要的考虑因素,毕竟一年下来,有可能为他们节省数百万美元。


感谢郭蕾对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(微信号: InfoQChina )关注我们。

2017 年 11 月 01 日 19:004294
用户头像

发布了 321 篇内容, 共 108.1 次阅读, 收获喜欢 101 次。

关注

评论

发布
暂无评论
发现更多内容

什么时候去面试

escray

同一浏览器只允许登录一个账号

brave heart

Vue 前端

ARTS打卡week#1

对方正在输入…

ARTS 打卡计划

带你学够浪:Go语言基础系列 - 8分钟学控制流语句

柠檬橙

golang 后台开发

Hive底层执行引擎的深度剖析(免费)

奈学教育

大数据 hive

谈谈控制感(13):为什么是旁观者清?

史方远

读书笔记 个人成长 心理学 随笔杂谈

redis持久化RDB与AOF

wjchenge

redis

架构演变之路:为何要搞微服务架构?

arthinking

Kubernetes 微服务 dubbo SpringCloud

【vue-openlayers】弹窗

学习委员

html Vue 前端 openlayers ol

初识 LeetCode

Puran

LeetCode arts

洞悉MySQL底层架构:游走在缓冲与磁盘之间

arthinking

MySQL 数据库 MVCC

霸榜18年,作者连续20年获得微软MVP,这本SQL书凭什么成为畅销经典

图灵社区

数据库 SQL语法 sql查询

Vim使用总结

JDoe

vim

SpringBatch系列入门之Tasklet

稻草鸟人

spring SpringBatch 批处理

程序员的晚餐 | 6 月 2 日 红烧鸡爪的味道

清远

美食

有的线程它死了,于是它变成一道面试题。

why技术

源码分析 jdk源码 线程池 Java 面试

工作的创新能力

夜来妖

产品 重新理解创业 产品经理 创新突破 创新

Java 最新的JDK14.0.1调试成功

程李文华

奈学大数据开发工程师分享787个技术,快来收割

奈学教育

大数据

手机是21世纪最成功的毒品

Neco.W

学习 提升效率 工作

我们是活着,而不是活过

小天同学

个人感想 生活,随想 随笔杂谈 日常思考

微信小程序开发 | 如何在小程序中使用自定义 icon 图标

彭宏豪95

微信小程序 学习 编程 前端 IT

安全做到首位 统信UOS后激勃发

统小信uos

网络安全 操作系统

LeetCode | 1. Two Sum 两数之和

Puran

Python C# 算法 LeetCode arts

坚持ARTS-week2

王钰淇

ARTS 打卡计划

路漫漫其修远兮

无心水

Docker 搭建 Postgres + pgAdmin 环境

姜雨生

Docker DevOps postgres

一文入门JVM虚拟机

Simon郎

深入理解JVM

分布式事务 - 理论模型

Java收录阁

分布式事务

【译】业务转型是什么?

涛哥

业务中台 数字化转型

美国黑客曝出政府惊天内幕,看区块链如何解决!

CECBC区块链专委会

CECBC 区块链技术 民生 不可篡改 信息公开

InfoQ 极客传媒开发者生态共创计划线上发布会

InfoQ 极客传媒开发者生态共创计划线上发布会

从成本角度看Java微服务-InfoQ