一种以数据为中心的分布式实时会话管理方法与流程

文档序号:16515994发布日期:2019-01-05 09:38阅读:189来源:国知局
一种以数据为中心的分布式实时会话管理方法与流程

本发明涉及实时应用系统技术领域,尤其是一种以数据为中心的分布式实时会话管理方法。



背景技术:

随着硬件资源不断提高,异构网络环境下的实时应用系统承载的业务数据也越来越多样化和复杂化,数据的组织形式和展现方式变得越来越重要。当前,以美军为代表的军用技术全球领先的国家,在各军种指控系统和武器控制系统中引入以数据为中心的设计思想,大量采用松散式的数据发布-订阅模型,用于解决信息系统针对多变网络环境的适应性问题和应用业务数据的紧耦合问题,较少考虑面向用户的多类型应用业务数据的综合展现问题。传统的实时应用系统,以时间为轴线,以发送者和接收者为中心,采用类邮箱的信息收发管理与展现方式,这种显示方式不利于收发双方之间频繁的信息交互。

在国内外的民用信息系统领域,自互联网普及以后,特别是自移动智能手机诞生以来,出现了各种各样的基于会话模式的即时通信系统,国外以skype、whatapps为代表,国内以微信和飞秋最具代表性,这类应用系统都实现了文字、文件、音视频等多种数据的即时共享,这种基于会话的信息交互模式同样也非常适用于实时应用系统领域。但互联网即时通信产品多大数都是基于中心式的信息推送方式,严重依赖核心骨干网络和固定的移动通信基础设施,并不适用于复杂多变网络环境下的分布式系统。而飞秋等局域网通信产品主要是基于有线局域网提供文件共享能力,无法实现与异构网络环境下各种无线网络传输协议的适配,不支持与现有信息系统的插件化集成,以及与其他功能软件的关联操作。

鉴于此,为满足实时应用系统使用需求,通过借鉴美军信息系统建设经验和民用信息系统的设计思想,本发明提出了一种以数据为中心,基于主题的群组管理和信息按需共享,适用于分布式实时应用系统的会话管理方法,该方法借鉴和学习了国内外以数据为中心的设计思想,数据发布-订阅模型,基于会话模式的群组管理等设计理念。



技术实现要素:

本发明所要解决的技术问题在于,提供一种以数据为中心的分布式实时会话管理方法,能够提高应用系统的信息交互效率,增强系统的鲁棒性、可靠性和稳定性。

为解决上述技术问题,本发明提供一种以数据为中心的分布式实时会话管理方法,包括如下步骤:

(1)基于数据发布-订阅模型的点对点和群组实时会话管理;

(2)基于数据发布-订阅模型的应用业务数据按需共享与实时可靠传输控制;

(3)基于数据发布-订阅模型的数据按序分段传输与重组控制。

优选的,步骤(1)中,基于数据发布-订阅模型的点对点和群组实时会话管理具体包括如下步骤:

(11)点对点实时会话管理;依托数据发布-订阅模型,实现点对点实时会话创建、消息收发、存储管理等过程控制;以分区号为标识,实现数据消费者与写入器之间的自动匹配;数据订阅者创建数据消费者时,将本节点id作为分区标识符绑定到阅读器上,以接收所有发送给本节点的点对点会话消息;数据发布者发布点对点会话消息时,将目的节点的id作为分区标识符绑定到数据生产者上,并根据会话节点的不同,动态修改分区标识符;

(12)群组实时会话管理;依托数据发布-订阅模型,实现群组实时会话创建、解散、退出、成员添加、成员删除、名称修改、消息收发、存储管理等过程控制;每个应用节点以统一的主题订阅和发布群组控制消息报,这样网内的所有节点都能收到其他节点的群组创建、解散、退出、添加成员、删除成员的群组控制消息报;每个节点接收到群组消息控制报之后,通过解析群组控制消息报中的内容过滤掉与本节点无关的消息;每个应用节点都可以创建一个或多个群组,且每个群组的标识号在全网内唯一;应用节点在创建群组时和群组内成员收到群组创建消息报时,除了在本地创建群组管理相关的数据表,还将以群组标识号为主题创建群组消息阅读器和写入器;这样,群组内成员以群组标识号作为主题实现群组消息发布者和订阅者之间的自动匹配,共享文字、图像、短音频、短视频等应用业务数据;群组成员在主动退出群组、群组被解散或被踢出群组时,除了将本地与该群组有关的群组管理表删除外,还将删除群组标识号对应的主题,以及群组消息阅读器和写入器。

优选的,步骤(2)中,基于数据发布-订阅模型的应用业务数据按需共享与实时可靠传输控制具体包括如下步骤:

(21)数据按需共享;依托数据发布-订阅模型,基于点对点会话和群组会话,实现应用业务数据按需共享;通过主题和分区号,实现会话消息发布者与订阅者之间的自动匹配,保证会话消息只在会话参与者之间共享;

(22)数据可靠传输;依托数据发布-订阅模型,实现应用业务数据报基于域、参与者、分区、发布者、订阅者、数据生产者、数据消费者等多层次的qos服务质量保证,以实现应用业务数据报的可靠传输,防止数据包丢失;

(23)数据池管理;依托数据发布-订阅模型,基于统一的收发数据池管理技术,实现面向应用业务的数据分段按序发送和到达;在发送端,应用业务数据分段按照先入先出的原则依次提交给数据发布服务进行统一发布;在接收端,数据订阅服务将接收到的应用业务数据分段依次按序写入接收数据池;若在规定的超时时间内未收到订阅者的确认报,则认为订阅者不在网,并将发送数据缓存到历史数据队列中,待订阅者上线后,自动将该数据报重传给订阅者。

优选的,步骤(3)中,基于数据发布-订阅模型的数据按序分段传输与重组控制具体包括如下步骤:

(31)数据分段传输;依托数据发布-订阅模型,实现数据的按序分段实时传输与重组;在进行应用业务数据报传输时,若数据报大小超过发送数据池中预定义分段的大小,则对应用业务数据报进行分段处理:在每个数据分段前添加数据分段标识号;在数据发布端,适度控制写入器的数据写入频率,以避免发送数据池发生溢出现象,导致未发送的数据分段被丢失;在数据接收端,根据数据包的接收顺序,将同一数据报的每个数据分段依次写入数据缓冲区,待最后一个分段接收完毕,再将数据分段重组为应用业务消息报;若传输的是文件数据,则由写文件线程统一将缓冲区中的文件数据写入本地磁盘;

(32)数据分段大小控制;依托数据发布-订阅模型,实现传输数据分段大小的动态控制;针对不同的应用业务需求,实现动态修改发送数据池中数据分段的大小,以提高系统的数据传输效率和吞吐量。

本发明的有益效果为:本发明为分布式实时应用系统提供一种以数据为中心的分布式实时会话管理方法,为建立基于会话的应用业务信息交互提供支撑,以提高应用系统的信息交互效率,增强系统的鲁棒性、可靠性和稳定性。

附图说明

图1为本发明的系统结构示意图。

图2为本发明的点对点实时会话创建流程示意图。

图3为本发明的点对点实时会话消息交互处理流程示意图。

图4为本发明的群组实时会话创建流程示意图。

图5为本发明的群组实时会话解散流程示意图。

图6为本发明的群组实时会话退出流程示意图。

图7为本发明的群组实时会话成员添加流程示意图。

图8为本发明的群组实时会话成员删除流程示意图。

图9为本发明的群组实时会话名称修改流程示意图。

图10为本发明的群组实时会话消息交互处理流程示意图。

具体实施方式

如图1所示,本发明系统构成主要包括人机交互接口、会话管理器、群组管理器、点对点会话消息管理器、群组会话消息管理器、数据访问接口、消息通告服务、数据发布管理器、数据订阅管理器、文件写入器等功能模块。系统通过人机交互接口创建点对点会话和群组会话、输入要发送的各种应用业务信息、向用户展现接收的各种应用业务信息,利用会话管理器进行点对点会话和群组会话记录管理,使用群组管理器实现群组会话创建、解散、退出、成员添加、成员删除等操作,使用点对点会话消息管理器对基于点对点会话的消息记录进行管理与综合展现,使用群组会话消息管理器对基于群组会话的消息记录进行管理与综合展现,使用数据访问服务,使用数据访问接口进行点对点会话和群组会话、群组管理信息和群成员信息、点对点会话消息和群组会话消息进行存取管理,由消息通告服务提供群组管理消息、点对点会话消息和群组会话消息接收、解析、存储后的面向人机交互接口的统一通告服务,由文件写入器负责文件数据分段重组后的数据存储;由数据发布管理器负责基于主题的会话数据发布;由数据订阅器负责基于主题的会话数据订阅、接收处理。

如图2至图10所示,本发明实施例的流程图采用自上而下的结构模式,结合这些流程图进一步阐明以数据为中心的分布式实时会话管理方法,功能如下:

(一)基于数据发布-订阅模型的点对点和群组会话管理

1.点对点会话创建管理

点对点会话的创建过程只涉及创建端的本地数据操作,无需与目的单位进行任何信息交互,主要步骤如下:

1)系统通过人机交互接口,获取用户从通信录中选择的点对点会话目的单位;

2)判断会话管理表中是否已存在该点对点会话记录;

①若存在,则以目的节点标识号作为会话标识号(以下简称ssid),在本地创建一个点对点会话,并将ssid添加到会话管理器中进行统一管理;

②否则,直接跳转到点对点会话消息交互窗口;

3)通过数据访问接口在数据库中添加一条会话管理表记录;

4)在人机交互接口中显示一条新创建的会话,并打开点对点会话消息交互窗口。

2.点对点会话消息交互管理

在系统初始化阶段,分别创建一个用于收发点对点会话消息的域、发布者、订阅者、数据生产者、数据消费者、分区、主题等对象,以本节点标识号作为分区对象的标识号绑定到订阅者对象上,将主题对象绑定到数据消费者对象上。

(1)在点对点会话消息发布端,点对点会话消息交互主要有如下步骤:

1)系统通过人机交互接口获取用户录入的会话消息内容,并在点对点会话消息交互窗口中滚动显示;

2)调用数据访问接口将发件记录写入点对点会话消息管理表中,并将表记录的索引值写入到点对点会话消息管理器中;

3)将目的节点标识号作为分区标识符,修改数据发布管理器中点对点会话消息发布服务的分区号,并发布会话消息;

(2)在点对点会话消息订阅端,点对点会话消息交互主要有如下步骤:

1)数据订阅管理器通过点对点会话消息订阅服务接收点对点会话数据报分段;

2)根据数据分段中的数据报标识号和数据分段标识号判断是否需要进行组包;

①若数据报标识号为0,则无需进行数据分段的组包;

②否则,依次将同一数据报标识号对应的数据分段标识号从零开始的所有数据分段重组为一个数据报,-1作为最后一个数据分段的标识号。

3)将重组后的点对点会话数据报提交给数据订阅管理器中注册的回调函数进行处理;

4)解析数据报中的数据类型,根据数据类型进行如下处理:

①若数据报为文件数据,则先将文件写入本地磁盘,再将文件的存储路径写入点对点会话消息管理表;

②否则,直接将数据报对应的消息内容写入数据库表;

5)通过消息通告服务,将收到的点对点会话消息通知给上层的人机交互接口,并在会话窗口中进行综合展现。

点对点会话消息报的格式定义如下:

[报文长度][端到端消息报标识][接收方标识号][发送方标识号][发送时间戳][消息类型][消息内容]。

3.群组会话创建管理

(1)在主动创建端,群组会话创建的主要步骤如下:

1)通过人机交互接口,获取用户从通信录中选择的群组成员和手动输入的群名称信息;

2)以本节点标识号和当前时间戳共同组成群组和会话的唯一标识号(以下简称gid),创建一个新的群组会话,并将相关信息添加到会话管理器和群组管理器中;

3)并以群组标识号作为主题创建群会话消息发布、订阅服务;

4)通过数据访问接口分别在会话管理表中添加一条会话记录,在群组管理表中添加一条群组记录,在群成员管理表中添加多条群成员记录;

5)封装群组会话创建消息报文,并提交给数据发布管理器进行统一的数据分包与发布;

6)在人机交互接口中显示一条新创建的会话,并打开群组消息交互窗口。

(2)在被动创建端,群组会话创建的主要步骤如下:

1)数据订阅管理器通过数据订阅服务接收群组创建数据报分段;

2)根据数据分段中的数据报标识号和数据分段标识号判断是否需要进行组包;

①若数据报标识号为0,则无需进行数据分段的组包;

②否则,依次将同一数据报标识号对应的数据分段标识号从零开始的所有数据分段重组为一个数据报,-1作为最后一个数据分段的标识号。

3)将重组后的群组创建数据报提交给数据订阅管理器中注册的回调函数进行处理;

4)解析群组创建消息报,并根据解析结果进行如下处理:

①若本节点不是被创建群组的成员,则直接丢弃该消息报;

②否则,执行如下操作:

a)通过数据访问接口分别在会话管理表中添加一条会话记录,在群组管理表中添加一条群组记录,在群成员管理表中添加多条群成员记录;

b)将ssid添加到会话管理器,将gid添加到群组管理器中;

c)以群组标识号作为主题创建群会话消息发布、订阅服务;

d)通过消息通告服务发布并显示群组创建通告消息给上层的人机交互接口,并在会话管理列表中添加、显示新创建的群组。

群组创建消息报的格式定义如下:

[报文长度][群组创建消息报标识][群组标识号][群组名称长度][群组名称][群组成员数量][成员标识号][…]。

4.群组会话解散管理

基于权限管理机制,只有群组创建者或所有者才具有解散群组的权限。

(1)群组创建者或所有者主动解散群组时,群组会话解散的主要步骤如下:

1)通过人机交互接口获取用户选择解散的群组,并关闭群组消息交互窗口,从会话管理列表删除该群组会话;

2)删除会话管理器、群组管理器、群组会话消息管理器中相应的群组管理数据;

3)通过数据访问接口将对应的会话记录、群组记录、群成员记录、群消息记录分别从会话管理表、群组管理表、群成员管理表、群消息管理表中删除;

4)注销以群组标识号为主题的群会话消息发布、订阅服务;

5)封装群组解散消息报并提交给数据发布管理器进行统一的数据分包与发布。

(2)群成员被动解散群组时,群组会话解散的主要步骤如下:

1)数据订阅管理器通过数据订阅服务接收群组解散数据报分段;

2)根据数据分段中的数据报标识号和数据分段标识号判断是否需要进行组包;

①若数据报标识号为0,则无需进行数据分段的组包;

②否则,依次将同一数据报标识号对应的数据分段标识号从零开始的所有数据分段重组为一个数据报,-1作为最后一个数据分段的标识号。

3)将重组后的群组解散数据报提交给数据订阅管理器中注册的回调函数进行处理;

4)解析群组解散消息报,并根据解析结果进行如下的处理:

①若本节点中不存在被解散的群组,则直接丢弃该消息报;

②否则,执行如下操作:

a)通过数据访问接口分别删除会话管理表、群组管理表、群成员管理表、群消息管理表中与该群组有关的记录;

b)删除会话管理器中该群组对应的ssid,删除群组管理器中该群组对应的gid;

c)注销以群组标识号为主题的群会话消息发布、订阅服务;

d)通过消息通告服务发布并显示群组解散通告消息;

e)从会话管理列表中删除该会话,若群组会话消息交互窗口已打开,则关闭该会话窗口。

群组解散消息报的格式定义如下:

[报文长度][群组解散消息报标识][群组标识号]。

5.群组会话退出管理

(1)群成员主动退出群组时,主要步骤如下:

1)通过人机交互接口在获取用户选择退出的群组,关闭群组会话消息交互窗口,从会话管理列表删除该会话;

2)删除会话管理器、群组管理器、群组会话消息管理器中相应的数据;

3)通过数据访问接口将对应的会话记录、群组记录、群成员记录、群消息记录分别从会话管理表、群组管理表、群成员管理表、群消息管理表中删除;

4)注销以群组标识号为主题的群会话消息发布、订阅服务;

5)封装群组退出消息报并提交给数据发布管理器进行统一的数据分包与发布,若退出者为群组创建者,则在群组退出消息报中指定新的群所有者。

(2)接收群组会话退出数据报时,主要步骤如下:

1)数据订阅管理器通过数据订阅服务接收群成员退出数据报分段;

2)根据数据分段中的数据报标识号和数据分段标识号判断是否需要进行组包;

①若数据报标识号为0,则无需进行数据分段的组包;

②否则,依次将同一数据报标识号对应的数据分段标识号从零开始的所有数据分段重组为一个数据报,-1作为最后一个数据分段的标识号。

3)将重组后的群组退出数据报提交给数据订阅管理器中注册的回调函数进行处理;

4)解析群组退出消息报,并根据解析结果进行如下处理:

①若本节点中不存在该群组,则直接丢弃该消息报;

②否则,执行如下操作:

a)通过数据访问接口分别删除群成员管理表中的该群组对应退出成员的记录,若退出成员是群创建者,则使用群组退出消息报中指定的群所有者更新群管理表中的相应记录;

b)通过消息通告服务发布群成员退出通告消息给上层人机交互接口,若群组会话消息交互窗口已打开,则更新该会话窗口中的群成员列表。

群组退出消息报的格式定义如下:

[报文长度][群组退出消息报标识][研讨群标识号][退出者标识号][新的群所有者标识号],其中[新的群所有者标识号]字段只有在[退出者标识号]为群创建者时才会出现。

6.群组会话成员添加管理

基于权限管理机制,只有群组创建者或所有者才具有添加群组会话成员的权限。

(1)群组创建者或所有者添加群组会话成员时,主要步骤如下:

1)首先通过人机交互接口获取用户选择添加的群组成员,若打开了群组会话消息交互窗口,则更新其中的群成员信息;

2)通过数据访问接口更新群组管理表中对应群组的成员数量,在群成员管理表中添加一条或多条群成员记录;

3)封装群组成员添加消息报文,并提交给数据发布管理器进行统一的数据分包与发布。

(2)接收群组成员添加消息报时,主要步骤如下:

1)数据订阅管理器通过数据订阅服务收群组成员添加数据报分段;

2)根据数据分段中的数据报标识号和数据分段标识号判断是否需要进行组包;

①若数据报标识号为0,则无需进行数据分段的组包;

②否则,依次将同一数据报标识号对应的数据分段标识号从零开始的所有数据分段重组为一个数据报,-1作为最后一个数据分段的标识号。

3)将重组后的群组成员添加消息报提交给数据订阅管理器中注册的回调函数进行处理;

4)解析群组成员添加消息报,根据解析结果进行如下处理:

①若本节点是被添加群组成员之一,则执行如下操作:

a)通过数据访问接口分别在会话管理表中添加一条会话记录,在群组管理表中添加一条群组记录,在群成员管理表中添加一条或多条群成员记录;

b)将该群组对应的ssid添加到会话管理器中,将该群组对应的gid添加到群组管理器中;

c)以群组标识号作为主题创建群会话消息发布、订阅服务;

d)通过消息通告服务发布并显示添加群组成员的通告消息;

②若本节点是群组的现有群成员之一,则执行如下操作:

a)通过数据访问接口在群成员管理表中添加一条或多条群成员记录;

b)通过消息通告服务发布并显示添加群组成员的通告消息;

c)若打开了群组会话消息交互窗口,则更新该会话窗口中的群成员信息;

③若本节点既不是群组新增成员之一,又不是群组现有成员之一,则直接丢弃该消息报;

群组成员添加消息报的格式定义如下:

[报文长度][研讨群成员添加报标识][研讨群标识号][研讨群名称长度][研讨群名称][新增成员数量][成员标识号][…][现有成员数量][成员标识号][…]。

7.群组会话成员删除管理

基于权限管理机制,只有群组创建者或所有者才具有删除群组会话成员的权限。

(1)群组创建者或所有者删除群组会话成员时,主要步骤如下:

1)通过人机交互接口获取用户选择删除的群成员信息,若打开了群组会话消息交互窗口,则更新其中的群成员信息;

2)通过数据访问接口更新群组管理表中对应群组的成员数量,在群成员管理表中删除一条或多条群成员记录;

3)将群组相关信息封装成群组成员删除消息报文,并提交给数据发布管理器进行统一的数据分包与发布。

(2)接收群组成员删除消息报时,主要步骤如下:

1)数据订阅管理器通过数据订阅服务接收群组成员删除数据报分段;

2)根据数据分段中的数据报标识号和数据分段标识号判断是否需要进行组包;

①若数据报标识号为0,则无需进行数据分段的组包;

②否则,依次将同一数据报标识号对应的数据分段标识号从零开始的所有数据分段重组为一个数据报,-1作为最后一个数据分段的标识号。

3)将重组后的群组成员删除消息报提交给数据订阅管理器中注册的回调函数进行处理;

4)解析群组成员删除消息报,根据解析结果进行如下处理:

①若本节点在该群组中且是被删除群组成员之一,则执行如下操作:

a)通过数据访问接口分别删除会话管理表、群组管理表、群成员管理表、群消息管理表中与该群组有关的所有记录;

b)将该群组对应的ssid和gid分别从会话管理器和群组管理器中删除;

c)注销以群组标识号为主题的群会话消息发布、订阅服务

d)通过消息通告服务发布删除群组成员的通告消息给上层人机交互接口,更新会话管理列表,若群组会话消息交互窗口已打开,则关闭该会话窗口;

②若本节点在该群组中但不是被删除群组成员之一,则执行如下操作:

a)通过数据访问接口在群成员管理表中删除一条或多条群成员记录;

b)通过消息通告服务发布删除群组成员的通告消息给上层人机交互接口,若打开了群组会话消息交互窗口,则同时更新该会话窗口中的成员信息;

③若本节点既不在该群组中,又不是被删除群组成员之一,则直接丢弃该消息报。

群组成员删除消息报的格式定义如下:

[报文长度][研讨群成员删除报标识][研讨群标识号][删除成员数量][成员标识号][…]

8.群组名称修改管理

基于权限管理机制,只有群组创建者或所有者才具有修改群组实时会话名称的权限。

(1)群组创建者或所有者修改群组名称时,主要步骤如下:

1)通过人机交互接口获取用户修改的群组名称,若打开了群组会话消息交互窗口,则更新其中的群组名称信息;

2)通过数据访问接口更新群组管理表中对应群组的群名称信息;

3)封装成群组名称修改消息报文,提交给数据发布管理器进行统一的数据分包与发布。

(2)接收群组名称修改消息报时,主要步骤如下:

1)数据订阅管理器通过数据订阅服务接收群组名称修改数据报分段;

2)根据数据分段中的数据报标识号和数据分段标识号判断是否需要进行组包;

①若数据报标识号为0,则无需进行数据分段的组包;

②否则,依次将同一数据报标识号对应的数据分段标识号从零开始的所有数据分段重组为一个数据报,-1作为最后一个数据分段的标识号。

3)将重组后的群组名称修改数据报,提交给数据订阅管理器中注册的回调函数处理;

4)解析群组名称修改消息报,根据解析结果进行如下处理:

①若本节点不在该群组中,则直接丢弃该消息报;

②否则,执行如下操作:

a)通过数据访问接口更新群组管理表中该群组的群名称信息;

b)通过消息通告服务发布群组名称修改的通告消息给上层的人机交互接口,更新会话管理列表,若群组会话消息交互窗口已打开,则同时更新该会话窗口中的群组名称信息。

群组名称修改消息报的格式定义如下:

[报文长度][研讨群名称更新报标识][研讨群标识号][研讨群名称长度][研讨群名称]。

9.群组会话消息交互管理

(1)发布群组会话消息时,主要步骤如下:

1)通过人机交互接口获取用户录入的会话内容,在群组会话消息交互窗口中滚动显示;

2)通过数据访问接口将发件记录写入群组会话消息管理表,并将表记录的索引值写入到群组会话消息管理器中;

3)封装群组会话消息报,提交给数据发布管理器进行统一的分包和发布。

(2)接收群组会话消息报时,主要步骤如下:

1)数据订阅管理器通过群组会话消息订阅服务接收该群组会话数据报分段;

2)根据数据分段中的数据报标识号和数据分段标识号判断是否需要进行组包;

①若数据报标识号为0,则无需进行数据分段的组包;

②否则,依次将同一数据报标识号对应的数据分段标识号从零开始的所有数据分段重组为一个数据报,-1作为最后一个数据分段的标识号。

3)将重组后的群组会话数据报提交给数据订阅管理器中注册的回调函数进行处理;

4)解析数据报中的数据类型,根据数据类型进行如下处理:

①若数据报为文件数据,则先将文件写入本地磁盘,再将文件的存储路径写入群组消息管理表;

②否则,直接将数据报对应的消息内容写入数据库表;

5)通过消息通告服务,将收到的群组会话消息通知给上层的人机交互接口,并在群组会话消息交互窗口中进行综合展现。

群组会话消息报的格式定义如下:

[报文长度][研讨群消息报标识][研讨群标识号][发送者标识号][发送时间戳][数据类型][消息内容]。

(二)基于数据发布-订阅模型的应用业务数据按需共享与实时可靠传输

1.点对点会话数据按需共享管理

系统在初始化时,创建一个用于收发点对点会话消息报的域对象,在该域对象上分别各创建一个用于收发点对点会话消息报的发布者、订阅者、分区、主题、数据生产者、数据消费者等对象,并将本节点标识号作为分区标识号绑定到订阅者对象上,将主题对象绑定到数据生产者和数据消费者对象上。这样,在进行点对点会话消息交互时,每次发布会话消息前,先将目的节点标识号绑定到数据发布者对象上,从而实现对不同通信节点的数据按需共享。

2.群组会话数据按需共享管理

系统在初始化时,为群组管理消息报和群组会话数据报收发创建一个域对象,并在该域对象上为收发群组管理(创建、解散、退出、成员添加、成员删除、名称修改)消息报各创建一个发布者、订阅者、主题、数据生产者、数据消费者等对象,并将主题对象绑定到数据生产者和数据消费者对象上。同时,在该域对象上为收发群组会话数据报分别创建了一个订阅者和发布者对象。系统运行后,每创建一个群组,系统都以该群组标识号为主题,分别在预先创建的订阅者对象上创建一个数据生产者对象,在发布者对象上创建一个数据消费者对象,并在数据消费者对象上绑定用于数据报处理的回调函数。这样,系统内所有节点都能收到其他节点发布的群组管理消息报,并根据解析的报文内容进行过滤处理;群组会话消息报只有群组内的成员才能收到,从而实现了群组管理消息报和群组会话消息报的按需共享。

3.数据实时可靠传输控制管理

基于统一的发送数据池管理技术,将各类应用业务数据的发送过程进行集中式管理与控制,并在每个数据生产者对象上绑定可靠传输保证和保留历史记录的qos策略,同时为每个数据包设置一个超时时间,以保证每个数据包在确定的时间内被发送出去。这样,若数据包在确定的时间内未被发送出去,则将其暂存入历史记录表中,待目的节点上线或网络状态改善后再重新发送。

(三)基于数据发布-订阅模型的数据按序分段传输与重组控制

1.数据按序分段传输管理

数据发布管理器在发布应用业务数据时,根据应用业务数据大小和预定义的发送数据池分段大小确定是否需要进行分段传输,并在发布的每个数据分段中添加报头信息。报头信息包括数据报标识号和数据分段标识号,其中数据报标识号由本节点标识号和首个分段的发送时间戳组成,数据分段标识号依次从零开始递增计数,每次增加1,最后一个数据分段的数据分段标识号为-1。若应用业务数据小于发送数据池分段大小,则数据报标识号和数据分段标识号均设置为0。完整的数据分段格式如下:

[数据报标识号][数据分段标识号][应用业务数据]。

2.数据分段重组控制管理

数据订阅管理器在接收数据分段时,根据数据分段的头部信息判断是否需要进行组包,若数据报标识号和数据分段标识号均为零,则数据报只有一个分段,直接将该数据分段去掉数据分段标识号后提交给回调函数进行处理;否则,开辟一段数据缓冲区,将首个数据分段去掉数据分段标识号后写入数据缓冲区,并依次同一数据报标识号对应的后续所有数据分段去掉数据报标识号和数据分段标识号后追加写入数据缓冲区,直至标识号为-1的最后一个数据分段,最终重新组装成一个完整的数据报,提交给回调函数进行报文解析。

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