soa和微服务架构的联系和区别

微服务与SOA架构

微服务

维基上对其定义为:一种软件开发技术- 面向服务的体系结构(SOA)架构样式的一种变体,它提倡将单一应用程序划分成一组小的服务,服务之间互相协调、互相配合,为用户提供最终价值。每个服务运行在其独立的进程中,服务与服务间采用轻量级的通信机制互相沟通(通常是基于HTTP的RESTful API)。每个服务都围绕着具体业务进行构建,并且能够独立地部署到生产环境、类生产环境等。另外,应尽量避免统一的、集中式的服务管理机制,对具体的一个服务而言,应根据上下文,选择合适的语言、工具对其进行构建。

微服务概念的由来是怎么样的呢,参考维基百科英文版,简单梳理后的微服务出现的历史:

  • 2005年:Dr. PeterRodgers在Web ServicesEdge大会上提出了“Micro-Web-Services”的概念。
  • 2011年:一个软件架构工作组使用了“microservice”一词来描述一种架构模式。
  • 2012年:同样是这个架构工作组,正式确定用“microservice”来代表这种架构。
  • 2012年:ThoughtWorks的James Lewis针对微服务概念在QCon San Francisco 2012发表了演讲。
  • 2014年:James Lewis和Martin Flower合写了关于微服务的一篇学术性的文章,详细阐述了微服务。

顺便说一句,这几个人都是大名鼎鼎的,名字可能陌生,但是摆出他们的作品,相信多少是有些了解的。 Martin Flower是《重构》、《UML 精粹》的作者;Robert Martin,人称 Bob 大叔,敏捷专家,《代码整洁之道》、《架构整洁之道》的作者。 既然微服务是SOA架构的一种变体,那么,谈微服务,SOA就是一个跨不过去的一个话题。

SOA

SOA的全称是“Service Oriented Architecture”,中文翻译是“面向服务架构”,1996年,由Gartner公司最早提出SOA概念。它的诞生是有其历史背景的。

  • 公司内部所有部门都有自己独立的IT系统
  • 随着每个部门的业务发展,独立的IT系统的复杂度越来越高

同时,基于这样的背景,Gartner公司提出了SOA的概念,并且还给了一个预言,它预言在2008年,SOA会成为一种最流行的、且占有绝对优势的软件工程实践办法。

基于你对软件行业发展的关注和理解,Gartner公司关于SOA的预言是否靠谱呢?很显然,Gartner的预言并不是很准确,虽然在一段时间内SOA的概念、设计思路有占据过一段热点排行,但最终它也将成为架构历史长河中的一个匆匆过客。这也正是验证了那句话:“没有最好的架构,只有最合适的架构

SOA架构

soa和微服务架构的联系和区别图1

图:SOA架构示意图

很多时候,我们认为SOA已经消失在江湖,实际上并非如此,许多传统行业,比如物流、仓储行业的系统都是采用SOA架构来构建的。

对于SOA,从图中可以看到,它的每一项业务功能都是一个服务,都需要对外提供服务的能力,来完成企业所需的各项业务功能,也就意味着它具有对外提供开放的能力,这些能力无需定制化就可以实现。为什么无需定制化呢,核心就在于ESB。

ESB( Enterprise Service Bus )即,企业级服务总线,ESB是SOA架构中的核心,起着将企业中不同异构系统的连接在一起的作用。它本身提供了消息路由、协议转换等等能力。通过ESB,SOA架构实现了服务与服务之间的松耦合,减少了各个服务间的依赖和相互影响。每项服务只需要关注自身对外提供的能力即可,无需关注其他服务是怎么实现的。

看到ESB的功能,是不是觉得它的功能有点似曾相识?是的,它就是微服务所需要的基础服务。

微服务架构

简而言之,微服务架构风格 ,是一种将单个应用程序开发为一组小服务的方法,每个小服务都在自己的进程中运行并与轻量级机制(通常是 HTTP 资源 API)进行通信。 这些服务是围绕业务能力构建的,并且可以通过全自动部署机制独立部署。 这些服务的集中管理最少,可以用不同的编程语言编写并使用不同的数据存储技术。

soa和微服务架构的联系和区别图2

图:微服务架构示意图


上面一段话是Martin Fowler关于微服务架构论文中的核心片段,从上述片段中,我们提炼出微服务架构的核心有三点:

其一是“小服务”,将应用拆分为一组小服务;

其二是“在自己的进程中运行并与轻量级机制(通常是 HTTP 资源 API)进行通信”,微服务是由独立进程且进程之间通过轻量级机制进行通信;

其三是“可以通过全自动部署机制独立部署”,也就是说每个微服务可以快速独立部署。

其实这已经非常精确、精准的描述出了微服务的基本特征。完全可以作为在微服务架构实践中落地的三个参考依据与检验标准。

微服务与SOA对比

对比维度

微服务

SOA

举例

技术本质

Smart endpoints and dumb pipes

Smart pipes and dumb endpoints


应用场景

互联网行业

传统行业或企业内部

SOA,企业OA;微服务,电商平台

服务粒度

较粗


服务通信

标准化,轻量级

重量级

SOA,ESB;微服务,HTTP,RCP

服务交付

快速

较慢

微服务,服务小容易升级;SOA功能集中,较难升级


应用架构的演化

soa和微服务架构的联系和区别图3

图:应用架构的变迁

最初的应用都是单体架构,所谓单体架构就是将一系列功能全部集中在一个大的应用中,比如传统行业一般整个财务就做一个系统,将费用管理、账务管理、薪资结算等等都集中在一起,这种架构的局限性非常明显,不适合大规模项目的建设。

  • 当项目逐渐变大后,代码量逐渐增多,会出现编译、打包费时,严重影响效率。
  • 当业务逐渐增多后,不同的业务创建不同的项目,不同的项目的功能模块可能会出现重复建设的情况,造成浪费。

随着软件架构的发展,出现SOA架构,SOA将单体架构做了拆分,拆分成粗粒度的服务,同时将部分公共功能独立出来形成ESB,它的优点是

  • 把模块拆分,使用接口通信,降低模块之间的耦合度
  • 把项目拆分成若干个子项目,不同的团队负责不同的子项目
  • 增加功能时只需要在增加一个子项目,调用其它系统的接口就可以
  • 可以灵活的进行分布式部署

但是由于SOA架构需要一个统一的通信交互(ESB), 导致了接口开发增加工作量。

更进一步发展,微服务架构出现,对服务进一步的拆分,拆分成更细粒度的服务;进一步提供了架构选择的多样性,微服务架构主要优点是

  • 开发简单,每个服务都尽可能的小。独立提供更小的业务能力。
  • 技术栈灵活,不需要在乎使用什么语言、数据存储方式等
  • 服务独立无依赖,每个服务都能独立部署、独立运行
  • 独立按需扩展,更少的依赖,更高的扩展性
  • 高可用性,独立模块,即使一个进程宕机也不影响整体服务能力。

正是因为微服务将服务拆分的更小,它同样也带来了一些挑战,比如多服务运维难度增大、服务通信成本变高、数据一致性保持更难、性能监控要求提升等等。

所以业务在选择架构的时候,应从多方面考量选择更合适的架构。

顺便说一句,这里的架构演化是指整个架构的发展历史,并不是说你的服务就一定要经过这个演化过程,只是更多的架构模式提供更多的选择。我们在做架构演进的时候,更多的是将单体应用演进到SOA架构或者演进到微服务架构。

SOA粗暴理解:把系统按照实际业务,拆分成刚刚好大小的、合适的、独立部署的模块,每个模块之间相互独立。

每个模块之间都能独立运行,不会缺少某个程序无法使用的情况,有比较强的容错率,多服务的情况服务之间的治理、还有问题的排查就会以几何程度增加,但是同时也增加了服务的高可用性 ,横向扩展能力。

需要通过中间件来达成服务之间的沟通。

微服务架构强调的第一个重点就是

业务系统需要彻底的组件化和服务化,原有的单个业务系统会拆分为多个可以独立开发,设计,运行和运维的小应用。这些小应用之间通过服务完成交互和集成。每个小应用从前端web ui,到控制层,逻辑层,数据库访问,数据库都完全是独立的一套。在这里我们不用组件而用小应用这个词更加合适,每个小应用除了完成自身本身的业务功能外,重点就是还需要消费外部其它应用暴露的服务,同时自身也将自身的能力朝外部发布为服务。

如果一句话来谈SOA和微服务的区别,即微服务不再强调传统SOA架构里面比较重的ESB企业服务总线,同时SOA的思想进入到单个业务系统内部实现真正的组件化。

国内做的不错的有天翎、泛微、蓝凌、道一。这些产品都有一些微服务化的版本。可以去下载参考一下

版权声明:本文来自用户投稿,不代表【小灵猫网】立场,本平台所发表的文章、图片属于原权利人所有,因客观原因,或会存在不当使用的情况,非恶意侵犯原权利人相关权益,敬请相关权利人谅解并与我们联系(邮箱:dandanxi6@qq.com)我们将及时处理,共同维护良好的网络创作环境。

(0)
上一篇 2022年10月20日 13:08
下一篇 2022年10月20日 13:11

相关推荐

  • 欧洲文艺复兴起源于哪个国家

    其实起源很内涵。13世纪以前,欧洲还处在黑暗的中世纪,有多黑暗?教会和骑士领主相互勾结,教会宣传一神论,原罪,赎罪理论,加强其实贵族统治,骑士负责圈地征税,暴力执法。中世纪的教廷生活极其优越,建造巨大的教堂,消费着最顶端的物质和精神资料。而骑士贵族低一个档次,修建城堡、要塞、庄园…

    2023-09-04
  • 2023年注册建筑师有用吗,考一个建筑师证有用吗

    我以为,建筑设计师本质上是艺术家,画家用画笔作二维图像,而建筑师用建筑材料进行三维创作。知名建筑师,就跟著名画家一样,应该带着浓烈的个人风格,建筑只不过是他们表达自我的一种方式。青山周平却说,真正好的建筑师,他的“自我”是很小的。建筑师自己想表达什么,可能是建筑设计中最不重要的因…

    综合百科 2023-09-04
  • 中国历史上寿命最长的皇帝是谁(中国历代皇帝寿命最长是谁)

    盘点中国历史上寿命最长的五个皇帝1、乾隆(1711-1799),姓爱新觉罗,名弘历,是雍正第四子。他25岁登基,在位60年,禅位后又任三年零四个月太上皇,实际掌权长达63年零4个月,是中国历史上实际执掌国家最高权力时间最长的皇帝,同时他以89岁高龄称为中国历史上最长寿的皇帝。乾隆…

    2023-09-04
  • ipad2017是一款怎样的ipad

    iPad2017是苹果于2017年上架的一款平板,之所以说是上架而不是发布,是因为这款平板可以虽然看成是iPad Air 2的升级款,但是有些地方又有所退步。但是如果想购买的话,还是推荐购买的。新iPad使用了与iPhone 6s相同的A9处理器(包含M9协处理器)。因此在速度上…

    2023-09-04
  • 马超死因究竟是什么呢(马超的死因是什么)

    最流行的说法是,马超忧郁过度而去世。马超心情抑郁是肯定的,我们要知道的是,他为什么心情抑郁?是因为刘备对他的冷落?马超归降刘备以后,刘备对他可是敬若上宾的。群臣联名上奏请求朝廷封刘备为“汉中王”时,马超排名首位的;刘备称帝时,封马超为骠骑将军,这可是蜀汉的最高军职了。就连张飞也不…

    2023-09-04
  • 一滴水中有多少微生物答案(一滴水中就有多少微生物)

    在生物课上你可能已经做过这个实验了:从池塘里取一些水来,用滴管吸一些,小心地滴一滴到载玻片上,再盖上盖玻片,然后迫不及待地将其放在显微镜下进行观察……你会看到在这一滴池塘水中,有很多奇妙又微小的生物在里面游动。这些只有在显微镜下才能够被我们观察到的生物,就是“微生物”。 你一定认…

    2023-09-04
  • 王牌特工2好看吗

    一个不可否认的事实是:续集、前传和番外往往被视为“电影已死”的证明,而无论国内外,都如此热衷发展续集电影完全是因为太好赚钱。但话说回来,续集电影并非一无是处,佳作也不在少数。尤其今年年初,好莱坞续集电影的排片陆续发布,我们就知道这是一个“续集大年”。而2015横扫全球的《王牌特工…

    2023-09-04
  • 黑乌龙的功效和作用

    黑乌龙茶不仅对健康有很大的好处,还因为其含有茶多酚,喝完会口齿留香。黑乌龙茶的功效不仅具有提神益思,消除疲劳、生津利尿、解热防暑、杀菌消炎、解毒防病、消食去腻、减肥健美等保健功能,还突出表现在防癌症、降血脂、抗衰老等特殊功效。乌龙茶的药理作用,突出表现在分解脂肪、减肥健美等方面。…

    综合百科 2023-09-04
  • 人类可能移居开普勒452b吗,人类如何到达开普勒452b

    按照目前的科技水平,人类很难移居到开普勒452B星球,首先是因为开普勒452B距离太远,很难搬家。再者即使可以去它也未必宜居,我们具体来分析一下。在距离地球1400光年之外,NASA发现了一颗与地球非常类似的星球开普勒452b,这个星球的直径是地球的1.6倍,而且它所在的恒星系,…

    2023-09-04
  • 计算机系统都有什么,计算机一级查询系统

    计算机系统的组成从诞生至今大体结构没有发生太大变化,主要由两大部分组成:一个是硬件系统,二是软件系统,具体分为:一、计算机硬件系统计算机硬件系统主要分为运算器、控制器、存储器、输入设备、输出设备五大部分。这五大部分密切配合,分工合作完成各种数据处理和计算,我们平时使用电脑不论是工…

    2023-09-04