微服务架构和soa的区别,SOA和微服务架构的区别
微服务架构和soa的区别,SOA和微服务架构的区别详细介绍
本文目录一览: SOA和微服务架构的区别
关于这个问题,首先,已经很有几个热心人士回答了,我再重复一遍,也没有什么意义一,而且他们回答的都很对,你如果不明白,问他们也可以问我也可以,我这些都是在后盾上学的,有空可以去看一下,就算不喜欢也没关系啊,何乐而不为呢?
1、用到的技术不同
2、SOA架构是面向服务架构,主要是通过service提供一个个服务
3、微服务架构主要是把每一个小应用或小功能拆出来单独部署。
SOA和微服务架构的区别
微服务是一个新概念,但这绝不是一个全新架构,更不是一个包治百病的架构。由于有服务二字,很容易让人联想到面向服务架构(SOA),其实微服务架构属于应用技术架构,和以B/S
为代表的三层架构相对应,强调将巨石型应用拆分为由微服务组成的应用,在数据上也视情况从集中的存储拆解为更小的存储单元。而SOA属于企业架构的范畴,从企业架构出发把业务分解为不同领域的服务,不同物理系统提供不同服务,注重系统之间通过服务互联互通的规范,对服务如何实现并不关注。因此,面向服务架构的服务应该是一个业务意义的服务,而微服务是系统中的技术服务,更关注服务的实现,虽然提供了业务意义的服务,但是不能混为一谈。微服务使用也不是无限度的,事实上由于数据一致性等问题的限制,不能无限度拆分微服务,可以把微服务分为系统对外提供的远程服务、系统内部的远程服务和系统内部的本地服务,显式声明、明确职责。事实上,在企业架构上使用SOA支撑业务,而在应用技术架构上使用微服务架构,是一个合适的选择。
SOA和微服务架构的区别
如果一句话来谈SOA和微服务的区别,即微服务不再强调传统SOA架构里面比较重的ESB企业服务总线,同时SOA的思想进入到单个业务系统内部实现真正的组件化。
微服务架构强调的第一个重点就是业务系统需要彻底的组件化和服务化,原有的单个业务系统会拆分为多个可以独立开发,设计,运行和运维的小应用。
这些小应用之间通过服务完成交互和集成。
每个小应用从前端webui,到控制层,逻辑层,数据库访问,数据库都完全是独立的一套。
在这里不用组件而用小应用这个词更加合适,每个小应用除了完成自身本身的业务功能外,重点就是还需要消费外部其它应用暴露的服务,同时自身也将自身的能力朝外部发布为服务。
微服务架构 vs SOA架构
一、面向服务的架构SOA
面向服务的架构是一种软件体系结构,应用程序的不同组件通过网络上的通信协议向其他组件提供服务。通信可以是简单的数据传递,也可以是两个或多个服务彼此协调连接。这些独特的服务执行一些小功能,例如验证付款、创建用户 帐户 或提供社交登录等。
面向服务的架构不太关于如何对应用程序进行模块化构建,更多的是关于如何通过分布式、单独维护和部署的软件组件的集成来组成应用程序。这些通过技术和标准来实现,通过技术和标准使得组件能够更容易地通过网络(尤其是IP网络)进行通信和协作。
SOA架构中有两个主要角色: 服务提供者(Provider)和服务使用者(Consumer)。 而软件代理则可以 扮演这 两个角色。该Consumer层是用户(人、应用程序或第三方的其它组件)与SOA交互的点,和Provider层则由SOA架构内的所有服务所构成。
SOA首先在90年代中期得名,当时一家名为Gartner Group的公司认识到了这个软件架构的新趋势,并在全球推广。通过这样做,他们设法大大加快了这种架构模式的采用和进一步发展。然而,使用分布式服务作为软件体系结构的最早记录可追溯到二十世纪80年代初。
二、微服务架构
微服务架构在某种程度上是面向服务的架构SOA继续发展的下一步。基本上,这种架构类型是开发软件,网络或移动应用程序作为独立服务套件(又称微服务)的一种特殊方式。这些服务的创建仅限于一个特定的业务功能,如用户管理、用户角色、电子商务车、搜索引擎、社交媒体登录等。此外,它们是完全独立的,也就是说它们可以写入不同的编程语言并使用不同的数据库。集中式服务管理几乎不存在,微服务使用轻量级HTTP、REST或Thrift API进行通信。
这个词本身起源于2011年5月在威尼斯附近举行的软件架构师研讨会。他们第一次使用“微服务”这个术语来描述参与者看到的一个共同的架构风格,其中许多参会者都在 探索 相似的内容。2012年5月,同一个团队决定将“微服务”作为最合适的名称。然而实际上,微软、亚马逊、Netflix和Facebook等主要的 科技 公司已经在微服务架构方面工作了十多年。
乍一看,微服务架构似乎谈论的是与SOA相同的事情。不过,如果引用微软服务领域的先驱Martin Flower的话,他曾经说过,“我们应该把SOA看作微服务的超集”。
那么,差异在哪里呢?可以说,两种架构比起不同的架构有更多的相似之处,然而,它们是两种不同类型的架构。下面会详细分析这一点。
三、SOA vs. MicroServices
下面进一步解释下表所述的不同之处:
开发方面 - 在这两种体系结构中,可以使用不同的编程语言和工具开发服务,从而将技术多样性带入开发团队。开发可以在多个团队中组织,但是在SOA中,每个团队都需要了解常见的通信机制。另一方面,使用微服务,服务可以独立于其他服务运行和部署。因此,频繁部署新版本的微服务或独立扩展服务会更容易。您可以在这里进一步阅读有关微服务的这些好处。
“上下文边界” - SOA鼓励组件的共享,而微服务尝试通过“上下文边界”来最小化共享。上下文边界是指以最小的依赖关系将组件及其数据耦合为单个单元。由于SOA依靠多个服务来完成业务请求,构建在SOA上的系统可能比微服务要慢。
通信 - 在SOA中, ESB可能成为影响整个系统的单一故障点。由于每个服务都通过ESB进行通信,如果其中一个服务变慢,可能会阻塞ESB并请求该服务。另一方面,微服务在容错方面要好得多。例如,如果一个微服务存在内存错误,那么只有该微服务会受到影响。所有其他微服务将继续定期处理请求。
互操作性 - SOA 通过消息中间件组件促进了多种异构协议的使用。微服务试图通过减少集成选择的数量来简化架构模式。 因此,如果您想要在异构环境中使用不同协议来集成多个系统,则需要考虑SOA。如果您的所有服务都可以通过相同的远程访问协议访问,那么微服务对您来说是一个更好的选择。
大小Size - 最后一点但并非最不重要的一点,SOA和微服务的主要区别在于规模和范围。微服务架构中的前缀“微”是指内部组件的粒度,意味着它们必须比SOA架构的服务往往要小得多。微服务中的服务组件通常有一个单一的目的,他们做得很好。另一方面,在SOA服务中通??常包含更多的业务功能,并且通常将它们实现为完整的子系统。
四、结论
我们不能简单地说一种架构比另一种架构更好。这主要取决于您正在构建的应用程序的目的。SOA更适合需要与许多其他应用程序集成的大型复杂企业应用程序环境。这就是说,小型应用程序不适合SOA架构,因为它们不需要消息中间件组件。而微服务架构,在另一方面,是更适合于较小和良好的分割,基于Web的系统。另外,如果您正在开发移动或Web应用程序,那么微服务作为开发人员可以为您提供更大的控制权。最后,我们可以得出结论,因为它们服务于不同的目的,微服务和SOA确实是不同类型的体系结构。
五分钟学GIS _ 微服务架构
微服务是一种架构思想。将原有的单个业务系统拆分为多个可以独立开发,设计,运行和运维的“小系统”。这些“小系统”之间通过服务完成交互和集成。每个”小系统”除了能处理本身的业务功能外,同时也将自身的能力朝外部发布为服务。
SOA
SOA(面向服务的架构)是一个组件模型,它将应用程序的不同功能单元(称为服务)的紧耦合系统,划分为面向业务的,粗粒度,松耦合,无状态的服务。服务发布出来后,供其他服务调用,一组互相依赖的服务就构成了SOA架构下的系统。 微服务是 SOA 的升级版,做到更细的粒度,处理了更多的问题。
例如图1中将所有的功能打包在一个WAR包里,基本没有外部依赖(除了容器),部署在一个JEE容器(Tomcat,JBoss,WebLogic)里,包含了 DO/DAO,Service,UI等所有逻辑,缺点也非常明显,部署不灵活以及扩展性不够,但我们如果按照图2的为方式,按照业务而不是技术来划分组织,内部各个服务通过REST方式进行沟通,那么可以使平台使部署、管理和服务功能交付变得更加简单。 如果一句话来谈SOA和微服务的区别,即微服务不再强调传统SOA架构里面比较重的ESB企业服务总线,同时SOA的思想进入到单个业务系统内部实现真正的组件化。
微服务与
一般提到微服务都离不开Docker与DevOps,理解微服务架构是核心,Docker是工具,是手段。 Docker容器技术的出现,为微服务提供了更便利的条件,比如更小的部署单元,每个服务可以通过类似Node.js或Spring Boot的技术跑在自己的进程中。可能在几十台计算机中运行成千上万个Docker容器,每个容器都运行着服务的一个实例。随时可以增加某个服务的实例数,或者某个实例崩溃后,在其他的计算机上再创建该服务的新的实例。 DevOps即开发测试和部署运维的一体化。当我们的单体应用拆分为多个“小系统”后,虽然整体架构可以松耦合和可扩展,但是如果拆分的组件越多,这些组件之间本身的部署运维就越复杂。DevOps够实现开发设计到部署运维的一体化。
微服务优势
1. 通过分解巨大单体式应用为多个服务方法解决了复杂性问题。 在功能不变的情况下,应用被分解为多个可管理的分支或服务。微服务架构模式给采用单体式编码方式很难实现的功能提供了模块化的解决方案,由此,单个服务很容易开发、理解和维护。 2. 这种架构使得每个服务都可以有专门开发团队来开发。 开发者可以自由选择开发技术,提供API服务,实现敏捷开发。 3. 微服务架构模式是每个微服务独立的部署。 开发者不再需要协调其它服务部署对本服务的影响。这种改变可以加快部署速度。 4. 微服务架构模式使得每个服务独立扩展。 你可以根据每个服务的规模来部署满足需求的规模。甚至于,你可以使用更适合于服务资源需求的硬件。
四驾马车
最后再谈谈咱们SuperMap家族中的四驾马车(iServer、iExpress、iPortal、iCloudManager),这些产品也是借鉴了微服务设计思想,例如iCloudManager,它可以管理成千上万的Docker容器,将每个Docker完全做到进程级别的隔离,资源占用率又很小,满足微服务架构开发与测试以及自动化部署运维。
soa是什么
SOA
(面向服务的架构)
面向服务的架构(SOA)是一个组件模型,它将应用程序的不同功能单元(称为服务)进行拆分,并通过这些服务之间定义良好的接口和协议联系起来。接口是采用中立的方式进行定义的,它应该独立于实现服务的硬件平台、操作系统和编程语言。这使得构建在各种各样的系统中的服务可以以一种统一和通用的方式进行交互。
定义介绍
面向服务架构,它可以根据需求通过网络对松散耦合的粗粒度应用组件进行分布式部署、组合和使用。服务层是SOA的基础,可以直接被应用调用,从而有效控制系统中与软件代理交互的人为依赖性。
SOA是一种粗粒度、松耦合服务架构,服务之间通过简单、精确定义接口进行通讯,不涉及底层编程接口和通讯模型。SOA可以看作是B/S模型、XML(标准通用标记语言的子集)/Web Service技术之后的自然延伸。
SOA将能够帮助软件工程师们站在一个新的高度理解企业级架构中的各种组件的开发、部署形式,它将帮助企业系统架构者以更迅速、更可靠、更具重用性架构整个业务系统。较之以往,以SOA架构的系统能够更加从容地面对业务的急剧变化。
SOA系统是一种企业通用性架构。
SOA(Service-Oriented-Architecture)面向服务的架构,是把服务拼装形成应用整体的架构。SOA中的服务是指“可重用的业务模块”。微服务架构与SOA很像,同样都是将整个应用拆分,形成独立的业务模块的思路。但在许多关键点上,微服务架构与SOA不同。
SOA很大程度上依赖于基于XML的消息格式和基于SOAP的通信协议,微服务架构大量的依赖于REST和JSON。
SOA架构中有ESB(服务总线)的概念,ESB负责服务之间的通信转发和接口适配,在SOA实现中,ESB处于核心地位,有很多专业的ESB厂商提供ESB中间件,例如WebSphere ESB、Oracle ESB、Dubbo等。
ESB本身是非常“重”的技术,在云化软件体系和微服务架构中,强调更轻量级、更迅速、去中心化的技术,所以在微服务架构中,不需要ESB,而通过API网关这样的技术来负责服务接口转发。(由于软件全面云化是一个过程、需要适配、调整来全面完成转变,所以在一段时间内,面对大量的遗留系统,ESB仍然会充当微服务改造过程中用来适配老系统的一个重要组件。)
SOA的设计思路是把一些组件和服务,通过服务总线组装,形成更大的应用系统(从小到大);而微服务的设计思路是把应用拆分成独立自治的小的服务(从大到小)。
SOA设计架构强调分层,通常会分为展现层、业务层、总线层和数据层。微服务架构中的服务更松散。
SOA中的服务不强调业务领域的自治性,微服务架构强调基于领域的服务自治性。
从上述的对比来看,二者的区别基本上都在实现方式上。微服务与SOA本质上是同一种设计思想在不同时代的不同实现。过去在容器、K8S技术没有出现的年代,造就了SOA的实现方式。
面向服务的架构(SOA)是一个组件模型,它将应用程序的不同功能单元(称为服务)通过这些服务之间定义良好的接口和契约联系起来。接口是采用中立的方式进行定义的,它应该独立于实现服务的硬件平台、操作系统和编程语言。这使得构建在各种各样的系统中的服务可以以一种统一和通用的方式进行交互。
面向服务架构,它可以根据需求通过网络对松散耦合的粗粒度应用组件进行分布式部署、组合和使用。服务层是SOA的基础,可以直接被应用调用,从而有效控制系统中与软件代理交互的人为依赖性。
SOA是一种粗粒度、松耦合服务架构,服务之间通过简单、精确定义接口进行通讯,不涉及底层编程接口和通讯模型。SOA可以看作是B/S模型、XML(标准通用标记语言的子集)/WebService技术之后的自然延伸。
SOA将能够帮助软件工程师们站在一个新的高度理解企业级架构中的各种组件的开发、部署形式,它将帮助企业系统架构者以更迅速、更可靠、更具重用性架构整个业务系统。较之以往,以SOA架构的系统能够更加从容地面对业务的急剧变化。
什么是微服务架构
面向服务的架构(SOA)是一个组件模型,它将应用程序的不同功能单元(称为服务)通过这些服务之间定义良好的接口和契约联系起来。构建在各种各样的系统中的服务可以以一种统一和通用的方式进行交互。SOA是一种粗粒度、松耦合服务架构,基于soa服务思想进行功能的抽取(重复代码问题解决),以服务为中心各个系统之间依靠ESB进行调用。随着业务复杂性与规模的不断增长,以及业务的多变性因素,使得敏捷软件开发变得尤其重要,在尽可能满足客户需求的同时,维持良好的软件质量与系统可用性。将整体应用拆分开来,从而确保以业务为中心的服务设计理念更加符合敏捷交付与DevOps文化的实际要求。而这,正是微服务架构的真正来源。一句话总结SOA和微服务的区别,即微服务不再强调传统SOA架构里面比较重的ESB企业服务总线,同时SOA的思想进入到单个业务系统内部实现真正的组件化。如今微服务越来越重要,
j2ee和微服务架构区别
二者是本质上的区别。1、微服务与SOA之间的另一个不同之处是服务互联和编写服务时所使用的技术。2、J2EE是一个遵循企业级标准的用于编写SOA架构的技术栈。
什么是 微服务
架构这个东西,从一开始都是单体服务,当业务上来之后,机器扛不住,需要横向还有纵向去提升整个系统服务能力,业务逻辑也会开始复杂起来,混乱不堪。这时就可以考虑微服务,简单来书偶就是将模块分割开来,分割成单独的机器,这样可以提高单独模块的服务能力。
同样的道理,JNPF也有单体版本和微服务版本,我们需要观察业务是否需要用到微服务,而不是强行为了技术而技术。
微服务架构是一种方法,其中单个应用程序由许多松散耦合且可独立部署的较小服务组成。
微服务(或微服务架构)是一种云原生架构方法,其中单个应用程序由许多松散耦合且可独立部署的较小组件或服务组成。
这些服务通常
虽然关于微服务的大部分讨论都围绕架构定义和特征展开,但它们的价值可以通过相当简单的业务和组织优势来更普遍地理解:
微服务也可以通过它们 不是 什么来理解。
与微服务架构最常进行的两个比较是单体架构和面向服务的架构 (SOA)。
微服务和单体架构之间的区别在于,微服务由许多较小的、松散耦合的服务组成一个应用程序,而不是大型、紧密耦合的应用程序的单体方法
微服务和 SOA 之间的区别可能不太清楚。
虽然可以在微服务和 SOA 之间进行技术对比,尤其是围绕 企业服务总线 (ESB) 的角色,但更容易将差异视为 范围之一 。
SOA 是企业范围内的一项努力,旨在标准化 组织中 所有 Web 服务相互通信和集成的方式,而微服务架构是特定于应用程序的。
微服务可能至少与开发人员一样受高管和项目负责人的欢迎。
这是微服务更不寻常的特征之一,因为架构热情通常是为软件开发团队保留的。
原因是微服务更好地反映了许多业务领导者希望构建和运行他们的团队和开发流程的方式。
换句话说,微服务是一种架构模型,可以更好地促进所需的操作模型。
在IBM 最近对 1,200 多名开发人员和 IT 主管进行的一项调查中,87% 的微服务用户同意微服务的采用是值得的。
也许微服务最重要的一个特点是,由于服务更小并且可以独立部署,它不再需要国会的法案来更改一行代码或在应用程序中添加新功能。
微服务向组织承诺提供一种解毒剂,以解决与需要大量时间的小改动相关的内心挫败感。
它不需要博士学位。
在计算机科学中看到或理解一种更好地促进速度和敏捷性的方法的价值。
但速度并不是以这种方式设计服务的唯一价值。
一种常见的新兴组织模型是围绕业务问题、服务或产品将跨职能团队聚集在一起。
微服务模型完全符合这一趋势,因为它使组织能够围绕一个服务或一组服务创建小型、跨职能的团队,并让他们以敏捷的方式运行。
微服务的松散耦合还为应用程序建立了一定程度的故障隔离和更好的弹性。
服务的小规模,加上清晰的边界和沟通模式,使新团队成员更容易理解代码库并快速为其做出贡献——在速度和员工士气方面都有明显的好处。
在传统的 n 层架构模式中,应用程序通常共享一个公共堆栈,其中一个大型关系数据库支持整个应用程序。
这种方法有几个明显的缺点——其中最重要的是应用程序的每个组件都必须共享一个公共堆栈、数据模型和数据库,即使对于某些元素的工作有一个清晰、更好的工具。
它造成了糟糕的架构,并且对于那些不断意识到构建这些组件的更好、更有效的方法是可用的开发人员来说是令人沮丧的。
相比之下,在微服务模型中,组件是独立部署的,并通过 REST、事件流和消息代理的某种组合进行通信——因此每个单独服务的堆栈都可以针对该服务进行优化。
技术一直在变化,由多个较小的服务组成的应用程序更容易和更便宜地随着更理想的技术发展而变得可用。
使用微服务,可以单独部署单个服务,但也可以单独扩展它们。由此产生的好处是显而易见的:如果做得正确,微服务比单体应用程序需要更少的基础设施,因为它们只支持对需要它的组件进行精确扩展,而不是在单体应用程序的情况下对整个应用程序进行扩展。
微服务的显着优势伴随着重大挑战。
从单体架构到微服务意味着更多的管理复杂性——更多的服务,由更多的团队创建,部署在更多的地方。
一项服务中的问题可能会导致或由其他服务中的问题引起。
日志数据(用于监控和解决问题)更加庞大,并且在服务之间可能不一致。
新版本可能会导致向后兼容性问题。
应用程序涉及更多的网络连接,这意味着出现延迟和连接问题的机会更多。
DevOps 方法可以解决其中的许多问题,但 DevOps 的采用也有其自身的挑战。
然而,这些挑战并没有阻止非采用者采用微服务——或者采用者深化他们的微服务承诺。
新的 IBM 调查数据 显示,56% 的当前非用户可能或非常可能在未来两年内采用微服务,78% 的当前微服务用户可能会增加他们在微服务上投入的时间、金钱和精力
微服务架构通常被描述为针对 DevOps 和持续集成/持续交付 (CI/CD) 进行了优化,在可以频繁部署的小型服务的上下文中,原因很容易理解。
但另一种看待微服务和 DevOps 之间关系的方式是,微服务架构实际上 需要 DevOps 才能成功。
虽然单体应用程序具有本文前面讨论过的一系列缺点,但它们的好处是它不是一个具有多个移动部件和独立技术堆栈的复杂分布式系统。
相比之下,鉴于微服务带来的复杂性、移动部件和依赖项的大量增加,在部署、监控和生命周期自动化方面没有大量投资的情况下使用微服务是不明智的。
虽然几乎任何现代工具或语言都可以在微服务架构中使用,但有一些核心工具已成为微服务必不可少的边界定义:
微服务的关键要素之一是它通常非常小。
(没有任意数量的代码可以确定某物是否是微服务,但名称中的“微”就在那里。)
当Docker在 2013 年迎来现代容器时代时,它还引入了与微服务最密切相关的计算模型。
由于单个容器没有自己的操作系统的开销,它们比传统的虚拟机更小更轻,并且可以更快地启动和关闭,使其成为微服务架构中更小、更轻的服务的完美匹配.
随着服务和容器的激增,编排和管理大量容器很快成为关键挑战之一。
Kubernetes是一个开源容器编排平台,已成为最受欢迎的编排解决方案之一,因为它做得非常好。
微服务通常通过 API 进行通信,尤其是在首次建立状态时。
虽然客户端和服务确实可以直接相互通信,但 API 网关通常是一个有用的中间层,尤其是当应用程序中的服务数量随着时间的推移而增长时。
API 网关通过路由请求、跨多个服务扇出请求以及提供额外的安全性和身份验证来充当客户端的反向代理。
有多种技术可用于实现 API 网关,包括 API 管理平台,但如果使用容器和 Kubernetes 实现微服务架构,则网关通常使用 Ingress 或最近的Istio 来实现。
虽然最佳实践可能是设计无状态服务,但状态仍然存在,服务需要了解它。
虽然 API 调用通常是为给定服务初始建立状态的有效方式,但它并不是保持最新状态的特别有效方式。
不断的轮询,“我们到了吗?” 保持服务最新的方法根本不切实际。
相反,有必要将建立状态的 API 调用与消息传递或事件流结合起来,以便服务可以广播状态的变化,而其他相关方可以监听这些变化并进行相应的调整。
这项工作可能最适合通用消息代理,但在某些情况下,事件流平台(例如Apache Kafka)可能更适合。
通过将微服务与事件驱动架构相结合,开发人员可以构建分布式、高度可扩展、容错和可扩展的系统,可以实时消费和处理大量事件或信息。
无服务器架构将一些核心云和微服务模式得出其合乎逻辑的结论。
在无服务器的情况下,执行单元不仅仅是一个小服务,而是一个函数,它通常可以只是几行代码。
将无服务器功能与微服务分开的界限很模糊,但通常认为功能比微服务还要小。
无服务器架构和功能即服务 (FaaS)平台与微服务的相似之处在于,它们都对创建更小的部署单元和根据需求精确扩展感兴趣。
微服务不一定与云计算完全相关,但它们如此频繁地结合在一起有几个重要原因——这些原因超越了微服务成为新应用程序的流行架构风格以及云成为新应用程序的流行托管目的地的原因。
微服务架构的主要优势之一是与单独部署和扩展组件相关的利用率和成本优势。
虽然这些优势在一定程度上仍然存在于本地基础设施中,但小型、独立可扩展的组件与按需、按使用付费的基础设施相结合是可以找到真正成本优化的地方。
其次,也许更重要的是,微服务的另一个主要好处是每个单独的组件都可以采用最适合其特定工作的堆栈。
当您自己管理堆栈扩散时,可能会导致严重的复杂性和开销,但是将支持堆栈作为云服务使用可以大大减少管理挑战。
换句话说,虽然推出自己的微服务基础设施并非不可能,但不可取,尤其是刚开始时。
在微服务架构中,有许多常见且有用的设计、通信和集成模式有助于解决一些更常见的挑战和机遇,包括:
例如,在桌面上使用的应用程序将具有与移动设备不同的屏幕尺寸、显示和性能限制。
BFF 模式允许开发人员使用该界面的最佳选项为每个用户界面创建和支持一种后端类型,而不是尝试支持适用于任何界面但可能会对前端性能产生负面影响的通用后端。
例如,在电子商务网站上,产品对象可能通过产品名称、类型和价格来区分。
聚合是应被视为一个单元的相关实体的集合。
因此,对于电子商务网站,订单将是买家订购的产品(实体)的集合(集合)。
这些模式用于以有意义的方式对数据进行分类。
在微服务架构中,服务实例会因伸缩、升级、服务故障甚至服务终止而动态变化。
这些模式提供了发现机制来应对这种短暂性。
负载平衡可以通过使用 健康 检查和服务故障作为重新平衡流量的触发器来使用服务发现模式。
适配器模式的目的是帮助翻译不兼容的类或对象之间的关系。
依赖第三方 API 的应用程序可能需要使用适配器模式来确保应用程序和 API 可以通信。
这个色彩缤纷的名字指的是藤蔓(微服务)如何随着时间的推移慢慢地超越并扼杀一棵树(单体应用程序)。
虽然有很多模式可以很好地完成微服务,但同样数量的模式可以很快让任何开发团队陷入困境。
其中一些——改写为微服务“不要”——如下:
一旦应用程序变得太大且难以轻松更新和维护,微服务是一种管理复杂性的方法。
只有当您感觉到单体架构的痛苦和复杂性开始蔓延时,才值得考虑如何将该应用程序重构为更小的服务。
在你感受到那种痛苦之前,你甚至没有真正拥有需要重构的单体。
尝试在没有 a) 适当的部署和监控自动化或 b) 托管云服务来支持您现在庞大的异构基础设施的情况下进行微服务,会带来很多不必要的麻烦。
省去你自己的麻烦,这样你就可以把时间花在担心状态上。
最好倾向于更大的服务,然后只在它们开始开发微服务解决的特征时才将它们分开——即部署更改变得困难和缓慢,通用数据模型变得过于复杂,或者不同部分服务有不同的负载/规模要求。
微服务和 SOA 之间的区别在于,微服务项目通常涉及重构应用程序以便更易于管理,而 SOA 关注的是改变 IT 服务在企业范围内的工作方式。
一个演变成 SOA 项目的微服务项目可能会因自身的重量而崩溃。
你最好从一个你可以处理的速度开始,避免复杂性,并尽可能多地使用现成的工具。