编辑整理:IO酱

SOA最近在汽车电子领域备受关注,正好最近也需要写一篇SOA相关的论文,学习到了不少SOA相关的概念及应用知识,所以打算把我了解到的相关知识及想法记录下来。

SOA是什么

SOA的全称是面向服务的架构「- , SOA」,类比面向对象的架构,SOA就是一种以服务为核心的架构。有许多不同的组织从不同的视角对SOA进行了描述,但迄今为止还没有一公认的定义。

我们先来看看W3C对它的定义 “SOA是一种应用程序架构什么是SOA,在这种架构中,所有功能都定义为独立的服务,这些服务带有定义明确的可调用接口,能够以定义好的顺序调用这些服务来形成业务流程。“

SOA模型(图片来源:软件体系结构原理、方法与实践 )

可以看到关键字「服务」,「明确定义的接口」,接下来我们一个个来理解。

什么是「服务」呢?服务是一种比构件粒度更大的信息集合,实际是包含实现了多个关联业务需求的逻辑组合,并且允许每个服务使用特定的平台,架构或技术方案。

图片

单个服务内部结构(图片来源:软件体系结构原理、方法与实践 )

关于「明确定义的接口」,大家可能想这还不简单吗,不就是接口定义要从使用者角度编写并且标准化吗?其实不仅如此,面向服务的接口不同于构件的接口,他的实现与特定语言无关,采用WSDL技术进行定义,可以方便的实现上述异构服务之间进行服务调用。

SOA的发展历程

SOA的发展大致分为3个阶段分为混沌,壮大,演化。

SOA的起源可以追溯到90年代末,一家叫做的信息技术研究和分析的公司提出了SOA的设想。

进入千禧年后,随着以Web为代表的互联网经济的兴起,各种电子商务业务得到迅速的发展,各大企业面临消减成本和随需应变这2个问题,SOA恰恰能满足集成各种异构系统及高度的灵活性可用性,因此重新受到人们的关注。下图是2008年W3C发布的Web技术发展展望,可以看到当时同时伴随着XML, Web2.0等技术的发展,SOA崛起的技术基础已经备齐,之后便进入飞速的发展壮大时期,涌现出来诸如IBM SOA参考架构(见下图), SOA等一大批SOA企业级解决方案。

W3C 2008年发布的Web技术发展展望(来源:W3C官网)

IBM SOA参考架构

后来人们发现传统的基于ESB的SOA的诸多问题,便兴起了SOA的变种微服务架构,微服务架构基本的思想是更细粒度的服务化,服务间分布式调用。

从SOA技术的发展我们可以看到技术与商业有不可密分的关系什么是SOA,一方面新技术推动商业目标的实现,一方面商业又给技术的发展注入源源不断的动力,所以一个新技术的产生,如何应用实践对它的未来发展至关重要。

SOA的特点SOA的关键技术SOA如何在汽车上的应用?

随着目前SDV(软件定义汽车)浪潮的兴起,越来越多的汽车同行开始考虑,如何用软件创造价值?如何更好的管理车上的上百个ECU(相当于各种异构的系统)?如何更好的应对需求的增长?如何提升车载OS的可用性等一系列问题,这些坑似乎在以Web为代表的互联网经济的兴起过程中也遇到过类似的,只是平台不一样罢了。

这时我们回过头来看看SOA的特点可扩展性强,高可用,松散耦合,标准化接口,支持异构系统的集成,虽然在Web领域正在逐渐被微服务取代,但是他的优点确实可以借鉴到汽车电子领域啊。

你可能会问,在Web上都已经用了几十年了怎么才到汽车电子领域呢?原因我认为有几点1.技术不满足,虽然从宏观角度看CAN网络通讯也解耦了各个ECU,但奈何速率带宽不足,且无法较好的满足可扩展性要求。2.各个ECU独自为战,没有人从汽车电子系统架构的角度思考整车系统的架构设计。但最近随着车载以太网技术的发展,EEA,SDV的兴起,使得SOA开始在汽车电子领域的焕发青春。

那么该如何借鉴SOA以及借鉴时需要关注哪些点呢?我认为总体的原则是借鉴Web SOA技术的开发思想,如开放性,服务化,敏捷等。下面我将从以下几个方面阐述SOA在汽车电子领域应用的关注点。

服务的拆分

服务的拆分在Web上是个重要的研究课题,一般可以从业务角度或领域概念角度进行。在车载领域有着上百个ECU,每个ECU提供各种不同的服务,采用的技术平台语言均不一样,不能简单粗暴的直接以目前各个ECU作为服务的拆分结果,比如多一个ECU就要多一份硬件成本,及之后的开发测试,维护成本。我们应该尝试从系统的角度出发,梳理整个汽车电子领域的业务模型,从垂直领域出发看看那些业务是关联的组合的一起,之后在从水平领域出发哪些是基础服务,哪些是可扩展服务,允许一个ECU可以提供多个服务(AVNT主机既提供仪表服务,又提供娱乐服务等),最后和实际的ECU分布现状进行匹配融合,以找到最佳的服务拆分结果,这样才能真正的发挥SOA的作用。

服务间通讯

在Web上一般采用ESB实现,有各种开源的框架(如IBM ,Mule ESB )来支撑,完成服务的注册,发布,调用,有的甚至还具备负载均衡,网关路由机制。使企业可以专注于自身业务服务的开发,并快速方便的完成服务的开发上线。在汽车领域目前随着以太网通讯技术的发展,相信未来会有更多的服务商开发基于车载以太网的ESB中间件来满足这样一个需求,我认为在这个环节车厂需要更加关注服务的接口定义,良好的接口定义更加利于平台的平滑式演进。

服务的治理

随着服务的独立运行及互相调用,对整车系统的稳定性形成一个较大的挑战,例如基础服务调用压力过大导致调用者等待,一个服务的失效导致他调用者失效,一连串的服务调用链失效可能引发整车系统的雪崩。因此一旦采用了SOA,一定要系统性的对整车系统进行可用性研究。可以分别从单个系统及全局2个维度进行系统的可靠性设计工作。采用SFMEA设计手段发现问题,针对单个系统可以采用主动检测异常,错误恢复机制等策略;全局角度可以给重点模块加强冗余设计,分配好服务的调用关系,过滤无关消息的转发等技术手段。

结语

纵观整个系统架构发展轨迹,从单体架构,到SOA架构,再到目前的微服务架构,架构设计的方向一步步往服务化的发展方向靠拢,但一个根本目标没有改变,构建一个开放的,高性能,高可用性架构。汽车软件领域应该紧紧跟随尤其Web方面一些新的技术架构,因为我们的目标都是一样的,可能技术无法通用但思想一定是可以借鉴的,就比如SOA在汽车领域的应用。

参考文献:

[1] W3C

[2] 张友生, 软件体系结构原理、方法与实践

[3] 沈备军, 软件工程原理


限时特惠:
本站持续每日更新海量各大内部创业课程,一年会员仅需要98元,全站资源免费下载
点击查看详情

站长微信:Jiucxh

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注