第一章、什么是SOA?
SOA可以理解为一个通讯库。但是涉及的交叉领域特别多,所以显得很难。
1.SOA的定义
- SOA不是一种具体的技术,而是一种架构策略层面的指导思想或者范式,以达到组织利用处于不同所有权范围控制下信息的分布式系统。
- SOA作为一种面向服务的架构,是一种软件架构设计的模型和方法论。利用现有的各种软件体系,重新整合并且构建起一套新的软件架构。这套软件架构能够随着业务的变化,随时灵活地结合现有服务,组成新软件,共同服务与整个公司的业务体系。
备注:SOA并不是新技术,IT行业早就有SOA的概念以及很多应用。目前,重点要探讨的是如何将SOA技术应用于汽车领域,如何在汽车上做好服务化的设计。
2.SOA的主要特点
SOA的主要特点是松耦合带来的灵活编排。
- 标准化与松耦合
SOA是一个服务模型,它将程序的不同服务通过定义良好的借口和契约联系起来。接口是采用中立的方式进行定义的,应该独立于实现服务的硬件平台、操作系统和编程语言。构建在这样的系统中的服务可以以统一和通用的方式进行交互。这种中立的接口定义的特征称为服务之间的松耦合。松耦合系统的好处有亮点,一是灵活性,二是当组成系统的某个服务内部结构和实现发生改变的时候不会影响其他服务,系统依然能够保持稳定。 - 服务可编排
服务是最核心的抽象手段,业务被划分(组件化)为一系列粗粒度的业务服务和业务流程。业务服务相对独立、自包含、可重用,由一个或者多个分布的系统所实现,而业务流程由服务组装而来。一个“服务”定义了一个与业务功能或业务数据相关的接口,以及约束这个借口的契约,如服务质量要求、业务规划、安全性要求、法律法规的遵循、KPI等。契约采用中立、基于标准的方式进行定义。通过服务注册(Service Registry )加上服务总线(Service Bus)来支持动态查询、定位、路由和治理的能力,使服务之间的交互式是动态的,服务的请求者和提供者之间高度耦合。 - 为什么需要服务松耦合?
对于松耦合系统的需要来源于业务应用需要,可以根据需求编排不同的服务,提供不同业务功能。业务需要变得更加灵活,以适应不断变化的环境、用户的需求、项目的需求等,比如经常改变的政策、业务级别、业务重点、合作伙伴关系、行业地位以及其他与业务有关的因素,这些因素甚至会影响业务的性质。能够灵活地适应环境变化的业务称为“按需业务”,在按需业务中,一旦需要,就可以对完成或执行任务的方式进行必要性的更改或者调整(编排)。
3.CAN和以太SOA的对比
CAN和以太SOA都可以视为一种模块化和标准化,这是共性的。但是两者思考的维度不同。
- CAN希望每个模块都可以实现独立的逻辑功能,而不同模块之间的结合则可以提供更复杂的逻辑功能,实现低成本的功能重构和重组。
- 以太SOA希望每个模块可以实现独立的业务功能