一种跨平台的配置驱动型DDS数据池自动路由方法与流程
本技术涉及分布式实时通信与跨平台应用软件开发,具体涉及一种跨平台的配置驱动型dds数据池自动路由方法、系统及设备。
背景技术:
1、随着工业物联网、自动驾驶、智能机器人等领域的快速发展,分布式系统中的数据交互需求日益复杂。多个节点需要实时共享大量数据(如传感器数据、状态信息、控制指令等),同时对系统的跨平台部署能力(windows/linux/嵌入式实时操作系统)和开发效率提出了更高要求。
2、目前,常见的分布式数据交互方案存在以下不足:
3、dds原生api使用复杂:
4、dds提供了去中心化、低延迟、丰富的qos策略以及以数据为中心的发布/订阅机制,但其原生api较为底层,开发难度较高。开发者需要手动管理域、主题、数据写入、数据读取等多个实体,并处理发现、匹配、回调等多个机制,代码冗余且易出错。
5、缺乏统一的数据池管理机制:
6、现有dds应用中,各模块通常自行维护本地缓存,或者仅在回调函数中临时处理数据,没有一个全局统一、线程安全、可夸模块共享的数据池,导致了数据一致性问题、重复存储以及访问不变。
7、主题与数据存储映射关系依赖硬编码:
8、主题与数据存储映射关系依赖硬编码从dds主题接收的数据应存入哪个数据池,如何解析,往往通过硬编码的条件判断实现,一旦主题或数据池发生变化,就需要维护代码并重新编译,系统依赖性和维护性差。
9、跨平台与线程安全实现困难:
10、不同操作系统上的dds实现存在差异,且dds回调通常发生在独立线程中,直接在该线程中处理业务逻辑容易引发线程竞争和性能瓶颈。开发者需要额外处理线程同步、数据拷贝等问题,开发成本高。
11、综上所述,现有技术中缺少一种配置驱动、自动路由、线程安全、易于扩展的c与dds结合的数据池开发方法,以简化dds应用开发并提高系统的可维护性和可移植性。
技术实现思路
1、本技术公开了一种跨平台的配置驱动型dds数据池自动路由方法、系统及设备,旨在解决现有dds应用开发中存在的原生api使用复杂、缺乏统一的数据池管理机制、主题与数据存储映射关系依赖硬编码以及跨平台与线程安全实现困难等技术问题。
2、为了实现上述目的,本技术第一方面提供一种跨平台的配置驱动型dds数据池自动路由方法,包括:
3、加载外部配置文件,所述配置文件至少包含域节点配置、数据池配置和路由规则,所述域节点配置包括节点id、发布主题列表和订阅主题列表,所述数据池配置包括数据池id、数据池名称以及数据id到字段名的映射,所述路由规则包括dds主题与目标数据池名称的映射关系;
4、根据所述域节点配置创建dds域参与者实例,并根据所述发布主题列表和订阅主题列表创建对应的数据写入实体和数据读取实体,所述dds域参与者实例运行在独立的dds通信线程中循环处理dds事件与回调;
5、根据所述数据池配置实例化数据中心,在所述数据中心中创建多个数据池实例,并以数据池名称为键存储所述多个数据池实例,每个数据池实例内部维护有由读写锁保护的哈希表;
6、为所述数据读取实体注册数据接收回调函数,当所述dds通信线程接收到订阅主题的数据时,触发所述回调函数,根据所述路由规则查找当前订阅主题对应的目标数据池名称;
7、通过所述数据中心根据所述目标数据池名称定位到对应的数据池实例,解析接收到的数据获取数据id和对应的值,获取写锁将所述数据id和值更新至该数据池实例的哈希表中,并释放所述写锁;
8、业务线程通过调用所述数据中心的读取接口,获取读锁从对应数据池实例的哈希表中读取指定数据id的数据,并释放所述读锁。
9、可选地,所述配置文件为json格式、xml格式或者txt格式文件中的一种;所述域节点配置中,每个域节点对应一个无人机或机器人控制节点,不同域节点配置有不同的domain_id;所述数据池配置中,每个数据池实例独立运行并提供线程安全的读写接口。
10、可选地,通过封装的dds通信层创建实体,所述dds通信层包括ddstopic类和dds类;所述dds类对应一个域的参与者,管理多个ddstopic实例;通过调用registertopic方法,根据配置创建底层的datawriter和datareader实体。
11、可选地,通过解析每个数据id和值,使用写锁更新哈希表中的映射关系;所述数据池实例不创建独立工作线程,而是由触发回调的所述dds通信线程直接调用其updatedata方法进行数据写入,以完成数据池实例的更新。
12、可选地,通过业务线程读锁读取指定id的数据,生成并返回数据快照,使得读操作不阻塞写操作,写操作也不阻塞读操作。
13、可选地,当接收到数据时,调用putdata方法找到对应名称的datapool实例并调用其updatedata方法;当业务线程请求数据时,调用getdata方法返回对应数据池实例的数据快照。
14、可选地,所述的跨平台的配置驱动型dds数据池自动路由方法,还包括:
15、根据待发送数据所属的域节点和主题,找到对应的dds域参与者实例和ddstopic实例,将数据序列化为字节流后调用write接口发布至dds网络。
16、可选地,所述dds通信线程、数据池写入操作与业务线程读取操作完全隔离;所述dds通信线程仅负责接收数据并通过数据池内部的读写锁接口转发数据;所述业务线程仅通过数据中心接口读取数据,避免业务逻辑处理阻塞dds通信线程的回调。
17、为了实现上述目的,本技术第二方面还提供一种跨平台的配置驱动型dds数据池自动路由系统,包括:
18、配置加载模块,用于加载外部配置文件,所述配置文件包含域节点配置、数据池配置和路由规则;
19、dds通信层模块,运行于独立的dds通信线程中,用于根据域节点配置创建dds域参与者、数据写入实体和数据读取实体,并处理dds事件与回调;
20、数据中心模块,包含多个数据池实例,每个数据池实例内部维护由读写锁保护的哈希表,用于以数据池名称为键统一管理所述数据池实例;
21、路由分发模块,用于为数据读取实体注册回调函数,在dds通信线程接收到订阅主题数据时,根据路由规则查找目标数据池名称,并通过数据中心模块获取写锁将解析后的数据id和值更新至对应数据池实例的哈希表中;
22、其中,业务线程通过所述数据中心模块获取读锁从对应数据池实例的哈希表中读取指定数据id的数据。
23、为了实现上述目的,本技术第三方面还提供一种电子设备,包括处理器和存储器,所述存储器上存储有计算机程序,所述计算机程序被所述处理器执行时实现如前面提供的跨平台的配置驱动型dds数据池自动路由方法。
24、本技术公开了一种跨平台的配置驱动型dds数据池自动路由方法,包括:加载外部配置文件,配置文件至少包含域节点配置、数据池配置和路由规则,域节点配置包括节点id、发布主题列表和订阅主题列表,数据池配置包括数据池id、数据池名称以及数据id到字段名的映射,路由规则包括dds主题与目标数据池名称的映射关系;根据域节点配置创建dds域参与者实例,并根据发布主题列表和订阅主题列表创建对应的数据写入实体和数据读取实体,dds域参与者实例运行在独立的dds通信线程中循环处理dds事件与回调;根据数据池配置实例化数据中心,在数据中心中创建多个数据池实例,并以数据池名称为键存储多个数据池实例,每个数据池实例内部维护有由读写锁保护的哈希表;为数据读取实体注册数据接收回调函数,当dds通信线程接收到订阅主题的数据时,触发回调函数,根据路由规则查找当前订阅主题对应的目标数据池名称;通过数据中心根据目标数据池名称定位到对应的数据池实例,解析接收到的数据获取数据id和对应的值,获取写锁将数据id和值更新至该数据池实例的哈希表中,并释放写锁;业务线程通过调用数据中心的读取接口,获取读锁从对应数据池实例的哈希表中读取指定数据id的数据,并释放读锁。本技术通过配置文件驱动,自动完成dds域参与者、主题、datawriter、datareader等底层实体的创建与初始化。开发者只需定义数据结构和编写配置文件,无需手动编写繁琐的dds注册、发现、回调等代码,即可快速搭建分布式通信系统,提升开发效率,同时减少了因api使用不当导致的潜在错误。本技术构建了以数据中心为核心的多数据池管理体系,每个数据池内部使用读写锁保护哈希表存储。业务模块可通过简单的putdata/getdata接口实现数据的线程安全读写,无需再各自维护本地缓存,避免了数据冗余和不一致问题,也降低了多线程编程的复杂度。通过在配置文件中定义“主题→数据池”的路由规则,系统运行时能够自动将接收到的dds数据解析并转发到对应的数据池,完全消除了硬编码的逻辑判断。当数据流向需要变更时,仅需修改配置文件,无需重新编译代码,极大提升了系统的灵活性和可维护性。本技术将dds通信线程、数据池工作线程、业务线程进行明确隔离:dds回调线程仅负责接收数据并通过线程安全接口(数据池内部锁)或线程安全队列转发;数据池自身不创建独立线程,而是由调用方(业务线程或回调线程)直接调用其锁保护的接口;业务线程则通过数据中心读取数据。这种设计避免了多余的线程上下文切换,同时保证了数据一致性。由于基于c++标准库和dds标准api,系统可无缝移植到windows、linux、vxworks、qnx等多种平台。所有配置(域节点、发布/订阅主题、数据池id与名称、路由规则、均存放于外部json文件中。当系统需要新增主题或数据池时,只需在配置文件中添加相应条目,现有代码保持不变,实现了真正的“零代码扩展”。同时,配置驱动的设计使得系统行为一目了然,便于团队协作和后期维护。本发明基于dds的去中心化架构和丰富的qos机制,数据传输端到端延迟可低至微秒级,支持百万级消息/秒的吞吐量。数据池内部使用读写锁实现读写并发,读操作不阻塞写操作(反之亦然),满足高实时性场景需求。同时,通过配置可选的可靠性策略,保证了关键数据的不丢失、不重复。。
版权声明:本站专利文献数据主要来源于国家知识产权局等公开渠道,由 技术新讯 进行整理汇编。页面设计及数据汇编的著作权归本站所有。全部内容仅供个人学习、科研评估与技术交流参考,严禁用于任何商业用途(包括但不限于直接生产制造、技术转让、倒卖数据等)。
免责条款:专利技术具有时效性,本站不对资料的绝对准确性、完整性和可实施性提供任何明示或暗示的担保。因参考本站内容造成的直接或间接损失,本站不承担相关法律责任。若您认为本站内容有侵权问题,请及时提供权属证明与我们联系,本站将在核实后依法处理。反馈意见:yyfuon@163.com