写点什么

微服务架构之外的选择——基于服务架构

  • 2016-10-10
  • 本文字数:1170 字

    阅读完需:约 4 分钟

来自 ThoughtWorks 的主管 Neal Ford 在最近的一次演讲中表达了他对企业软件系统架构转型的看法,他认为从单体架构转向基于服务的架构要比转向微服务架构来得容易。Ford 在 UberConf 2016 大会上做了一次关于基于服务架构的演讲,基于服务架构是介于面向服务架构和微服务架构之间的一个中间地带。这里可以下载演讲幻灯片(PDF 格式)。

微服务架构有很多优点,不过Ford 建议应该把这些优点应用在新开发的项目上。对于已经采用了单体架构的组织来说,转向微服务架构有很多问题需要解决:分离代码,分离单体数据库,采用DevOps 方法,监控网络,管理分布式事务等。但是转向基于服务架构就不需要做这么多改变,只需要把系统代码分割成若干个以领域为中心的块。基于服务架构可以由几十个可部署的服务组成,并非像微服务支持者们所主张的成百上千个。这些服务可以有独立的数据库,也可以分享单个数据库。Ford 认为这是最为关键的不同点,因为他深知在转向微服务架构过程中,拆分数据库是最为复杂的部分。而微服务架构的优点只有在一定条件下才能得以体现,比如每个微服务对它们的数据具有独占所有权,或者有属于自己的数据库存储。

Ford 指出,微服务架构也会带来一些复杂性,比如调用关系链以及网络调用隐含的性能问题。单个微服务不管从业务领域方面还是从性能方面来说都很简单,易于理解。但如果是一群微服务,就不是这么回事了。基于服务架构按照领域把更大的代码块组合在一起,减少了网络调用,这样会带来更好的性能。原来可能需要若干个相关微服务的调用变成了单个服务的方法调用。

这种处在中间地带的架构方式是一种折衷的解决方案。微服务架构通过采用 DevOps 方法,把代码拆分成更小的可部署单元,在交付速度和伸缩性方面得到优化。基于服务架构比单体架构或面向服务架构具有更快的交付速度,它使用微服务架构和面向领域开发拥护者们所推崇的以领域为中心的方式对代码进行拆分。面向服务架构主张根据层而不是领域来对整体架构进行拆分,导致一个简单的业务变更会影响到多个层,需要更多的测试才能发布出去。以领域为中心的架构把测试范围减少到单个要发布的组件上,相比单体架构或面向服务架构交付得更快。要发布的组件越小,测试范围就越小,这就是微服务优化的目标。基于服务架构在提升软件交付速度方面也卓有成效。

最后,Ford 在多个方面对几种不同的架构进行了对比。他建议在高度集成的环境里使用面向服务架构,在新开发的项目上使用微服务架构,而基于服务架构主要用于对单体架构系统进行迁移。他认为单体架构不是最终状态。另一个资深的企业架构师 Mark Richards ,在 UberConf 上也带来了关于基于服务架构的演讲,他的演讲 PPT 可以从这里下载(PDF 格式)。他们和O’Reilly 合作制作了一个深入探讨这个主题的视频

查看英文原文: Service-Based Architecture As an Alternative to Microservice Architecture

2016-10-10 19:004331
用户头像

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

关注

评论

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

AliSSR 语音超分算法:让在线会议语音更明亮更自然

阿里云视频云

阿里云 音视频 智能降噪 音频3A 音频算法

重视软件开发的黑匣子

菜根老谭

bug 系统安全 程序日志

Apache ShardingSphere 首篇论文被 ICDE 收录,全球数据库发展迎来新局面

SphereEx

数据库 ShardingSphere SphereEx apache 社区

博文推荐|使用 Apache Pulsar 和 Scala 进行事件流处理

Apache Pulsar

开源 分布式 云原生 Apache Pulsar Apache Pulsar 社区

企业和团队如何创建高效实用的知识管理体系

小炮

知识管理 企业

最佳代码扫描工具,实现自动化代码扫描服务

阿里云云效

云计算 阿里云 开发 代码扫描 代码安全

艾特网能全面参与数据中心蒸发冷却空调系列标准编制

科技热闻

教你识别一些sequence的相关问题

华为云开发者联盟

序列 GaussDB(DWS) sequence GTM bind关系

大数据培训Hive 提高查询效率的方法

@零度

hive 大数据开发

哈尔滨市消防救援支队:用宜搭打造消防智慧大脑,守护冰城平安

钉钉宜搭低代码

低代码 数字化 消防 钉钉宜搭

web前端培训使用 Vue3来实现文章目录功能

@零度

Vue 前端开发

《LeetCode刷题报告》题解内容Ⅰ

謓泽

3月月更

车联网平台百万级消息吞吐架构设计|车联网系列专题 05

EMQ映云科技

车联网 物联网 IoT emq 3月月更

大咖说|网易数帆论道 PolarDB 数据库开源 & 存储生态

大咖说

数据库 阿里云 开源 网易

RocketMQ 开源爱好者请注意邀您共探行业应用与生产实践

阿里巴巴云原生

洞见科技参编的中国信通院《联邦学习场景应用研究报告》正式发布

洞见科技

联邦学习 隐私计算 中国信通院 洞见科技

阿里代码依赖漏洞检测服务,高效杜绝代码安全隐患

阿里云云效

云计算 阿里云 云原生 代码安全 依赖漏洞检测

TDengine 在蔚来能源系统的落地实践

TDengine

数据库 tdengine

面试突击34:如何使用线程池执行定时任务?

王磊

java面试

适合 Kubernetes 初学者的一些实战练习(二)

Jerry Wang

Kubernetes 云原生 Kubernetes 集群 Serverless Kubernetes 3月月更

直播回顾|TGIP-CN 036:Apache Pulsar 最新技术进展与动态

Apache Pulsar

开源 云原生 中间件 Apache Pulsar Apache Pulsar 社区

java培训JVM面试题分享

@零度

JVM JAVA开发

go 1.18 bufio 包中的 Writer.AvailableBuffer

计算机漫游

go 1.18 Writer.AvailableBuffer

实时渲染大赛结果将于3月31日晚8点B站直播公布,敬请期待!

3DCAT实时渲染

实时渲染 3D动画

DDoS攻击与防范策略

喀拉峻

网络安全 信息安全 DDoS

ModStartCMS模块化建站系统 v3.6.0 内容标签增强,电脑手机适配

ModStart开源

钉钉协同引擎与应用场景技术探索

阿里巴巴终端技术

分布式 跨平台 客户端 开发框架

微服务架构之外的选择——基于服务架构_SOA_Matt Fletcher_InfoQ精选文章