鼠扑 发表于 2024-7-14 04:02:31

SOA架构

学习网站保举 IT-BLOG-CN
一、简介

面向服务的架构(SOA)是一种软件开发方法,它使用称为服务的软件组件来创建业务应用程序。每项服务提供一种业务本领,并且服务也可以跨平台和语言相互通讯。开发职员使用SOA来重用差别体系中的服务,或者组合几个独立的服务来实行复杂的任务。
   例如:用户登录体系,可以创建一项身份验证服务并在所有应用程序中重用,而不是为所有业务流程重写身份验证代码。
二、SOA架构基本原则

【1】互利用性: SOA中的每项服务都提供了形貌文档,这些文档具体说明确服务的功能以及相干的条款和条件。任何客户端体系(无论使用哪种基础平台和编程语言)都可以运行服务。例如,业务流程可以使用C#和Python编写的服务。由于没有直接交互,因此一项服务的更改不会影响使用该服务的其他组件。
【2】松耦合: SOA中的服务应该是松耦合的,尽可能少地依赖数据模子或信息体系等外部资源。它们还应该是无状态的,不保留历史会话或事务的任何信息。因此,在修改服务时,它不会显著影响使用该服务的客户端应用程序和其他服务。
【3】抽象: SOA中的客户端或服务用户无需相识服务的代码逻辑或实施详情。对他们而言,服务应该类似一个黑匣子。客户通过服务条约和其他服务形貌文档获取有关服务用途以及服务使用方法的须要信息。
【4】粒度: SOA中的服务应该具有适当的大小和范围,最好为每个服务打包一个离散的业务功能。然后,开发职员可以使用多个服务来创建一个用于实行复杂利用的复合服务。
三、SOA架构包含的重要组件

【1】服务: 服务是构建SOA的基础数据块。服务可以是私有的(仅供构造内部用户访问),也可以是公开的(所有人都可以通过Internet访问)。
每个服务都分别具有三个重要功能。
 ● 服务实施:服务实施是一个代码,用于构建实行特定服务功能(例如用户身份验证或账单盘算)的逻辑。
 ● 服务条约:服务条约定义了服务的性子及其关联的条款和条件,例如使用服务的先决条件、服务成本以及所提供的服务质量。
 ● 服务接口:在SOA中,其他服务或体系通过服务接口与服务进行通讯。该接口定义了调用服务实行活动或交换数据的方式。它减少了服务和服务请求者之间的依赖关系。例如,即使对基础代码逻辑相识甚少或者完全不相识的用户也可以通过服务接口使用服务。
【2】服务提供商: 服务提供商创建和维护一项或多项服务并提供给他人使用。构造可以创建本身的服务,也从第三方服务供应商处购买服务。
【3】服务使用者: 服务使用者向服务提供商提出请求,要求运行特定的服务。可以是整个体系、应用程序,也可以是其他服务。服务条约规定了服务提供商和使用者在相互交互时必须遵守的规则。服务提供商和使用者可以隶属于差别的部分、构造甚至是行业。
【4】服务注册表: 服务注册表(或服务存储库)是可用服务的网络可访问目录。它存储服务提供商提供的服务形貌文档。形貌文档中包含服务相干信息以及如何与之通讯的信息。服务使用者可以通过服务注册表轻松找到他们需要的服务。
四、SOA框架的工作原理

在面向服务的架构SOA中,服务独立运行并向其使用者提供功能或数据交换。消费者请求信息并将输入数据发送至服务。服务处置惩罚数据、实行任务并发回相应。例如,如果某个应用程序使用一项授权服务,它会为服务提供用户名和密码。服务验证用户名和密码并返回相应的相应。
通讯协议

服务使用确定网络数据传输的既定规则进行通讯。这些规则即称之为通讯协议。以下是实施SOA的部分尺度协议:
 ● 简单对象访问协议SOAP
 ● RESTful HTTP
 ● Apache Thrift
 ● Apache ActiveMQ
 ● Java Message Service(JMS)
   可以在SOA实施中使用多个协议。
五、SOA架构的限制

【1】可扩展性受限: 服务共享大量资源且需要和谐才能实行其功能时,体系可扩展性会受到显著影响。
【2】增加相互依赖关系: 面向服务的架构SOA体系会随着时间的推移变得更加复杂,并在服务之间发展出多种相互依赖关系。如果多个服务在循环中相互调用,则可能很难对其进行修改或调试。会集式数据库等共享资源也会低落体系速度。
【3】单点故障: 对于使用ESB的SOA实施,ESB会产生单点故障。ESB是一个会集式服务,与SOA提倡的分散化理念背道而驰。如果ESB出现故障,客户端和服务根本无法相互通讯。
   企业服务总线ESB是在与具有多个服务的体系进行通讯时可以使用的软件。无论使用的是什么技术,它都可以在服务和服务使用者之间建立通讯。

ESB的优势:ESB通过可重用的服务接口提供通讯和转换功能。您可以将ESB`视作将服务请求路由至适当服务的会集式服务。它还会将请求转换为服务的基础平台和编程语言可接受的格式。
六、SOA与微服务的对比

微服务架构是由SOA架构风格演变而来的。微服务解决了SOA的缺陷问题,使软件与基于云的现代企业环境更加兼容。微服务非常精细,支持数据复制(每个服务有本身的库),而非数据共享。这使得它们完全独立于通过轻量级API访问的本身的通讯协议。使用者通过微服务的API使用微服务,从而消除了对会集式ESB的需求。一个垂直切分,一个水平切分。
什么是微服务: 微服务架构由非常小但完全独立的软件组件构成,我们将这些组件称之为微服务,它们仅专注一项任务。微服务通过 API进行通讯,API是开发职员为让其他软件体系与其微服务进行通讯而开发的规则。微服务架构风格最恰当现代云盘算环境。它们通常在容器中运行。容器是将代码及其所有依赖关系打包的独立软件单元。
微服务的优势: 微服务具有云原生特性,可独立扩展、速度快、可移植且不依赖于平台。别的,微服务是解耦的,也就是说它们不依赖于其他微服务。因此,微服务可以当地访问它们需要的所有数据,而不是远程访问其他体系也可以访问和使用的会集数据。这会产生数据重复,但其出色的性能和灵敏性弥补了这一不足。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: SOA架构