SOA和微服务是一回事吗
一、引子
作为我们这一代软件开发者,特别庆幸亲身经历了从单体服务到SOA、到微服务、再到云原生的整个变迁,从本篇开始,总结归纳一些这些架构模式中的一些关键点,或者说中间的一些本质逻辑,或许并不准确,姑且作为个人的思考。
二、SOA的特征
SOA最早由 Gartner 公司在 1994 年提出,但此后一段时间并没有发展,直至 2006 年,由 IBM、Oracle、SAP 等公司共同成立了 OSOA 联盟(Open Service Oriented Architecture),用于联合制定和推进 SOA 相关行业标准。
回顾当年学习SOA概念时,一系列名称不断在眼前晃悠:SOAP、ESB、BPM,听着就如此复杂,再加上SCA、SDO等等,想要入门确实不简单。
EJB也是在这个阶段在企业应用中得到快速发展和广泛运用。但是依然显得很复杂,催生了spring和Hibernate这类十分流行的框架。
总结SOA特点:
- 解决大型单体应用的背景下产生,虽然拆分但有限
- 一般是共享数据库
- 共享数据总线,通信协议复杂,例如SOAP、其他WS*标准,看着都头大
- 从一个庞大单体拆分成多个较大单体
三、微服务
最早是2005年提出,是由 Peter Rodgers 博士在 2005 年度的云计算博览会(Web Services Edge 2005)上首次使用,当时的说法是“Micro-Web-Service”,一种专注于单一职责的、语言无关的、细粒度 Web 服务(Granular Web Services)。
微服务是在SOA的发展过程中催生出来。回顾一下,发现我们在构建复杂业务系统的时候,非常希望能拆小的,实现单一职责,满足康威定律,但为何没有一开始这么处理呢?主要是因为拆分后面临了RPC、数据一致性、服务治理、运维监控等诸多挑战,微服务也是在这些挑战在逐步被解决或者缓解的情况下才逐步得到广泛运用。
比如RPC框架层出不穷,并且非常简单易用,阿里的dubbo、thrift、rest、grpc等。
2012 年,在波兰克拉科夫举行的“33rd Degree Conference”大会上,Thoughtworks 首席咨询师 James Lewis 做了题为《Microservices - Java, the Unix Way》的主题演讲,其中提到了单一服务职责、康威定律、自动扩展、领域驱动设计等原则,却只字未提 SOA。微服务真正的崛起是在 2014 年,Martin Fowler 与 James Lewis 合写的文章《Microservices: A Definition of This New Architectural Term 》让大众首次了解到微服务。
微服务的架构基本上完全取代了SOA架构。
总结微服务特点:
- 围绕业务能力构建系统架构,领域驱动设计成为重要的设计思想
- 分散治理,独立自治,康威定律被更多人关注
- 基础设施自动化,运维、系统管理成本大大降低,资源动态扩缩容也成为可能
- 服务治理能力带来容错、高可用集群
文末彩蛋:这些Java界技术圈的名人你了解吗?
SOA和微服务是一回事吗相关推荐
- SOA对微服务的残余影响
近日,Tareq Abedrabbo在伦敦2017 µCon微服务大会上说,SOA对微服务架构设计的残余影响仍然存在,包括技术选型和组织方面的问题.最直接的一个例子就是大多数企业仍然区分对待架构师和开 ...
- SOA和微服务之间的区别
近几年,我们有很多文章对SOA和微服务之间的不同点和相似点进行了分析.有些人认为SOA有很多地方是值得微服务学习的,而有些人则认为区别对待微服务和SOA会更好.而Neal Ford认为,将单体迁移到面 ...
- 阿里P8架构师谈:Restful、SOAP、RPC、SOA、微服务之间的区别
内容大纲: 1.介绍Restful.SOAP.RPC.SOA以及微服务 2.重点谈谈SOA与微服务的区别 3.以及为什么要使用微服务架构 什么是Restful Restful是一种架构设计风格,提供了 ...
- Restful、SOAP、RPC、SOA、微服务之间的区别
一.介绍Restful.SOAP.RPC.SOA以及微服务 1.1.什么是Restful? Restful是一种架构设计风格,提供了设计原则和约束条件,而不是架构,而满足这些约束条件和原则的应用程序或 ...
- SOA ESB 微服务 浅析
SOA架构解析 SOA 全称是: Service Oriented Architecture,中文释义为 "面向服务的架构",它是一种设计理念,其中包含多个服务, 服务之间通过相互 ...
- SOA和微服务架构的区别?
知乎用户 289 人赞同了该回答 谢多人邀请,其实前面几位的回答已经差不多了,在这里仅谈下自己的简单总结. 微服务架构强调的第一个重点就是业务系统需要彻底的组件化和服务化,原有的单个业务系统会拆分为多 ...
- 一张图看懂SOA与微服务
一张图看懂SOA与微服务 图片来自普元 1.SOA是站在整个企业系统的角度的治理 2.微服务的概念则小一点 3.ESB主要解决的是系统集成的问题,而且是面向已有的信息资产
- 系统架构演变:SOA、微服务架构的区别和联系
1.系统架构演变 随着互联网的发展,网站应用的规模不断扩大.需求的激增,带来的是技术上的压力.系统架构也因此也不断的演进.升级.迭代.从单一应用,到垂直拆分,到分布式服务,到SOA,以及现在火热的微服 ...
- SOA、微服务结构、RMI、RPC、Rest、RestFul、Soap、WebService详解
SOA.RMI.RPC.Rest.RestFul.Soap.WebService详解 目录 一.SOA是什么? SOA的应用场景: SOA主要的使用场景: 数据总线是什么? SOA最显著的优势 ...
最新文章
- 微软资深算法工程师为AI初学者量身打造的机器学习入门书上市啦!
- html javaScript 只能输入数字
- 过滤器在图纸上的符号_终于找全了,施工图纸上那一堆难记的符号,赶紧收藏!...
- java try-with-resource语句使用
- android view clip,Android 自定义View Clip
- mysql严重查询速度的问题一则
- AngularJS 的自定义指令
- 平板电脑办公软件_大屏平板互动软件-平板电脑触摸大屏控制软件
- django-ckeditor表情包修改
- 清除浮动塌陷的4种经典套路
- python交互式绘图比较_python – 基于Tkinter和matplotlib的交互式绘图
- php+redis实现消息队列
- Mendeley如何设置某期刊对应的参考文献格式?
- 作为程序员上班的第一天
- 德赛西威2311a汽车导航仪不能更新屏保时间的解决方案
- Swift语言难度大吗?适不适合零基础学习?
- 硬链接与软连接的区别_(转)
- mysql中dist_在SQL语句中dist是什么意思
- 博客园自定义背景图片
- OpenCV 图像分块 分块图像合并
热门文章
- 对NotificationManager和方法notify的理解
- 图的基本概念及存储方式
- 朋友圈发图多大不会被压缩_穿衣搭配:会穿衣服和不会穿衣服的女生,差距有多大 ?!...
- 2023年房地产项目破产重整研究报告
- 好用到爆的python实战技巧
- 【蓝桥杯】交换瓶子(临阵磨枪,不快也光 一看就懂的简单图论)
- matplotlib.pyplot.gca
- 22.10.20补卡 CF-1749C
- 推荐一个基于Python开源的文档系统
- 【latex】5 如何快速写出公式对应的latex公式