QCon 演讲火热征集中,快来分享技术实践与洞见! 了解详情
写点什么

用罢即弃的微服务

  • 2015-11-03
  • 本文字数:1559 字

    阅读完需:约 5 分钟

最近, RedMonk 的 James Governor 写了一篇文章,作为他在 Dreamforce 上所做的关于微服务用后即弃的讲话的导言。正如 James 所说,他在最近的一次对话中有一个顿悟的时刻:

虽然经过改善的基础设施的用后即弃是采用容器的显著原因,但是这(用后即弃)对微服务实际上是具有决定意义的。

基本上,现在已经相当充分了解的对待基础设施的放牧牛群与豢养宠物两种方法的区别(由 Randy Bias InfoQ 和其他人讨论的)能够并且应当应用于微服务。

用后即弃经过了很长一段时间的发展——我还记得当我第一次听到谷歌如何处理硬件故障时的惊讶——只需要不时丢弃掉出问题的机器,而不需要立即采取任何行动。在谷歌,这样的软件架构意味着硬件变得可以丢弃了。今天这样的架构思想(理想)正在成为云原生软件的核心设计原则。

不可变更的基础设施的方法正在越来越多地被采用,正是解决可处理性的关键方面。 Chad Fowler 在 2013 年当他的公司第一次改为采用不可变更时,把这看作是解决升级基础设施的很多问题的一种方法,就要表达这些:

需要升级?没问题。构建一个新的、升级了的系统,把旧的丢弃。新的应用程序升级?同样处理。构建一台含有新版本的服务器(或者映像),丢弃旧的。

尽管象 Mitchell Hashimoto 在我们 2014 年的虚拟专家讨论中所说的,不可变更不是包治百病的灵丹妙药:

这有好处,也有缺点。总而言之,我相信这是更有力的选择,是前进的正确道路,但是重要的是要明白这不是银弹,而且会引入之前没有的问题(在解决其它问题时)。

当前不可变更集中在基础设施的级别,James 相信该模式可用于堆栈中更高的层次。引用另一篇来自 Stephen O’Grady 的更早的 RedMonk 的文章,其中 Stephen 问道,将来什么是基础设施的最基本单元?

容器和 Docker 通常把操作系统及其下面的一切看作共享的基质,普遍的基础,不过是数据中心提升的平台。对容器而言,构造的基本单元是应用程序。这才是唯一真正独特的组成元素。

在过去几年其他人也做出了类似的判断,微服务应当是用罢即弃的,而不必把它等同于不可变更。例如,Kief Morris 在此前的一篇文章中表达了下面的观点,虽然不是专门针对微服务的,但是仍然是相关的:

随着软件的持续发布,只需一次性编译应用程序的特定版本为可部署的工件,你就知道在所有环境中部署和运行的是一致性构建的应用程序,这样做越来越可靠。使用不可变更的服务器,针对基础映像做每一项改动,然后你就知道从那个映像创建的所有实例都是一致的。

我们今年早些时候报导了 Salesforce’s Pat Helland 如何认为不可变更改变了微服务和其它许多事情:

许多种计算都是“只追加的”。观测一直(或很长时间)被记录。衍生的结果进行计算(或定期预先计算)。而且:胆小鬼才标准化。

所以尽管不可变更和微服务是别人思考和实施了一段时间的,James 提到的关于用罢即弃的顿悟仍然是相对较少讨论的话题。尽管象 Galen Gruman 和 Alan Morrison 所说,这当然是微服务和不可变更的基础设施符合逻辑的演变:

请把 MSA 想成应用内(in-app)的几乎即插即用的对本地和外部的分散的服务的整合。这些服务预料会改变,一些最终变成可以丢弃的。当服务关注的焦点较小时,开发、理解、管理和整合也都变得简单,它们只做必要的事,在不需要时就可以删除或者忽略。

James 这样总结:

所以微服务必须是用罢即弃的。如果一个微服务失效或者被更好的服务取代,那就简单地处理掉旧的。

也许‘必须’是过于强烈的说法了?也许这是其他微服务开发者已经发觉自己正在使用或者正在转向采用的模式。

查看英文原文 Disposable Microservices


感谢张龙对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(微信号: InfoQChina )关注我们,并与我们的编辑和其他读者朋友交流(欢迎加入 InfoQ 读者交流群)。

2015-11-03 18:001886

评论

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

入门Python之后还是搞不定面试、做不来项目,推荐读读这本书

图灵教育

Python 编程 程序员

运维人必知必会的Zabbix核心命令

博文视点Broadview

CityClub 北京站马上开始!线下沙龙等你来!

InfoQ写作社区官方

热门活动

MacOS 系统如何把PHP版本升级到 7.4或者更高的版本呢,今天教程来啦

CRMEB

写作社区 2 周年,全员狂欢燥起来!

InfoQ写作社区官方

热门活动 InfoQ写作社区2周年

团队在线协作文档工具推荐

小炮

团队协作 文档协作

web前端培训-ES6 教程:全面了解 ES6 模块

@零度

前端 ES6

深度学习,如何选择GPU服务器?

Finovy Cloud

人工智能 深度学习 GPU服务器

波卡动态 | Moonbeam 上第一个3D NFT项目宣布合作

One Block Community

区块链 以太坊 polkadot 波卡 Moonbeam

恒源云(Gpushare)_新功能上线,你确定不进来看看?

恒源云

GPU服务器 GPU算力

真的是最全的一致性hash环讲解了

Java工程师

Java 架构 分布式 算法 hash

解读谷歌Pathways架构(一):Single-controller与Multi-controller

OneFlow

人工智能 机器学习 深度学习 架构 深度学习框架

Redis Stream 专为队列而生,别再用 List 实现队列了

码哥字节

Redis Stream Redis 数据结构 4月月更

OneBlock | 区块链人才聚集地,面向全球的Substrate 开发者社区

One Block Community

技术社区 #区块链#

如何使用阿里云容器服务保障容器的内存资源质量

阿里巴巴云原生

解决两大难题,TDengine 助力亿咖通打造自动驾驶技术典范

TDengine

数据库 tdengine 物联网

如何在云端重塑内容生产?来看这场虚拟人主持的发布会

阿里云CloudImagine

阿里云 音视频 视频剪辑 智能生产 视频云

招聘 | 多家区块链项目招募开发者!

One Block Community

区块链 招聘 波卡

Java培训-怎样通过 Bucket4j 提供速率限制

@零度

JAVA开发 Bucket4j

一文搞懂Netty发送数据全流程 | 你想知道的细节全在这里

bin的技术小屋

网络编程 Netty Java’ 4月月更 Reactor多线程

TiDB 6.0 发版:向企业级云数据库迈进

PingCAP

领域驱动设计(DDD)理论与方法

Java工程师

Java 程序员 互联网 DDD 架构设计

幸运哈希值竞猜游戏系统开发方案

薇電13242772558

区块链 哈希值

EMQ 映云科技 & 阿里云推出“一站式工业数字化解决方案”,共建产业数据湖生态圈

EMQ映云科技

阿里云 开源 物联网 IoT emq

Moonbeam 漏洞赏金计划,最高奖金 100 万美金!

One Block Community

区块链 波卡 Moonbeam

2022年3月国产数据库大事记-墨天轮

墨天轮

数据库 TiDB 国产数据库 KingBase gbase8a

3分钟了解Vue开发小程序的技术原理

FinClip

FinClip 与 uniapp:轻应用平台与前端开发框架

FinClip

大数据培训-Hive高频面试题分享

@零度

hive 大数据开发

CESS:波卡生态去中心化数据存储的未来

One Block Community

区块链 云存储 去中心化存储 CESS

基于云服务器ECS搭建网页游戏《浪剑天下》

阿里云弹性计算

玩转ECS 游戏服务器

用罢即弃的微服务_语言 & 开发_Mark Little_InfoQ精选文章