目录

1.SOA 是什么?

2.SOA 要解决什么问题?

3.SOA如何解决这些问题?

4.SOA相关的技术

5.SOA的构建过程


1.SOA 是什么?

SOA (Service-oriented architecture)即面向服务架构, 简称SOA。

TOG(The Open Group)下有专门针对SOA的一个工作组。

SOA并不是某一种具体的技术实现,它是一个系统架构的设计思想。

如上图所示,(The Open Group)提出了一个SOA架构的参考模型,主要包括基础设施服务、服务总线、关键服务组件、开发工具、管理工具等。

SOA是面向服务的架构,从标准模型中,我们可以看出其核心就是强调面向服务。

2.SOA 要解决什么问题?

问题1:系统间无法互通互联问题

一个典型的案例是,我们现在看到,华为的各个设备之间,互通互联性做的相当好,如电脑-手机-pad-电视等之间基本可以实现相互协同;

但是我们知道小米和华为之间,他们和华为内部设备比,之间的互通互联性则是相当差的。

再举一个案例,目前大火的万物互联,包括IoT设备,各种智能硬件,等等,我们希望他们能够根据按照客户的意愿进行整合协同,因此他们之间的互通互联的问题则必须解决;

对一个系统来说在不同时期、应用不同技术、与不同的厂商合作,建设了不同规模的应用系统,那么就造成了系统,信息不一致,在一定程度上是难以整合。

问题2:业务需求灵活多变问题

拿自动驾驶系统举例来说,里面有各种不同的需求和功能,比如泊车,ACC,LKA... 也比如按照硬件需求来说,有摄像头,激光雷达,毫米波雷达,超声波...

可能客户的需求是,选择部分传感器组合,然后要求组合实现不同的自动驾驶功能,这就要求自动驾驶系统具备高度的需求适应性。

因此面对业务的需求的灵活多变,必须要求系统适应这种变化的需求。

3.SOA如何解决这些问题?

为了解决以上问题,SOA需要解决的技术痛点包括:

解决各种异构平台的差异

包括不同硬件结构,不同芯片指令集,不同驱动程序,不同的操作系统和开发环境,不同数据库等的差异;

解决互操作性

由于不同软件之间在不同平台之间相互移植非常困难,因此需要定义一套与平台无关的通信方式,解决互操作性差异;

解决复用性

针对系统中相同的功能,通过一定的封装,尽量以一种服务的方式,提供给系统中各需求方。

针对以上的要求,SOA的主要特点如下:

统一服务封装

SOA通过标准的、支持Internet、与操作系统无关的SOAP协议实现了连接互操作。

服务的封装是采用XML协议,具有自解析和自定义的特性,这样,基于SOA的中间件还可以实现语义互操作。

高度复用性

服务是通过标准封装,服务组件之间的组装、编排和重组,来实现服务的复用。

这种复用,可以在不同企业,甚至全球复用,达到复用的最高级别,并且是动态可配置的复用

松耦合关系

SOA架构在松耦合解耦过程也发展到了最后的境界,将网络连接、数据转换、业务逻辑全部解耦。

如分布式对象技术将连接逻辑进行分离,消息中间件将连接逻辑进行异步处理,增加了更大的灵活性。

通过通过消息代理和一些分布式对象中间件将数据转换也进行了分离。

4.SOA相关的技术

SOME/IP

可参考博客:https://blog.csdn.net/AgingMoon/article/details/104166715?spm=1001.2014.3001.5501

web service

web service 体现SOA思想的基本的模型,以 Service Requestor, Service Provider和 Service Broker等构成,通过Point-to-Point的连接交换并呼叫服务信息。

它是一个平台独立的,低耦合的,自包含的、基于可编程的web的应用程序,可使用开放的XML标准来描述、发布、发现、协调和配置这些应用程序,用于开发分布式的互操作的应用程序。

主要解决

  • 服务之间如何传输数据
  • 数据的格式是怎样的
  • 如何发布和查找这些服务

ESB 

即企业服务总线,提供可靠消息传输、服务接入、协议转换、数据格式转换、基于内容的路由等功能,屏蔽了服务的物理位置,协议和数据格式

承担结合得松散或者没有结合的构成因素间的中介关系作用并支持能直接通信的Web Service环境。

BPM

Business Process Management,业务流程管理,利用自动化的流程来控制系统和人、文件、应用程序间同步连接的解决方案。

BPM是定义各成员间的业务并且构成工作流程和系统间整合(people to people,people to application, application to application)的EAI 解决方案。

对各单位业务和整合业务、系统间连接进行建模,因此是改善工作流程和EAI功能等整个公司进程并且提供整合管理的解决方案。

SOAP

Simple Object Access Protocol,即简单对象访问协议, 简称SOAP。

SOAP是基于XML在分散或分布式的环境中交换信息的简单的协议,用于访问网络服务。可使应用程序在 HTTP 之上进行信息交换。

WSDL

Web Services Description Language,即网络服务描述语言,简称WSDL。它是一门基于XML的语言,用于描述Web Services以及如何对它们进行访问。

RPC

Remote Procedure Call,远程过程调用。RPC通常特指在一个应用中调用另一个应用的接口而实现的远程调用。

一个RPC框架的实现包含以下部分:

  • 动态代码
  • 序列化和反序列化
  • 通信
  • 异常处理

5.SOA的构建过程

第一步,服务建模,即服务识别和颗粒度确定。,服务识别的主要任务,是确定在一定范围内(如是整车,还是自动驾驶系统,还是某个MCU)可能成为服务的候选者列表,

并确定服务的颗粒度,标识服务的接口。服务建模也就确定了系统架构的耦合程度

第二步,服务封装,主要任务是对服务进行规范性的描述,其中包括输入/输出消息等功能性属性,以及服务在业务层面的属性。

并决定服务以何种形式向外提供服务。服务可能是新开发的业务功能和业务对象的封装,也可能是遗留系统的服务封装,将遗留系统的软件资产以服务的形式进行封装,在新的架构上利用已有的资产。

第三步,服务治理,将已经封装好的服务进行集中统一有效的管理。通过ESB基础设施,提供服务注册、存储、安全控制和版本管理等。

服务注册主要任务是将服务注册到服务库,此时需要决定服务的命名、安全、性能、时间特性。

第四步,服务编排,根据业务流程的需求,对服务进行组合和组装。服务组装是以实现业务流程为目的,通过对业务服务的组合和组装,实现更粗粒度的业务服务,实现最终的业务需求。

第五步,应用交付,主要任务是完成业务系统服务化组装和服务部署,实现业务按需交付。

Logo

开源、云原生的融合云平台

更多推荐