基于DDS的SOA服务成框架的研究

DDS与SOA

Posted by Honcy Ye on February 16, 2022

概述

提出了基于DDS的SOA服务集成框架,为分布式实时应用系统提供通用的服务集成和管理,实现资源的共享和重用。

DDS说OMG组织制定的分布式实时通信中间件规范,具有同步解耦、多对多通信和丰富的QoS等优点,同时兼顾搞笑实时的传输性能。 分布式实时系统->应用规模增大->应用交互需求增大->应用之间缺乏有效的资源共享和系统管理途径,导致功能冗余,运维低效->提出SOA服务集成框架实现功能共享和重用

  • 要进行服务集成和管理,就需要能够形式化地定义和描述服务->提出了一套基于XML+IDL的服务描述语言
  • 服务之间联系起来就需要服务引用机制,管理服务就需要服务管理模型

背景&动机

SOA

面向服务架构:是一种组织和利用分布式软件功能的范式,把应用中不同的软件组件功能分离开来,定义为统一的“服务”的形式。服务具有自描述性和可见性更易于被发现、理解和使用。也就是要能够形式化地描述服务,并且提供统一的发布、发现、引用(使用)服务的方式。 简单来说就是:当我想要系统提供给我某种数据的时候,无需自己去连接数据源,认证,获取数据,而是只要通过统一的描述方式描述一下自己需要的功能,就能够通过接口直接获取想要的数据。

服务之间通过良好的接口和契约联系起来,接口具有中立、通用性,跨平台,提高软件功能重用性和互操作性,服务松耦合使得应用系统有更好的灵活性可扩展性。

传统SOA实现的不足

Web Services和REST等,虽然能够很好地实现SOA架构中服务描述、服务注册、引用等需求,但是没有考虑信息交换的实时性,在实时数据传输能力上不足

研究内容

服务模型

建立描述服务的方法。尽可能简洁且准确充分地描述一个服务的属性接口。要同时考虑两者

  • SOA参考模型:服务的基本特性、服务描述规则
  • DDS通信模型、数据模型

服务集成框架实现机制

  • 服务引用
  • 服务管理:
    • 静态管理:多版本服务信息及其服务文件的管理,推送服务版本更新信息
    • 动态管理:服务激活后监控,服务与平台,服务之间

原型系统设计与实现

发布订阅接口适配

应用系统之间相关服务集成过程中会存在发布订阅双发的IDL定义不一致的情况,所以要通过接口适配来实现不一致情况下的通信

研究现状

DDS

平台、语言无关的通信机制,用户只需专注于应用组件的数据需求。

SOA

  • SOA最早由Gartner公司提出,定义了它的主要特性
  • OASIS提出了SOA参考模型,定义最小核心概念
  • W3C对SOA定义:一套可以被调用的组件,用户可以发布组件的接口,也可以发现其他接口并调用其功能
  • 至今没有统一的标准
  • SOA四大基本组成要素:服务注册中心,服务提供者,服务消费者,合同
    • 服务注册中心:服务信息的数据库,提供注册/发布服务接口以及查询/订阅服务接口的平台
    • 合同:服务提供者和消费者之间的通信协议或者说交互规范,对服务请求和响应进行格式化的定义

Web Services

介绍

SOA的一种经典实现。采用开发协议将普通应用程序转换为了网络(web)应用程序 服务提供者通过WSDL(web服务描述语言)来描述其所提供的Web服务以及如何访问该服务,通过支持UDDI(通用描述发现整合协议)目录服务的注册中心进行服务的发布和查询,最后服务消费者和提供者之间利用SOAP(简易对象访问协议)作为数据交互协议来进行服务的绑定和调用。

优点和缺点

  • 优点:WSDL和SOAP都是基于XML定制的协议;SOAP可以和现存的许多通信协议结合使用,比如用HTTP。这些标准都是通用的跨平台的,所以Web Services也是跨平台的
  • 缺点:基于文本的SOAP消息,传输和解析开销比较大,实时性不好

分布式服务框架(RPC架构)

用来提高业务复用度和整合能力。开源的有阿里的Dubbo。

  1. 轻量级java容器作为服务容器,负责启动、加载、运行服务提供者
  2. 服务提供者在启动的时候向注册中心注册自己提供的服务
  3. 服务消费者在启动的时候向注册中心注册自己需要的服务
  4. 注册中心返回服务提供者地址列表给消费者,如果有变更,注册中心将基于长连接推送变更给消费者;
  5. 服务消费者哦从提供者的地址列表中,基于软负载均衡算法,选取其中一个提供者进行调用,如果调用失败则重选
  6. 提供者和消费者各自统计累计调用次数和调用时间,定时发送给监控中心。这样注册中心可以通过拥有的信息更好地做资源调度和负载均衡等

但是因为现在的分布式服务框架大多上针对大规模互联网应用的需求,大多基于RPC框架可实现请求/响应式的服务调用,缺乏对发布/订阅式通信机制的支持,不适用于数据驱动型的分布式实时应用。但是其所构建的SOA服务框架的架构思想用于服务解耦、服务治理的实时应用系统。

SOA实时应用领域相关研究

现有的SOA实时应用领域相关研究主要是对特定问题的优化方案,将原有发布/订阅系统SOA化。对数据生产者和消费者进行主题解耦,但是缺少对服务注册信息管理、服务生命周期管理等有效的服务治理措施。

基于DDS的SOA服务集成框架研究

服务模型的设计

服务的特性

  • 软件实体:对特定业务逻辑进行了封装,向用户提供有意义的功能,应该是长期稳定,可版本化的
  • 具有合约:合约规定了服务提供和服务消费的职责其中含有接口描  、绑定信息(如所节点等)、功能说明、服务策略以及相关的约束等等。合约 常是自包含的且抽象于服务的实现。
  • 可互操作:服务可以跨平台,跨语言调用,通常基于消息进行通信
  • 可组装:可给予现有服务构造新服务,组装后隐藏内部细节,只向外提供合约
  • 可复用
  • 可发布、可发现

任务模式:不同的任务模式需要启动不同的服务。通过任务模式属性可以方便系统切换任务模式时开启不同的服务组

服务描述语言

  • XML可扩展性强 ,但是描述数据类型、服务接口比较繁琐不简洁
  • IDL简洁明了,但是只能定义数据类型和服务接口 所以结合两者作为服务描述语言XML+IDL