写点什么

微服务与单片应用之间的较量

  • 2014-08-22
  • 本文字数:800 字

    阅读完需:约 3 分钟

采用微服务是分解单片应用(monolithic application)的一种方式。这样做可以获得更高的解耦程度、关注点分离,以及快速部署等优势。但是,这并不是唯一也不是最好的方式。 Todd Hoff 对这两种架构方式进行了描述与比较

Todd 提到了今年早些时候在 twitter 上发生的一场辩论,这场辩论的参与者包括了 Adrian Cockcroft Sam Newman John Allspaw ( Etsy ),他们对微服务和单片应用之间的优缺点进行了比较。该辩论首先由 Adrian 发起,他声称在听了 QCon 伦敦 Etsy 的演讲之后,让他更清晰地认识到为什么单片应用是一个死胡同,而微服务应该可以取而代之从而能获得持续的可伸缩的部署。John 则指出,虽然微服务带来了更多的选择,但同时引入了更多的约束。而少量较容易理解的工具和模式反倒能带来优势。

Todd 将 Etsy 描述为一家成功的公司,因为该公司拥有着大约 150 个工程师,并且每天会部署超过 60 次的单个单片应用。在他的印象中,虽然很多人将单片应用视为反模式,但是 Etsy 通过采用例如持续集成、自动化部署、良好的监控等手段构建了这个大型的网站,并且做得很好,而且他们基本上都是从主分支进行部署的。

一个用于针对所谓的单片应用问题的解决方案是将它分解成一系列微服务,从而达到松耦合和独立部署这样的目标。但是 Todd 提出了质疑,微服务是达到上述目标的唯一或者最好的方式吗?他指出 Etsy 一天发布多次小型变更的方式也是可选方式的一个现成的例子。

Todd 强调 Etsy 目前一直在单片应用的方式下工作地很好,从而表示了对单片方式的支持。因为即使是在一个单片应用中,复杂度也可以被封装到每个服务之中。他将服务与代码库进行了比较,并表示只要是足够稳定的接口,也可以像拥有自己生命周期的独立产品一样对待。一旦接口发生变化,不管是使用代码库还是服务,新的版本就会创建。Todd 相信,只要基于合适的软件工程,单片的程序也可以工作地很好。

查看英文原文: Microservices vs Monolithic Applications

2014-08-22 00:391875
用户头像

发布了 52 篇内容, 共 25.2 次阅读, 收获喜欢 5 次。

关注

评论

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

Linux之nc命令

入门小站

Linux

IntelliJ IDEA 如何显示提交输入的信息历史

HoneyMoose

Vue进阶(六十四):iframe更改src后页面未刷新问题解决

No Silver Bullet

Vue iframe 跨域 8月日更

干货 | 数据为王,携程国际火车票的 ShardingSphere 之路

SphereEx

数据库 开源

带你入门antv.g6流程图

华为云开发者联盟

可视化 流程图 API graph 图可视化引擎

面对不同的业务场景,选择零码还是低码?

华为云开发者联盟

开发者 低代码 零代码 AppCube 业务场景

5年程序员问我:什么是断言?

CodeNongXiaoW

测试 后端 接口工具

mock.js的作用

与风逐梦

大前端 后端 Mock

Go,一文搞懂 defer 实现原理

微客鸟窝

Go 语言 8月日更

redis6安装和可视化工具

4ye

redis 后端 8月日更

接口管理工具ApiPost使用——(响应结果可视化)

Proud lion

大前端 后端 Postman 开发工具 接口文档

云小课 | 区块链关键技术之一:共识算法

华为云开发者联盟

区块链 区块链技术 共识机制 共识算法

在线JSON转YAML工具

入门小站

工具

百度地图开发-显示实时位置信息 04

Andy阿辉

android Android 小菜鸟 Android端 8月日更

微信业务架构图-外包学生管理系统架构

毛先生

架构实战营

netty系列之:在netty中使用protobuf协议

程序那些事

Java Netty 程序那些事

Rust从0到1-高级特性-Traits 进阶

rust Traits 高级特性

从Docker到Kubernetes | 爱数云原生演进历程

爱数技术范儿

Kubernetes 云原生

Week1 Homework

Ray_c

#架构实战营

JavaScript 有关数组的 slice 截断函数

HoneyMoose

面试侃集合 | SynchronousQueue公平模式篇

码农参上

队列 SynchronousQueue 8月日更

多云管理中的多租户解决方案

鲸品堂

多租户 多云管理 实践案例

游戏“外挂”?—— AI生成游戏最强攻略

华为云开发者联盟

AI 游戏 华为云

遗留系统演进

Kubernetes 微服务 etcd 架构设计原则 演进式架构

华为海外女科学家为您揭秘:GaussDB(for MySQL)云栈垂直集成的力量有多大?

华为云数据库小助手

华为云 GaussDB GaussDB(for MySQL)

合约量化系统开发(炒币合约/机器人炒币App)

获客I3O6O643Z97

智能合约 量化机器人 合约量化

微信业务架构和学生管理系统架构设计

Geek_db27b5

微信业务架构 学生管理系统架构

InnoDB解决幻读的方案——LBCC&MVCC

阿Q说代码

MySQL innodb MVCC 8月日更 LBCC

微信业务架构

一叶知秋

架构实战营

docker入门:vue和可视化界面的部署,另附ngxin配置

小鲍侃java

8月日更

sql task4 集合运算

橙橙橙橙汁丶

微服务与单片应用之间的较量_SOA_Jan Stenberg_InfoQ精选文章