热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

搞懂DDS数据分发服务

1.什么是DDS?数据分发服务(DDS™)是一个由对象管理组(OMG)发布的以数据为中心的中间件协议和API标准。采用分布

1.什么是DDS?

数据分发服务(DDS™)是一个由对象管理组(OMG)发布的以数据为中心的中间件协议和API标准。采用分布式发布/订阅体系架构,以中间件的形式提供通信服务,强调以数据为中心。DDS中间件是一个软件层,从操作系统、网络传输和底层数据格式的细节中抽象出应用。相同的概念和api提供给不同的编成语言,使得应用在不同的操作系统、编成语言和处理体系架构之间交换信息。底层细节包括数据传输格式、发现、连接、可靠性和、协议、Qos策略等由中间件来管理。

扩展:中间件

在分布式系统中,中间件是介于操作系统和应用程序之间的软件层,使系统的各个组件能够更容易地通信和共享数据。中间件简化了分布式系统的开发,使软件开发人员专注于应用程序的业务本身,而不是花费精力研究应用程序和系统之间传递信息的机制。

在这里插入图片描述

2.为啥要用DDS?

计算机网络发展这么多年,物理层、数据链路层、传输层等7层各自都已经有很多相对成熟的协议,那么DDS究竟是为了解决什么问题而产生的呢?

先说结论:DDS是物联网的最佳选择之一

也就是说随着物联网的发展,传统的通信协议在物联网和大数据等新场景下会有暴漏出很多的弊端,所以需要设计一些新的方法去适用新的应用场景需求。笔者个人总结为以下几个方面(个人理解,有局限性欢迎交流):

1.物理网场景下:需要低延迟数据连接、高可靠性以及高可扩展的体系结构,以适应商业级物联网(IoT)应用程序的需求。

2.物联设备的增多必然会导致数据的增多,所以需要一个方法能够让开发人员关注数据本身,而不用处理繁杂的消息收发过程代码。市面上虽然存在多种通信中间件标准和产品,唯独DDS是以数据为中心,是工业物联网的理想选择。

3.物联设备的加入会增加兼容性、同步性等问题从而提升整个系统架构的复杂度,所以分层设计就会更加重要,中间件的需求就会更强烈

3.什么项目适合用DDS

如果项目存在以下问题,DDS可能是适合该项目的最佳连接框架技术之一:

1.存在通信延迟问题,比如需要以毫秒为单位或更短的时间来衡量延迟。

2.存在网络带宽/吞吐量或扩展问题,比如有超过10个不同的软件,或者需要共享超过一千种数据项。

3.系统离线5分钟(甚至5毫秒)将导致严重的问题。

4.在配置、启动或故障转移到备份服务器方面存在困难。

5.构建的系统将花费一年甚至更多的时间编写,并且涉及多个版本或需要与旧版应用程序进行集成。

4.DDS技术细节


4.1 分布式发布/订阅体系架构

1.全局数据空间是一个抽象的概念。

在实现时,数据仍然是分别存储在每一个应用程序的本地空间中。在系统运行时,数据是按需传输或存储的,数据的发布者仅仅发送对方需要的数据,订阅者仅接受本地应用程序中需要的数据。

2.实际场景中,每个应用程序既可以是发布者又可以是订阅者

4.2以数据为中心

DDS提供Qos控制功能。应用程序通过发布和订阅主题进行通信。订阅可以指定时间和内容筛选器,并且只能获取发布主题的数据的子集。不同的DDS域彼此完全独立,跨DDS域无法进行数据通信。

以数据为中心的本质是DDS知道它存储什么数据,并控制如何共享这些数据。使用传统的以消息为中心的中间件的程序员必须编写发送消息的代码;而使用以数据为中心的中间件的时,只需指定数据如何共享、何时共享,编写少量代码即可直接共享数据值。DDS使用户无需在应用程序的代码中管理所有这些复杂的操作,而是直接为用户实现了受控、托管、安全的数据共享。

4.3 全局数据空间

DDS在概念上创建了一个 “全局数据空间”的本地的数据存储空间。对应用程序来说,全局数据空间看起来像是通过API访问的本地内存:发送端应用程序写入数据时,就像是写到了本地的存储空间;而实际上,由DDS发送消息以更新远程节点上的存储内容;接收端应用程序方可通过读取本地存储获取到数据。

在这里插入图片描述

 在DDS域中,信息共享的单位是主题的数据对象。主题由其名称标识,数据对象由一些“键(Key)”属性标识。这类似于在数据库中用键属性来标识数据。上述是一张概念性的图示, DDS进行点对点通信,不需要服务器或云代理进行转发。

4.4 QoS(Quality of Service)服务质量策略

在一个真实系统中,并不是所有其他端点都需要另一个节点本地存储中的所有内容 ,DDS在提供最基础的发布订阅功能之外,还可以根据不同使用场景向用户提供满足对应需求的服务。QoS有可靠性、持久性、紧迫性等,可单独或组合使用

1.可靠性(RELIABILITY)

“尽力而为”模式(BEST_EFFORT_RELIABILITY_QOS):对样本的可靠性没有任何保证,在某些情况下可能会丢弃样本。(通俗解释:在外界环境不稳定的时候,可能会导致丢包,但是DDS为了保证整体数据分发效率,不会重新分发丢包的数据)

“可靠”模式(RELIABLE_RELIABILITY_QOS):该服务最终应将所有值传递给合格的数据读取器。(通俗解释:万一出现丢包现象,会重新分发数据,保证订阅者能够收到)

数据读取器和主题的此策略的默认值为“尽力而为”,而数据写入器的默认值为“可靠”。在创建数据写入者和数据读取者之间的关联时会考虑此策略。 关联双方的值必须兼容才能创建关联。 数据写入器的可靠性类型必须大于或等于数据读取器的值。

2.基于时间过滤(TIME_BASED_FILTER)

过滤出指定时间的数据。例如:某应用会在循环一定时间周期时发布数据,订阅者只需要关注某一时间发布的数据。

3.接收端顺序(DESTINATION_ORDER)

在网络抖动等情况下,确保订阅者能够按顺序接受报文

例如:发送者发送:1 2 3 4 5

特殊情况导致乱序:3 2 1 4 5

需要确保订阅者收到:1 2 3 4 5

4.持久性(DURABILITY)

订阅者的应用程序离线时,先缓存历史数据。当订阅者应用程序上线时,可以接收到缓存中的历史数据


推荐阅读
  • 本文介绍了OpenStack的逻辑概念以及其构成简介,包括了软件开源项目、基础设施资源管理平台、三大核心组件等内容。同时还介绍了Horizon(UI模块)等相关信息。 ... [详细]
  • 基于PgpoolII的PostgreSQL集群安装与配置教程
    本文介绍了基于PgpoolII的PostgreSQL集群的安装与配置教程。Pgpool-II是一个位于PostgreSQL服务器和PostgreSQL数据库客户端之间的中间件,提供了连接池、复制、负载均衡、缓存、看门狗、限制链接等功能,可以用于搭建高可用的PostgreSQL集群。文章详细介绍了通过yum安装Pgpool-II的步骤,并提供了相关的官方参考地址。 ... [详细]
  • 本文介绍了Java工具类库Hutool,该工具包封装了对文件、流、加密解密、转码、正则、线程、XML等JDK方法的封装,并提供了各种Util工具类。同时,还介绍了Hutool的组件,包括动态代理、布隆过滤、缓存、定时任务等功能。该工具包可以简化Java代码,提高开发效率。 ... [详细]
  • flowable工作流 流程变量_信也科技工作流平台的技术实践
    1背景随着公司业务发展及内部业务流程诉求的增长,目前信息化系统不能够很好满足期望,主要体现如下:目前OA流程引擎无法满足企业特定业务流程需求,且移动端体 ... [详细]
  • SpringBoot uri统一权限管理的实现方法及步骤详解
    本文详细介绍了SpringBoot中实现uri统一权限管理的方法,包括表结构定义、自动统计URI并自动删除脏数据、程序启动加载等步骤。通过该方法可以提高系统的安全性,实现对系统任意接口的权限拦截验证。 ... [详细]
  • 本文介绍了Redis的基础数据结构string的应用场景,并以面试的形式进行问答讲解,帮助读者更好地理解和应用Redis。同时,描述了一位面试者的心理状态和面试官的行为。 ... [详细]
  • Spring特性实现接口多类的动态调用详解
    本文详细介绍了如何使用Spring特性实现接口多类的动态调用。通过对Spring IoC容器的基础类BeanFactory和ApplicationContext的介绍,以及getBeansOfType方法的应用,解决了在实际工作中遇到的接口及多个实现类的问题。同时,文章还提到了SPI使用的不便之处,并介绍了借助ApplicationContext实现需求的方法。阅读本文,你将了解到Spring特性的实现原理和实际应用方式。 ... [详细]
  • eclipse学习(第三章:ssh中的Hibernate)——11.Hibernate的缓存(2级缓存,get和load)
    本文介绍了eclipse学习中的第三章内容,主要讲解了ssh中的Hibernate的缓存,包括2级缓存和get方法、load方法的区别。文章还涉及了项目实践和相关知识点的讲解。 ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • 本文介绍了高校天文共享平台的开发过程中的思考和规划。该平台旨在为高校学生提供天象预报、科普知识、观测活动、图片分享等功能。文章分析了项目的技术栈选择、网站前端布局、业务流程、数据库结构等方面,并总结了项目存在的问题,如前后端未分离、代码混乱等。作者表示希望通过记录和规划,能够理清思路,进一步完善该平台。 ... [详细]
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
  • Linux如何安装Mongodb的详细步骤和注意事项
    本文介绍了Linux如何安装Mongodb的详细步骤和注意事项,同时介绍了Mongodb的特点和优势。Mongodb是一个开源的数据库,适用于各种规模的企业和各类应用程序。它具有灵活的数据模式和高性能的数据读写操作,能够提高企业的敏捷性和可扩展性。文章还提供了Mongodb的下载安装包地址。 ... [详细]
  • Imtryingtofigureoutawaytogeneratetorrentfilesfromabucket,usingtheAWSSDKforGo.我正 ... [详细]
  • 一句话解决高并发的核心原则
    本文介绍了解决高并发的核心原则,即将用户访问请求尽量往前推,避免访问CDN、静态服务器、动态服务器、数据库和存储,从而实现高性能、高并发、高可扩展的网站架构。同时提到了Google的成功案例,以及适用于千万级别PV站和亿级PV网站的架构层次。 ... [详细]
  • 本文介绍了MVP架构模式及其在国庆技术博客中的应用。MVP架构模式是一种演变自MVC架构的新模式,其中View和Model之间的通信通过Presenter进行。相比MVC架构,MVP架构将交互逻辑放在Presenter内部,而View直接从Model中读取数据而不是通过Controller。本文还探讨了MVP架构在国庆技术博客中的具体应用。 ... [详细]
author-avatar
袁善恩芷恩
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有