2天时间,聊今年最热的 Agent、上下文工程、AI 产品创新等话题。2025 年最后一场~ 了解详情
写点什么

用罢即弃的微服务

  • 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:002280

评论

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

基于增强与迁移学习的糖尿病视网膜病变分级方法

qife122

深度学习 迁移学习

华为云云服务高级顾问叶正晖:华为对多模态大模型的思考与实践

数新网络官方账号

AWS新工具推荐移除未使用的权限

qife122

AWS 权限管理

跨行星共识(IPC)实现区块链突破性扩展

qife122

区块链 web3

Splunk Enterprise 10.0.0 发布,新增功能简介

sysin

Splunk Enterprise

攻破天网系统——Real World CTF (2022) 解题实录

qife122

CTF SQL注入

VMware NSX 4.2.3 发布,新增功能概览

sysin

nsx

IK 字段级别词典升级:IK reload API

极限实验室

ik easysearch

VMware ESXi 8.0U3g macOS Unlocker & OEM BIOS 2.7 标准版和厂商定制版

sysin

esxi

后量子密码学的真正价值:超越量子威胁的密码革新

qife122

网络安全 密码学

基于Ollivier-Ricci曲率的流形结构恢复算法

qife122

机器学习 计算几何

Metasploit Framework 6.4.76 (macOS, Linux, Windows) - 开源渗透测试框架

sysin

Metasploit

SonarQube Server 2025 Release 4 新增功能简介 - 代码质量、安全与静态分析工具

sysin

SonarQube

Animate.css - 轻松实现网页动画效果

qife122

CSS 前端

保护通信安全:端到端加密实战指南

qife122

网络安全 signal

JT-Math:大语言模型高级数学推理的多阶段框架

qife122

强化学习 大语言模型

Shotcut 25.07 (Linux, macOS, Windows) - 免费开源视频编辑器

sysin

Shotcut

VMware ESXi 8.0U3g macOS Unlocker & OEM BIOS 2.7 集成网卡驱动和 NVMe 驱动 (集成驱动版)

sysin

esxi

[大厂实践] Netflix 分布式计数器抽象

俞凡

架构 大厂实践

低能离子束芯片编辑技术实现高效设计

qife122

芯片设计 硬件优化

Studio 3T 2025.13 (macOS, Linux, Windows) - MongoDB 的终极 GUI、IDE 和 客户端

sysin

Studio 3T

Nexpose 8.16.0 for Linux & Windows - 漏洞扫描

sysin

Nexpose

AI如何重塑芯片设计未来

qife122

芯片设计 半导体技术

VC维度1概念类的差分隐私学习器最优解

qife122

差分隐私 VC维度

javax.security.auth.login.LoginException: Cannot locate KDC

刘大猫

人工智能 数据挖掘 算法 LoginException 算法数据分析

设备端语音处理技术解析

qife122

语音识别 模型压缩

某机构测试新型"氛围编程"工具Opal

qife122

AI编程 应用生成

NSF与某机构公布AI公平性资助项目

qife122

人工智能 算法公平性

自研 DSL 神器:万字拆解 ANTLR 4 核心原理与高级应用

Java随想录

编译 #java

什么是列存储(Columnar Storage)?深度解析其原理与应用场景

镜舟科技

数据分析 StarRocks 湖仓一体 列存储 延迟物化

Metasploit Pro 4.22.8-2025071801 (Linux, Windows) - 专业渗透测试框架

sysin

Metasploit

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