写点什么

微服务架构宜缓行

  • 2015-06-15
  • 本文字数:989 字

    阅读完需:约 3 分钟

前不久,ThoughtWorks 首席科学家 Martin Fowler 发表了一篇博文,探讨 MonolithFirst 策略。他写道:

除非你的系统太复杂,作为单体应用会很难管理,否则不要考虑微服务。绝大多数软件系统都应该构建为单体应用。要注重在单体应用中实现良好的模块化,但不要试图将其拆分成单独的服务。

Tyler Treat 是来自 Workiva 的一名软件开发人员,同时也是咨询公司 Clarion Media 的创建者。近日,他发表了一篇博文《非面向服务的架构》(DOA)。文中,他对Fowler 的观点表示了赞同,同时他指出,团队迫不及待地采用微服务架构,一个原因是像Fowler 所说的那样,他们不了解微服务的固有开销,另外一个原因是他们只看到了像Netflix 公司这样的成功案例,却没有意识到那些公司并不是从微服务开始的,也就是说,是“微服务妒羡(microservice envy)”导致团队作出了那样的选择。

微服务确实有许多优点:“反脆弱性(anti-fragility)”、容错、独立部署与扩展、架构抽象、技术隔离。但并不是说采用了微服务就自然地具备了这些特性。比如,要具备反脆弱性,需要充分考虑分布式系统的不确定性,清楚异步、网络划分、节点故障、平衡可用性与数据一致性等问题。同样地,要具备可维护性和可扩展性,首先要有恰当的基础设施和组织结构。理论上讲,微服务可以提高开发速度,但在创建组织依赖时,“微服务佣金(MicroservicePremium)”可能会降低开发速度。所以,采用微服务架构需要具备一些先决条件,包括恰当的持续发布管道、能胜任的DevOps 和Ops 团队、审慎的服务边界等等。此外,周密的测试和集成模式也很重要。

而提到“单体(monolith)”,人们就会想到不可扩展、不可维护、缺乏弹性。但实际上,只要规模合理,单体系统也可以具有模块化、可维护、容错等特性。

因此,Treat 认为,自下而上的方法是一种更好的微服务实施策略。像Fowler 所说的那样,从单体或一个粗粒度服务的小集合开始,在有了足够的服务维护和部署经验后,再逐步分离出更细粒度的服务。

总之,微服务需要很高的组织和系统成熟度。否则,匆忙采用只能创建出一个“非面向服务的架构(disservice-oriented architecture)”。


感谢郭蕾对本文的审校。

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

2015-06-15 21:302769
用户头像

发布了 1008 篇内容, 共 422.1 次阅读, 收获喜欢 346 次。

关注

评论

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

2021年冲刺年薪40w,Java从基础到高级知识点汇总

Java 面试 后端

2021年哔哩哔哩Java高级面试题及答案,大牛手把手教你

Java 面试 后端

2021年抓住金三银四涨薪好时机,借花献佛

Java 面试 后端

2021年网易Java岗面试必问,Java开发面试准备

Java 面试 后端

2021年腾讯Java高级面试题及答案,百度笔试题百度校招面试经验

Java 面试 后端

如何画UML,几种简单的模型分析

编程 架构 面试 后端

2021年字节跳动、阿里等大厂最全Java面试题,1个月学会Java开发

Java 面试 后端

2021年这些高频面试知识点最后再发一次,面试官突击一问

Java 面试 后端

2021年你与字节跳动只差这份笔记,大神码了2000页Spring全家桶笔记

Java 面试 后端

好看视频Android重构——围绕于播放器的重构实践

百度Geek说

性能优化 大前端 好看视频 播放器

2021年最新Java大厂面试笔试题分享,Java入门教程免费视频

Java 面试 后端

“工业互联 在云之洲”丨“5G+AR”远程协助作业解决方案 赋能装备更智能

云计算,

2021年最新腾讯Java面经,Java面试高级题目

Java 面试 后端

2021年阿里Java面试题及答案,多图详解CLH锁的原理与实现

Java 面试 后端

2021年阿里Java高级面试题分享,【MySQL

Java 面试 后端

2021年哔哩哔哩Java高级面试题及答案,Java实战视频下载

Java 面试 后端

2021年大厂Java高级面试题分享,程序员Java基础入门

Java 面试 后端

2021年最新Java面试点梳理,阿里P7大牛整理

Java 面试 后端

GraphQL 快速入门「3」GraphQL 架构

码语者

Rest GraphSL

设计 | ClickHouse 分布式表实现数据同步

RadonDB

数据库 Clickhouse

QOE 驱动下的分布式实时网络构建:Agora SD-RTN 的演进

声网

Java 人工智能 分布式 网络

2021年最新Java面试经历,别再说自己不会了

Java 面试 后端

2021年阿里Java面试题及答案,Java高级进阶学习资料

Java 面试 后端

2021年抓住金三银四涨薪好时机,腾讯Java社招面试流程

Java 面试 后端

2021年华为Java面试真题解析,大厂面试必问

Java 面试 后端

一个简单的产品分析模型

石云升

产品经理 产品思维 9月日更 产品分析

2021年春招Java面试题,大厂Java核心面试题出炉

Java 面试 后端

2021年是意义非凡的一年,2021阿里+头条+腾讯等大厂Java笔试题分享

Java 面试 后端

说下你可能没用过的EventBus

艾小仙

2021我是如何拿到小米、京东、字节的offer,持久化数据安全RDB、AOF

Java 面试 后端

2021年京东Java岗面试必问,我在华为做Java外包的真实经历

Java 面试 后端

微服务架构宜缓行_SOA_谢丽_InfoQ精选文章