登录 |  注册
首页 >  架构·案例 >  架构师学习之路-Java开发实战学习笔记 >  什么是SOA (面向服务的架构)

什么是SOA (面向服务的架构)

面向服务的架构(SOA)是一种软件开发方法,它使用称为服务的软件组件来创建业务应用程序。每项服务提供一种业务能力,并且服务也可以跨平台和语言相互通信。开发人员使用 SOA 来重用不同系统中的服务,或者组合几个独立的服务来执行复杂的任务。

例如,一个组织中的多个业务流程需要用户身份验证功能。您可以创建一项身份验证服务并在所有应用程序中重用,而不是为所有业务流程重写身份验证代码。同样,医疗机构中的几乎所有系统,例如患者管理系统和电子健康记录(EHR)系统,都需要登记患者。这些系统可以调用一项单一的公共服务来执行患者登记任务。

面向服务的架构有哪些优势?

面向服务的架构(SOA)比传统的整体式架构具有更多优势,后者将所有进程都作为一个整体运行。SOA 主要具有以下优势:

  • 缩短上市时间

    • 开发人员可以在不同的业务流程中重用服务,从而达到节省时间的的目的。借助 SOA,他们无需从头开始编写代码和执行集成,可以更快地装配应用程序。

  • 实现高效维护

    • 相比于整体式应用程序中的代码数据块,SOA 可以更轻松地创建、更新和调试小型服务。在 SOA 中修改任何服务都不会影响业务流程的整体功能。

  • 提高适应性

    • SOA 能够更快地适应技术进步,令您经济高效地现代化您的应用程序。例如,医疗机构可以在基于云的新应用程序中使用旧电子医疗健康记录系统中的功能。

SOA.png

面向服务的架构的基本原则是什么?

对于实施面向服务的架构(SOA)并没有明确定义的标准指南。不过,一些基本原则在所有 SOA 实施中是通用的。

互操作性

SOA 中的每项服务都提供了描述文档,这些文档详细说明了服务的功能以及相关的条款和条件。任何客户端系统(无论使用哪种基础平台和编程语言)都可以运行服务。例如,业务流程可以使用 C# 和 Python 编写的服务。由于没有直接交互,因此一项服务的更改不会影响使用该服务的其他组件。

松耦合

SOA 中的服务应该是松耦合的,尽可能少地依赖数据模型或信息系统等外部资源。它们还应该是无状态的,不保留历史会话或事务的任何信息。因此,在修改服务时,它不会显著影响使用该服务的客户端应用程序和其他服务。

抽象

SOA 中的客户端或服务用户无需了解服务的代码逻辑或实施详情。对他们而言,服务应该类似一个黑匣子。客户通过服务合同和其他服务描述文档获取有关服务用途以及服务使用方法的必要信息。

粒度

SOA 中的服务应该具有适当的大小和范围,最好为每个服务

打包一个离散的业务功能。然后,开发人员可以使用多个服务来创建一个用于执行复杂操作的复合服务。

面向服务的架构内包含哪些组件?

面向服务的架构(SOA)中包含四个主要组件。

服务

服务是构建 SOA 的基础数据块。服务可以是私有的(仅供组织内部用户访问),也可以是公开的(所有人都可以通过 Internet 访问)。每个服务都分别具有三个主要功能。

服务实施

服务实施是一个代码,用于构建执行特定服务功能(例如用户身份验证或账单计算)的逻辑。

服务合同

服务合同定义了服务的性质及其关联的条款和条件,例如使用服务的先决条件、服务成本以及所提供的服务质量。

服务接口

在 SOA 中,其他服务或系统通过服务接口与服务进行通信。该接口定义了调用服务执行活动或交换数据的方式。它减少了服务和服务请求者之间的依赖关系。例如,即使对基础代码逻辑了解甚少或者完全不了解的用户也可以通过服务接口使用服务。

服务提供商

服务提供商创建和维护一项或多项服务并提供给他人使用。组织可以创建自己的服务,也从第三方服务供应商处购买服务。

服务使用者

服务使用者向服务提供商提出请求,要求运行特定的服务。可以是整个系统、应用程序,也可以是其他服务。服务合同规定了服务提供商和使用者在相互交互时必须遵守的规则。服务提供商和使用者可以隶属于不同的部门、组织甚至是行业。

服务注册表

服务注册表(或服务存储库)是可用服务的网络可访问目录。它存储服务提供商提供的服务描述文档。描述文档中包含服务相关信息以及如何与之通信的信息。服务使用者可以通过服务注册表轻松找到他们需要的服务。

面向服务的架构的工作原理是什么?

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

通信协议

服务使用确定网络数据传输的既定规则进行通信。这些规则即称之为通信协议。以下是实施 SOA 的部分标准协议:

• 简单对象访问协议(SOAP)

• RESTful HTTP

• Apache Thrift

• Apache ActiveMQ

• Java Message Service(JMS)

您甚至可以在 SOA 实施中使用多个协议。

什么是微服务?

微服务架构由非常小但完全独立的软件组件构成,我们将这些组件称之为微服务,它们仅专注一项任务。微服务通过 API 进行通信,API 是开发人员为让其他软件系统与其微服务进行通信而开发的规则。

微服务架构风格最适合现代云计算环境。它们通常在容器中运行。容器是将代码及其所有依赖关系打包的独立软件单元。

微服务的优势

微服务具有云原生特性,可独立扩展、速度快、可移植且不依赖于平台。此外,微服务是解耦的,也就是说它们不依赖于其他微服务。因此,微服务可以本地访问它们需要的所有数据,而不是远程访问其他系统也可以访问和使用的集中数据。这会产生数据重复,但其出色的性能和敏捷性弥补了这一不足。

SOA 与微服务的对比

微服务架构是由 SOA 架构风格演变而来的。微服务解决了 SOA 的缺陷问题,使软件与基于云的现代企业环境更加兼容。微服务非常精细,支持数据复制,而非数据共享。这使得它们完全独立于通过轻量级 API 访问的自己的通信协议。使用者通过微服务的 API 使用微服务,从而消除了对集中式 ESB 的需求。

上一篇: 接口设计的六大原则
下一篇: java线程切换消耗时间排查-借助top指令对cpu消耗分析
推荐文章
  • 架构师在进行系统设计时,遵循一套复杂且综合的方法论,主要包括以下核心步骤:需求分析:理解并明确业务需求是架构设计的第一步。架构师需要与各利益相关者深入沟通,收集和分析业务需求、性能需求、安全性需求、扩展性需求等。领域建模:基于需求分析,构建抽象的业务模型或数据模型,明确系统的边界、核心实体及其关系。
  • 根据阿里交易型业务的特点,以及在双十一这样业内罕有的需求推动下,我们在官方的MySQL基础上增加了非常多实用的功能、性能补丁。而在使用MySQL的过程中,数据一致性是绕不开的话题之一。本文主要从阿里巴巴“去IOE”的后时代讲起,向大家简单介绍下我们过去几年在MySQL数据一致性上的努力和实践,以及目
  • 随着深度学习在图像、语言、广告点击率预估等各个领域不断发展,很多团队开始探索深度学习技术在业务层面的实践与应用。而在广告CTR预估方面,新模型也是层出不穷:WideandDeep、DeepCrossNetwork、DeepFM、xDeepFM,美团很多篇深度学习博客也做了详细的介绍。但是,当
  • 1.背景搜索优化问题,是个典型的AI应用问题,而AI应用问题首先是个系统问题。经历近10年的技术积累和沉淀,美团搜索系统架构从传统检索引擎升级转变为AI搜索引擎。当前,美团搜索整体架构主要由搜索数据平台、在线检索框架及云搜平台、在线AI服务及实验平台三大体系构成。在AI服务及实验平台中,模型训练平台
  • 行业算法版简介OpenSearch-行业算法版是基于阿里巴巴自主研发的大规模分布式搜索引擎搭建的一站式智能搜索业务开发平台,目前为包括淘宝、天猫在内的阿里集团核心业务提供搜索服务支持。通过内置各行业的查询语义理解、机器学习排序算法等能力,提供充分开放的引擎能力,助力开发者快速搭建智能搜索服务。Ope
  • 一.概述我们在考虑MySQL数据库的高可用的架构时,主要要考虑如下几方面:如果数据库发生了宕机或者意外中断等故障,能尽快恢复数据库的可用性,尽可能的减少停机时间,保证业务不会因为数据库的故障而中断。用作备份、只读副本等功能的非主节点的数据应该和主节点的数据实时或者最终保持一致。当业务发生数据库切换时
学习大纲