Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

add blog DDS #73

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
74 changes: 74 additions & 0 deletions blog/DDS/DDS 数据分发服务.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,74 @@
# DDS 数据分发服务

首先我们对DDS的定义进行介绍。

> DDS是一种实时系统的数据分发服务,作为开源的国际化中间件标准,DDS针对实时和嵌入式系统提供了*订阅-分发*的数据沟通方式。

DDS是一个中间件协议和API标准,由OMG(Object Management Group)制定,通过构建虚拟的全局数据池,将应用之间的沟通通过数据池进行连接,不同的应用可以抛弃以往复杂的沟通代码,通过数据池直接读写数据对象。DDS中同时还定义了QoS参数,稳定的架构设计等,保证DDS的稳定性和可靠性。

## DDS功能

#### 中间件 Middleware

在分布式系统中,中间件是存在于操作系统和应用之间的软件层,目的是让系统不同的组件之间能够更加容易地沟通和分享数据。以往开发者可能会耗费大量的精力在于应用之间的信息传递,而通过中间件,开发者只需要关注信息的具体内容,而不是信息传递机制。

![midware](.\images\midware.png)

### 数据中心化的沟通方式

##### 具体方法

处在同一个DDS数据池(DDS Domain)中的应用可以通过数据池进行沟通,定义不同的Topic名称来区分数据,分发者将数据以不同的Topic发送到数据池中,订阅者定义具体的时间和内容过滤器获取需要的Topic内容。不同的数据池相互独立,数据池之间没有数据交换。

![data_centricity](.\images\data_centricity.png)

在很多信息沟通功能的中间件标准和产品中,DDS采用了独特的数据中心的处理方式。大多数的中间件通过在应用和系统之间传递信息实现沟通,而在DDS的数据中心方式下,能够获取到包括上下文信息的所有内容。与传统的信息中心的中间件相比,传统中间件需要定义发送信息的代码,而在DDS中,只需要定义具体的数据分享时间和方式就可以将数据内容分享出来,避免了应用内大量的数据传输相关的代码。

### 全局数据空间

##### 信息定义方式

DDS数据池中,信息分享的单位是Topic中的数据对象。Topic定义了具体的名称和一些‘Key’ 属性,与数据库中的‘key’属性类似。DDS是点对点的沟通方式,不需要通过服务器或者云端来代理。

![global_data_space](.\images\global_data_space.png)

DDS将数据的本地存储称为‘全局数据空间’。在应用的角度来看,全局数据空间像是通过API访问的本地内容,而事实上,DDS发送信息和来更新远程节点上的存储内容,读取方式也与本地存储的类似。

DDS中的存储只是概念上的本地,给应用一种能够访问到整个全局数据空间的假象,事实上,并不存在一个对全部数据进行存储的全局空间,应用只在本地存储需要的内容,而全局数据空间实际上是一系列本地存储的集合。通过全局数据空间,DDS能够在嵌入式、移动端、云端,跨越多种语言,实现低时延的高效沟通方式。

## QoS(Quality of Service)

QoS为DDS提供了可靠性,系统活力和安全性。

在系统做出改变时,中间件动态配置在何处发送哪些数据,自动修改涉及到的部分,如果数据总量很大,DDS能够完成智能过滤和发送终端需要的数据,如果更新需要快速进行,DDS则会发送多播multicast信息来一次性更新数个远程应用。随着数据格式的发展,DDS会跟踪系统不同部分的版本迭代并进行自动转换。如果应用安全性要求较高,DDS将对访问进行控制,强制实施数据流路径,实时数据编码。

DDS的优势在于一个多变且要求很高的环境中,能够高速实现同步修改。

## 动态发现

DDS提供了订阅者和分发者的动态发现,增加了DDS应用的可拓展性。在沟通过程中,应用不需要定义沟通的终点,DDS会去自动发现,这个动态发现的过程实在运行过程中完成的,所以在编译设计阶段不需要考虑,实现DDS应用真正的‘plug-and-play’。

##### DDS 数据池 成员

数据池中应用的本地成员

DDS数据池将应用连接起来,能够彼此交流,代表了一个沟通平台;只有处在同一个数据池中的订阅者和分发者能够完成交流。一个数据池包括了DDS 订阅者,分发者,topics,multitopics和content filtered topics。

动态发现不仅表现在发现订阅者和分发者,还可以发现他们的状态。例如是否正在发送/订阅数据,发送/订阅数据的类型和沟通编码。

DDS中数据池成员可以在同一台机器上,也可以分布在网络中,因为应用使用同样的DDS API进行沟通,不需要了解和配置IP地址,不需要考虑机器的架构不同问题。实现沟通只需要添加额外的沟通成员,而且能够跨越不同的操作系统和硬件平台,减少了工作量。

## 稳定的架构

DDS系统覆盖了从端侧到fog到云端整个流程。在端侧,DDS能够用于实现机器之间的快速,实时沟通,在调解系统中,DDS提供了强健可靠的QoS和以内容为主的信息流。集成了这些系统的DDS,能够为所有过程提供稳定和方位和信息贡献。

![scalable_architecture](.\images\scalable_architecture.png)

OMG DDS 架构从连接到云端的小型设备到大型系统都需要表现稳定,DDS通过衡量数百万个成员,快速传输数据,管理数千个数据对象,提供高可用性和安全性实现IoT服务。DDS简化了分布式系统的开发,抛弃了建立单一标准沟通层的复杂工作。

## 安全性

对于安全性要求较高的场景中,DDS提供了包括安全机制,身份识别,访问控制,机密性和信息分布的完整性保证。DDS分散的点对点架构,能够在不牺牲实时表现的同时提供安全性。



Binary file added blog/DDS/images/data_centricity.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added blog/DDS/images/global_data_space.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added blog/DDS/images/midware.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added blog/DDS/images/scalable_architecture.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.