一种高可用DDS协议转换网关的制作方法

文档序号:34708860发布日期:2023-07-07 13:23阅读:189来源:国知局
一种高可用DDS协议转换网关的制作方法

本发明涉及计算机,具体涉及一种高可用dds协议转换网关。


背景技术:

1、dds(data distribution service)协议是一种以数据为中心的消息中间件,具有低延迟、高可靠性、可扩展等特性,广泛应用于军事、自动驾驶等领域的实时分布式系统。dds提供了丰富的服务质量(qos,quality of service)策略,其中包括了通过冗余的方式提高dds应用可靠性相关的qos策略。

2、dds冗余策略针对qos主题的发布者和订阅者,当多个副本发布相同的实例时,dds消息订阅者将接收所有消息实例,dds消息实例中带有权重信息,订阅者将对相同的实例进行排序,权重最高的为实例的所有者,即主节点,其余备节点,订阅者仅选主节点的实例进行处理。当dds主题中包含键(key)定义时,每个键对应一个消息实例,当不包含键定义时,所有消息被认为是一个实例。相关的qos策略配置项有ownership、ownership_strength、liveliness和deadline。

3、ownership定义了dds发布者和订阅者是否采用独占的策略处理dds消息实例。当使用独占策略时,dds消息订阅者将接收并处理所有消息。ownership需要在消息发布者和订阅者同时启用且配置相同,在启用后无法修改,在dds中默认不启用。owhership_strength定义了dds消息发布者的权重,权重中一个4字节整数,仅在发布者启用,在启用后可以修改,默认值为0,当多个发布者使用相同的权重时,主从节点的仲裁将是随机的。

4、liveliness定义了dds消息发布者存活性声明的方式与声明周期,存活性声明的方式包括自动、半自动和手动有三种方式。要求发布者存活性声明类型不大于订阅者存活性声明类型,类型的大小顺序为:自动<半自动<手动;发布者存活性声明周期配置不大于订阅者存活性声明周期配置,默认为自动方式。当使用自动方式时,消息发布者将在声明周期内发布存活性声明消息,消息订阅者将根据存活性声明周期配置对发布者的存活性进行判断,当在存活性声明周期内没有收到发布者的存活性声明且超过deadline周期约定时,认为数据发布者失效。

5、deadline定义了每个dds实例必须在多长周期内更新,要求数据订阅者deadline周期配置不小于数据发布者deadline周期配置,在启用后可以修改,默认周期为无限长。

6、在冗余部署场景中,dds消息发布者与订阅者qos策略配置为独占策略且存活性声明与消息更新周期小于故障容忍时间。当一个消息实例超出了deadline和liveliness的约定时,dds消息订阅者将认为消息实例失效,若失效的消息实例为主节点,则发生主从切换,选取当前权重最大节点为新的主节点。

7、dds协议转换网关用于将dds协议消息转换为其它非dds协议消息,实现基于dds的应用系统与其它基于非dds协议的应用系统间的互操作。在此应用场景中,根据消息接收者是否使用dds协议,可分两种情况:一种是使用dds协议到dds协议和非dds协议到dds协议,另一种是dds协议到非dds协议。dds协议转换网关位于协议边界,同时存在上述两种情况。在冗余部署场景中,dds协议转换网关可直接利用dds的qos策略实现dds消息的接收并过滤冗余消息,由于多副本的仲裁发生于接收端,每个dds协议转换网关将dds消息转换为非dds协议消息并发送到非dds协议应用系统接收端后,非dds协议应用系统接收端将不能过滤接收到的冗余消息,导致应用系统出现异常。


技术实现思路

1、本发明要解决的技术问题:针对现有技术的上述问题,提供一种高可用dds协议转换网关。本发明能够保证协议转换网关以热备的方式冗余部署,并基于dds协议实现主节点仲裁,最后根据副本是否是主节点来选择是否发布非dds协议消息,有效提高了协议转换网关的可靠性。

2、为了达到上述目的,解决上述技术问题,本发明采用的技术方案为:

3、一种高可用dds协议转换网关,包括如下步骤:

4、步骤1、协议转换网关在启动时生成自身唯一标识,记录网关启动时间戳,在dds协议到非dds协议转换上,执行步骤2;

5、在非dds协议到dds协议转换上,执行步骤5;

6、步骤2、所有副本发布带有节点自身标识的仲裁主题消息

7、2.1读取当前系统时间,减去网关启动时间戳得到网关持续运行的总秒数;

8、2.2设置仲裁主题qos策略,ownership设置为独占策略,deadline和liveliness根据用户需要设置,仲裁主题消息权重owhership_strength等于网关持续运行总秒数;

9、2.3发布仲裁主题消息,消息内容为网关唯一标识;

10、当用户需要指定主节点时,将指定副本的仲裁主题消息权重owhership_strength设置为最大值,即0x7fffffff;

11、步骤3、所有副本同时订阅仲裁主题消息,根据仲裁主题消息中节点标识与网关自身标识判断自身是否是主节点;

12、3.1所有副本订阅仲裁主题消息,默认所有副本初始状态为主节点;

13、3.2所有副本持续读取消息中网关唯一标识,将消息中网关唯一标识与自身标识进行比较,若相同则认为自身为主节点,否则为备节点;

14、步骤4、主节点将dds协议消息转换为其它非dds协议消息发出,非主节点不发出非dds协议消息

15、若副本为主节点,则将从dds协议应用系统接收的dds协议消息转换为非dds协议消息并发送到非dds协议应用系统;

16、若副本为备节点,则不发出消息;

17、步骤5、所有副本接收非dds协议消息并转换为dds协议消息发出,相同类型的消息使用同一dds协议主题

18、当网关接收到非dds协议应用消息后,将消息转换为dds协议消息,dds协议消息主题的qos策略设置与仲裁主题相同;所有副本的dds协议消息直接发布,相同类型的消息使用同一dds协议主题。

19、进一步的,步骤1包括:

20、1.1网关在启动时,基于当前时间、计数器和硬件标识等信息计算生成uuid,同时记录网关启动时间戳;

21、1.2将uuid转化为定长字符数组,作为网关唯一标识。

22、和现有技术相比,本发明具有下述优点:本发明针对dds协议qos策略不支持dds协议转换网关冗余部署的问题,构建了仲裁消息主题;在网关启动时,记录网关启动时间戳,生成网关标识,并保证标识在系统中的唯一性;设置仲裁主题qos策略,根据系统当前时间与网关启动时间戳计算网关持续运行时间,根据运行时间计算仲裁消息权重;发布仲裁主题消息,消息内容为网关唯一标识;网关订阅仲裁主题消息,根据消息中标识与自身标识确定主节点;主节点将dds协议应用系统消息转换为非dds协议消息发出,备节点不发出消息。本发明基于dds协议qos机制,引入仲裁主题,在实现dds协议消息与非dds协议消息相互转换的同时具备冗余部署的能力,并且不要求非dds协议应用系统修改消息处理方式。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1