前言

经常有朋友提到,SOA到底是个啥玩意,为了搞清楚SOA是什么,以及SOA怎么做?本篇文章基于SOA参考架构中给大家分享一下SOA系统建模。

全系内容可在《搞一下汽车电子》后台回复 “系列”,或进入菜单栏 “分享平台” --> “系列分享”

本系列请点击:《搞一下面向服务的架构SOA》

所有系列请点击:《汽车电子系列分享》

参考架构概述

What 参考架构

首先,第一个问题,什么是参考架构?

SOA 参考架构是对抽象架构元素进行建模,独立于特定的解决方案、技术、协议。所以SOA 参考架构不是具体的架构,是SOA这个范式的抽象实现,是以抽象的方式来实现SOA系统!

上期,我们分享了SOA 参考模型,那么SOA参考模型与SOA 参考架构有什么区别?

SOA 参考模型描述了SOA相关的元素重要概念及元素之间的关系。
SOA 参考架构主要阐述建模所涉及的内容,同时独立于任何特定解决方案,主要为SOA 系统建模提供一种通用的参考实现。

目标及关键因素

SOA参考架构的主要目标是解决以下问题:

1.如何有效使服务消费者和服务提供者进行交互?
2.如何让参与者在基于SOA系统进行交互时,清楚的了解对方?

实现上述目标的关键因素是:
1.行为:对参与者在系统内的行为进行记录
2.信任:对参与者行为的进行描述
3.交互:对参与者之间如何进行交互的描述
4.控制:对整个SOA系统的管理和治理的说明

为了实现上述关键因素,SOA参考架构主要从三个角度进行了描述:
1.从参与SOA系统的角度:对系统约束和环境进行了相关说明。
2.从实现SOA系统的角度:通过UML类图等描述了如何有效构建基于SOA的系统。
3.从管理SOA系统的角度:对SOA系统治理、管理、测试流程等方面进行了说明。

本文主要关注的是如何对SOA系统进行建模,因此重点从实现SOA系统的角度进行说明。

SOA实现相关的模型元素

SOA实现侧重于解决以下问题:

什么是服务?
需要什么支持?
如何实现他们?

主要包括以下模型:

服务描述模型:用于告知参与者存在哪些服务以及可以使用它们的条件

服务可见性模型:指在服务交互之前,参与者需使用适当的方式相互可见

服务交互模型:描述了在定义的条件和协议下使用服务的过程

策略和合同模型:详细阐述了服务使用的条件和SOA系统参与者之间的协议

接下来会对上述四个模型进行详细说明。

服务描述模型

SOA实现相关的模型元素

服务描述是什么?
服务描述是一个工件,通常基于文档,可能是单个文档或一组文档。

服务描述用来干什么?
服务描述用于定义、使用、部署、管理(或以其他方式)控制服务所需的信息,这些信息包括:

1.服务可达性
2.服务接口
3.服务功能
4.服务相关联的策略等信息

服务描述模型如下图所示:

需要注意的是:

1.服务描述本质上是不完整的,但当参与者可以根据所提供的描述访问和使用所描述的服务时,即可认为服务是足够的

2.服务描述包含充分支持上下文所需的信息:如服务版本

服务接口描述

服务接口是什么?服务接口是与服务交互的手段。

服务接口描述模型如下图所示:

服务接口描述应包含行为模型和信息模型。
行为模型应包含Action模型与Process模型。
Process模型中应说明使用的信息交互模式MEP。

MEP属于服务交互模型的内容,我们在这进行说明如下。

MEP

MEP是指信息交互模式,MEP是Process模型中的关键元素。
MEP是逻辑视图,不是物理视图,MEP特性于实现,是实例化服务交互的一部分。

主要有两种信息交互模式:
1.请求/响应

请求/响应MEP模型如下图所示,服务消费者代理(不强制要有代理的角色)发送请求,服务提供者代理响应请求,有关为什么有代理的原因,我们争取在后期给大家分享。

本篇文章的主要目的是分享SOA系统相关的模型,为实现SOA系统提供一种参考。

需要说明的是,请求/响应是一个操作,因此会导致真实世界效果。

2.Event通知

Event通知 MEP 如下图所示。

基于事件通知的MEP采用单向消息形式,由通知程序组件(上图中为服务提供者代理组件)发送,并由感兴趣的组件(上图中为服务消费者代理组件)接收。

之所以会有Mediator的原因是,发布/订阅消息可能会由于网络中断或通信中断而导致Event通知丢失,因此,常用第三方中介组件来解耦发送和接收组件。

交互信息相关的内容,应在信息模型中指定。

举个简单的示例如下:

上图中,我们建立一个名为 " radarInterface1 "的服务接口模型。
描述Action模型为 " Event订阅 "
在Process模型中,建立Event通知MEP,并定义一个名为 " brakeEvent " 的事件
定义该接口上交互的信息为 " RadarObject "
定义该接口上交互的信息格式为 " Structure "

服务可达性

服务可达性是服务可见性模型中的属性之一(这里对服务可见性模型进行说明)

服务可见性由意识、意愿和可达性组成。

服务可见性是什么?服务可见性是指在服务可以互操作之前,参与者必须使用适当的方式相互可见。

意识
在 SOA 系统中,可以通过交互或基于注册表/存储库中的服务描述来实现意识。

意愿
获得意识后,参与者使用服务描述来帮助确定他们与其他参与者互动的意愿。意识和意愿都是在消费者/供应商交互之前确定的。

服务可达性
服务可达性是为了使服务参与者能够相互定位和交互;
可达性涉及了解服务的端点、协议和存在行。

端点:表示行为的概念位置,对于服务描述,它指实际发送消息的实际地址。
协议:定义服务交互机制的细节,一种结构化的通信方法。
存在性:对服务在特定时间点的可达性的度量

可达性需要有服务位置和描述通信方式的协议等信息。服务可达性模型如下图所示:

举个例子如下:

上图中,我们使用SOME/IP这个协议,当然也可以自定义。

基于SOME/IP协议
定义服务ID为:99
服务版本为:1.0
事件ID为:1
传输层协议为:UDP

定义使用的IP地址为:192.168.2.1

定义服务实例ID为:19

服务功能

接下来,我们看一下服务功能相关的模型。

服务功能描述了与服务交互的预期结果,功能代表某些领域内的活动,可产生所需的真实世界效果。

需要注意的是服务功能可能受到技术假设/约束的限制,但是真实世界效果必须与技术假设/约束一致。

服务功能模型如下图所示:

举例说明如下:

上图中,我们定义该接口提供的功能为:提供雷达数据
技术假设为:一次调用后输出3组数据
服务级别真实世界效果应为:一次调用后会输出3组有效的雷达数据

当然,还有Action级别相关的真实世界效果等内容,比较容易理解,上图中没有体现。

​服务策略与合同模型

服务策略规定了与服务交互的条件和约束
策略是约束的表达,由确保约束可行的利益相关者发布

合同是参与者之间的协议

策略与合同有一个共同特性是:必须强制执行约束

策略与合同相关的模型如下(下图中包含参与者的角色)

举个例子如下图所示:

上图中,我们描述了一个简单的服务策略:需要对服务访问者的身份进行识别,只有 " fusion "服务查找时再响应。

需要注意的是,使用时,需要考虑策略冲突的问题,可以通过使用策略优先级来应对策略冲突的发生。

服务描述模型使用

上述,我们对服务描述建模进行了说明,接下来,我们从服务描述模型使用的角度进行分享。

服务描述使用的模型如下图所示

需要说明的是,Action 通常通过Message 调用的,调用Action的结果是一个或多个真实世界效果。任何Action级别的真实世界效果都必须反映在包含该Action的服务级别的真实世界效果中。

将参与者加入模型后,示例如下图所示:

上图中,服务提供者和服务消费者通过访问服务描述建立 “意识”。

套用我们前面例举的 " radarInterface1 " 的相关的服务描述,这里我们定义服务提供者为 “radar”,定义服务消费者为 “fusion”(当然需要开发相应的代码,这部分内容不属于建模实现的部分,这里不做说明)。

当 “radar” 和 " fusion "完成交互时,会产生相应的真实世界效果(笔者做的demo实在虚拟机上完成的,交互的结果是,fusion输出接收到的三组数据)。

当然,在设计的过程中,要对协议的一致性进行考虑,这属于执行上下文相关的内容,比较简单,一般不用特意考虑,因此这里也不做赘述。

还有为方便后期追溯,要对交互产生的结果进行日志记录,在设计时考虑即可。

上述便是对实现SOA系统建模相关的四个模型进行的分享。

服务组合模型

最后简单说明一下服务组合模型。
服务组合是从一个或多个其他服务组合单个服务的行为。

服务组合所涉及的原则是:
松耦合
选择性透明或不透明
动态交互

举个简单的例子,如下图所示

上图中,服务 “radar” 具有一个服务接口 “radarInterface” ,且依赖于其他两个服务。
但是对于 " fusion "来说,它不知道服务 “radar_ipc” 跟 "radar_someip"被服务 "radar"使用,它只关心 “radar” 服务的成败。

“radar_ipc” 跟 “radar_someip” 服务被作为服务 "radar"组合的一部分。

当然,在 “fusion” 通过 "radar"服务访问 "radar_someip"时,需要设计相关的执行流程。

本篇分享就到这里。

跳转阅读

建议解锁2021 全52期 workshop,体验更好,还可以语音Q & A,详情点击:

《2021 SOA、AP AUTOSAR、新架构下的软件技术、汽车以太网技术系列线上workshop》

跳转阅读:SOA系统建模

联系我们

微信:shactiontech
邮箱:support@shactiontech.com

搞一下SOA | 11 SOA 系统建模相关推荐

  1. 搞一下SOA | 01 SOA详解及行业现状

    前言 搞一下SOA系列会从EEA趋势.SOA实例分析.SOME/IP.MQTT.HTTP.DDS.E2E保护.SOA软件架构设计.ARXML设计等方面进行分享 由于当前汽车行业很多OEM都在做SOA. ...

  2. SOA Presentation - SOA概念介绍

    前几天正好给实习生做了一次SOA概念的培训,现在按照大纲把部分内容简要的摘出来.大体是一个关于SOA概念的介绍,可能会让人感觉到比较"虚",但事实上,SOA如果不谈到具体的实现技术 ...

  3. μSOA 架构 - SOA 的有力替代和补充

    白杨 2019-03 baiy.cn Copyright (C) 2016 - 2019 Bai Yang, baiy.cn / baiyang.name, baiyang@gmail.com, Al ...

  4. 为啥是SoA?(SoA化的挑战)

    目录 1 SoA的历史 2 从历史中能学到什么 3 实施SoA时的挑战 4 如何应对挑战 前篇文章我们讲,为了应对市场.需求和技术各个方面的变化带来的挑战,车载电子架构的SoA化可能是一个解决方向.那 ...

  5. 南京oracle soa,Oracle SOA平台之甲骨文SOA套件概述

    Oracle SOA简介 Oracle的SOA方案的一个现实驱动力来自于在收购了多家应用厂商后,Oracle需要使用一个先进的架构和平台灵活无缝地把这些应用集成起来,这个架构就是Fusion Arch ...

  6. 初看SOA:SOA是什么?

    SOA是什么? SOA是一种思想,通过"服务总线"屏蔽各种现有的和未来的服务组件之间的差异,使业务和技术完全解耦并能自由组合,更好的集成各种形式实现的服务组件. SOA的产生 传统 ...

  7. 每次发版都搞到晚上11点,我们能不能……

    " 将四持原则,融入到你的日常工作中,你将不会被「琐事」缠身." 在<持续交付 2.0>一书中,提到改善软件交付能力的「四持原则」. 它们分别是: 坚「持」少做, 「持 ...

  8. 工业相机选型(选择工业相机必须搞懂这11大要素)

    工业相机选型是机器视觉系统设计中的重要环节,它不仅仅直接决定所采集到的图像分辨率.图像质量等,同时也与整个系统的运行模式直接相关.工业相机选型好的工业相机应具有高精度.高清晰度.色彩还原好.低噪声等特 ...

  9. 搞一下AP AUTOSAR应用 | A1 从SOA-RM 到 SOA 到 AP AUTOSAR 应用

    前言 全系内容可在<搞一下汽车电子>后台回复 "系列",或进入菜单栏 "分享平台" --> "系列分享" 本系列请点击:& ...

  10. 彻底搞清楚!SOA和微服务的区别

    场景 如果我们打开支付宝首页,去看我们的余额,它会展示你的总资产,昨日收益.累计收益等信息.假如这个页面所展示的信息,都来自各个不同的系统/应用,我们通过各个接口把这些数据展示出来.如果我们现在要在前 ...

最新文章

  1. linux svn missingargument -m,缺少參數-m在windows powershell中使用svn。
  2. 美国能源部宣布SunShot2020目标完成超90%
  3. Java如何转换protobuf-net中的bcl.DateTime对象
  4. java android下载文件_Android 下载文件(jsp做的服务器上)下载下来和源文件大小不一...
  5. flex组合流动布局实例---利用css的order属性改变盒子排列顺序
  6. 单片机c语言 openssl,Linux下C语言使用openssl库进行加密
  7. Linux 下的网络配置
  8. Oracle——17概要文件
  9. Windows10+Ubuntu 18.04.2+ROS 安装笔记(SSD单硬盘)上
  10. mysql 强制使用索引_快速找出MySQL数据库冗余索引和未使用索引
  11. dc持久内存与mysql_为什么持久性内存会改变你的世界!
  12. 电脑重装系统按什么键进U盘PE
  13. 设计模式 - 模版方法
  14. Word打印或打印预览或另存为PDF时出现“错误!未定义书签!”的解决办法
  15. 东南大学成贤学院计算机报名,2021上半年江苏东南大学成贤学院计算机等级考试报名通知...
  16. 牧羊人和金斧子|不要和产品聊天!
  17. 用python turtle画画草地天空星星花朵小草
  18. [高通SDM450][Android9.0]外接键盘闪屏以及默认使用虚拟键盘
  19. 决策树模型——鸢尾花分类
  20. 普渡大学计算机科学在美就业,优势背景助力美国普渡大学计算机科学CS本科申请!...

热门文章

  1. ADF单位根检验三种形式_读文4:面板数据模型建立步骤、面板数据模型设定检验(F test)、面板协整模型(ADF test)...
  2. 毕业设计之 ---- 基于jsp的网上购书系统
  3. 读书:Jenkins权威指南[2016京东畅销书]
  4. Windows查看所有的端口及端口对应的程序
  5. 孤儿进程与僵尸进程产生及其处理
  6. 使用curl自动签到百度贴吧
  7. 超级外链工具-在线SEO超级外链群发工具免费
  8. iphone 4 到iphone 6s plus的屏幕尺寸
  9. linux3d游戏,笔记本linux系统能玩3d游戏吗?
  10. 手机上万里挑一的CAD看图软件,好用到颠覆你的世界观!