【专利下载】【专利代理】【商标和版权申请】Tel:18215660330

一种分布式数据传输系统及方法与流程

专利查询11月前  43

【专利下载】【专利代理】【商标和版权申请】Tel:18215660330



1.本技术涉及计算机技术领域,尤其涉及一种分布式数据传输及基于其的数据传输的技术。


背景技术:

2.随着社会经济以及计算机技术的不断发展,出现很多基于计算机技术的业务系统,比如证券交易系统,采用集中式数据总线架构来满足系统各业务服务间的数据传输。采用集中式数据总线的业务系统架构如附图1所示,在集中式数据总线架构中,业务系统由主业务系统和备业务系统组成,分别包括若干业务服务及集中式数据总线,其中,业务服务及集中式数据总线都是独立的应用程序,业务服务提供主、备两种状态下不同运行逻辑,集中式数据总线提供整个业务系统各业务服务间要传输的数据排队及数据路由,各业务服务间采用tcp协议通过集中式数据总线实现数据传输。
3.随着用户的不断增加,以及业务的不断创新,对业务系统各业务服务间数据传输的效率、可用性以及可扩展性要求越来越高,现有的集中式数据总线架构中,由于集中式数据总线是整个业务系统的关键中心节点,其状态直接会影响整个业务系统的状态,降低了可用性和可扩展性,而且通过集中式数据总线进行排队及数据路由的主、备同步,才能确保主、备业务子系统处理数据流的次序一致,形成了系统性单点串行机制,降低了业务系统数据传输效率。


技术实现要素:

4.本技术的目的是提供一种分布式数据传输系统及基于其的数据传输的技术方案,用以解决现有基于集中式数据总线的数据传输系统可用性、可扩展性和数据传输效率不高的技术问题。
5.根据本技术的一个方面,提供了一种分布式数据传输系统,其中,所述分布式数据传输系统包括:
6.若干业务服务组,其中,每个业务服务组被分配一个唯一的udp组播地址,包含一个或多个组成员,其中,所述组成员是提供业务服务的应用程序或者是所述应用程序的拷贝,每个组成员被分配一个唯一的udp单播地址;
7.分布式数据总线api,加载在每个组成员中,其中,组成员通过调用分布式数据总线api与其它组成员实现数据传输;
8.仲裁机,设置所述业务服务组信息、组成员信息以及基于udp协议设置数据传输参数。
9.可选地,其中,所述分布式数据总线api包括:
10.接口层模块,数据层模块,协议层模块,网络层模块,心跳模块和状态机模块,其中,
11.所述接口层模块定义数据传输接口,实现与组成员的业务服务应用层的数据传
输;
12.所述数据层模块维护业务服务组及其组成员信息,并根据所述业务服务组及其组成员信息在所述接口层模块和所述协议层模块之间传输数据;
13.所述协议层模块设置所述分布式数据总线api的运行机制,处理与所述数据层模块和所述网络层模块之间传输的数据;
14.所述网络层模块实现与传输网络的数据链路层的数据传输;
15.所述心跳模块产生心跳信号;
16.所述状态机模块获取所述心跳模块产生的心跳信号发送给所述仲裁机,并检测同一业务服务组的组成员的心跳信号。
17.可选地,其中,所述接口层模块包括:
18.数据发送接口子模块;
19.数据递交回调接口子模块;
20.组成员信息变更回调接口子模块。
21.可选地,其中,所述数据层模块包括:
22.数据递交子模块;
23.数据路由子模块;
24.信息静态维护子模块;
25.数据递交队列子模块。
26.可选地,其中,所述网络层模块包括:
27.网络层数据处理子模块;
28.数据传输窗口算法子模块;
29.网络事件注册及观察子模块;
30.数据传输端口子模块。
31.可选地,其中,所述数据传输窗口算法包括:
32.数据发送方和数据接收方基于预设窗口尺寸和预设规则传输数据,直至所述数据全部完成传输。
33.可选地,其中,所述预设规则包括:
34.数据发送方基于预设窗口尺寸发送数据;
35.在预设时间内,数据接收方每接收到预设个数个数据包时,发送一次包含所述预设个数个数据包中最后一个数据包信息的成功接收消息;
36.若在预设时间内,数据接收方未接收到预设个数个数据包时,发送一次包含最后一个成功接收的数据包信息的成功接收消息,并根据后续成功接收的第一个数据包信息确定未成功接收的数据包信息,发送一次未成功接收消息,数据发送方根据接收到的所述未成功接收消息,重新发送所述未成功接收的数据包;
37.若基于预设窗口尺寸,数据发送方发送最后一个数据包后,在预设时间内未接收到对应的成功接收消息,则发送最后一个数据包成功接收确认请求,并根据接收到的数据接收方的响应进行处理。
38.可选地,其中,所述业务服务组的运行模式包括热备模式。
39.可选地,其中,当业务服务组的运行模式是热备模式时,所述仲裁机还用于受理各
组成员发送的请求,确定各组成员的工作模式。
40.可选地,其中,所述组成员的工作模式包括:
41.主成员;
42.备成员;
43.单机。
44.根据本技术的另一个方面,还提供了一种数据传输的方法,其中,所述方法基于上述的所述分布式数据传输系统实现,包括:
45.仲裁机受理各组成员发送的请求,确定每个业务服务组的每个组成员的工作模式,其中,每个业务服务组中,只有一个组成员的工作模式是主成员,其它组成员的工作模式是备成员;
46.当业务服务组的每个组成员的分布式数据总线api接收到同一数据时,将所述数据放入递交队列;
47.所述业务服务组的备成员的分布式数据总线api生成递交序号及所述数据的数据摘要,发送至主成员的分布式数据总线api;
48.所述主成员的分布式数据总线api根据接收到的所述递交序号及所述数据的数据摘要,将所述递交序号作为主成员的递交队列中所述数据的递交序号,并更新主成员的递交队列状态信息,向主成员的业务服务应用层递交所述数据,并向所述备成员的分布式数据总线api发送确认递交消息;
49.所述备成员的分布式数据总线api根据接收到的所述确认递交消息,更新备成员的递交队列状态,向备成员的业务服务应用层递交所述数据。
50.可选地,所述一种数据传输的方法还包括:
51.业务服务组各组成员的分布式数据总线api之间维持基于预设时间周期的心跳信号;
52.业务服务组各组成员的分布式数据总线api与仲裁机之间维持基于所述预设时间周期的心跳信号。
53.可选地,所述一种数据传输的方法还包括:
54.当业务服务组的备成员的分布式数据总线api检测到主成员的分布式数据总线api的心跳信号异常,向仲裁机发送工作模式切换的申请;
55.当仲裁机接收到所述申请,并确认所述业务服务组的其他备成员的分布式数据总线api的心跳信号都异常时,将所述业务服务组的运行模式设定为单机模式,并向该备成员的分布式数据总线api发送申请成功消息。
56.与现有技术相比,本技术提供一种分布式数据传输系统,包括:若干业务服务组,其中,每个业务服务组被分配一个唯一的udp组播地址,包含一个或多个组成员,其中,所述组成员是提供业务服务的应用程序或者是所述应用程序的拷贝,其中,每个组成员被分配一个唯一的udp单播地址;分布式数据总线api,加载在每个组成员中,其中,组成员通过调用分布式数据总线api与其它组成员实现数据传输;仲裁机,设置所述业务服务组信息、组成员信息以及基于udp协议设置数据传输参数。还提供了一种基于上述分布式数据传输系统实现数据传输的方法,通过仲裁机受理各组成员发送的请求,确定每个业务服务组的每个组成员的工作模式,其中,每个业务服务组中,只有一个组成员的工作模式是主成员,其
它组成员的工作模式是备成员;当业务服务组的每个组成员的分布式数据总线api接收到同一数据时,将所述数据放入递交队列;所述业务服务组的备成员的分布式数据总线api生成递交序号及所述数据的数据摘要,发送至主成员的分布式数据总线api;所述主成员的分布式数据总线api根据接收到的所述递交序号及所述数据的数据摘要,将所述递交序号作为主成员的递交队列中所述数据的递交序号,并更新主成员的递交队列状态信息,向主成员的业务服务应用层递交所述数据,并向所述备成员的分布式数据总线api发送确认递交消息;所述备成员的分布式数据总线api根据接收到的所述确认递交消息,更新备成员的递交队列状态,向备成员的业务服务应用层递交所述数据。该方法中业务服务组各组成员的分布式数据总线api之间以及与仲裁机之间还维持心跳信号,当业务服务组的备成员的分布式数据总线api检测到主成员的分布式数据总线api的心跳信号异常,向仲裁机发送工作模式切换的申请,在仲裁机确认后切换成主成员,以确保业务服务组的数据传输正常。
57.带来的技术效果:
58.本技术提供的分布式数据传输系统采用分布式数据总线api,无中心节点,架构轻量化,可扩展性强;采用udp协议,通过消息注册机制实现数据路由,无需依次排队,提高了数据传输效率。提供所述的数据传输方法,可实现业务服务主、备之间热备,自动实时故障诊断和切换,实现高可用性。
附图说明
59.通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显:
60.附图1示出采用集中式数据总线的业务系统架构示意图;
61.附图2示出本技术一个方面的一种分布式数据传输系统示意图;
62.附图3示出本技术一个方面的一个可选实施例的一种分布式数据传输系统示意图;
63.附图4示出本技术一个方面的一种分布式数据传输系统中的分布式数据总线api架构示意图;
64.附图5示出本技术一个方面的一个可选实施例的分布式数据总线api基于窗口算法进行数据传输的原理示意图;
65.附图6示出本技术一个方面的一种分布式数据传输系统的采用udp协议进行数据传输的原理示意图;
66.附图7示出本技术另一个方面的一种基于分布式数据传输系统实现数据传输的方法流程图;
67.附图中相同或相似的附图标记代表相同或相似的部件。
具体实施方式
68.下面结合附图对本发明作进一步详细描述。
69.在本技术一个典型的配置中,系统、模块、子模块和/或相关可信方均可能包括一个或多个处理器(cpu)、输入/输出接口、网络接口和内存。
70.内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(ram)和/或
非易失性内存等形式,如只读存储器(rom)或闪存(flash ram)。内存是计算机可读介质的示例。
71.计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(pram)、静态随机存取存储器(sram)、动态随机存取存储器(dram)、其他类型的随机存取存储器(ram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、快闪记忆体或其他内存技术、只读光盘只读存储器(cd-rom)、数字多功能光盘(dvd)或其他光学存储、磁盒式磁带,磁带磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括非暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
72.为更进一步阐述本技术所采取的技术手段及取得的效果,下面结合附图及可选实施例,对本技术的技术方案,进行清楚和完整的描述。
73.附图2示出本技术一个方面的一种分布式数据传输系统示意图,其中,一个实施例的分布式数据传输系统包括:
74.若干个业务服务组20,其中,每个业务服务组20被分配一个唯一的udp组播地址,包含一个或多个组成员,其中,所述组成员是提供业务服务的应用程序或者是所述应用程序的拷贝,每个组成员被分配一个唯一的udp单播地址;
75.分布式数据总线api22,加载在每个组成员中,其中,组成员通过调用分布式数据总线api22与其它组成员实现数据传输;
76.仲裁机10,设置所述业务服务组20的信息、组成员的信息以及基于udp协议设置数据传输参数。
77.在该分布式数据传输系统中,每个业务服务组20是实现业务的逻辑服务单元,包含一个或多个组成员,其中,同一个业务服务组20部署在一台或多台物理设备上,其组成员包括业务服务21和加载的分布式数据总线api22,其中,业务服务21是一个提供业务服务的应用程序或该应用程序的拷贝。
78.其中,每个业务服务组20被分配一个唯一的udp组播地址,其组成员通过自已所在业务服务组的唯一的udp组播地址接收来自其它业务服务组(通过组成员发送)的数据,从而保证同一业务服务组各组成员接收到的数据流是一致的,各组成员实时处理数据的行为是一致的。
79.可选地,其中,每个业务服务组20的运行模式可以是热备模式,使得同一业务服务组20内各组成员互为备份对外提供业务服务,以提高可用性,也可以是集群模式使得同一业务服务组20内各组成员同时对外提供业务服务,以提高实时并发能力或负载均衡能力,当热备模式或集群模式的业务服务组20内只有一个组成员时,实际上其运行模式是单机模式。
80.该实施例的一个可选应用场景如附图3所示,其中,业务服务组20a可以是证券交易系统中提供“交易核心”的业务服务,该业务服务的应用程序或其拷贝“主业务服务a”和“备业务服务a”可以部署在不同计算机设备中,组成热备模式的业务服务组20a。“主业务服务a”和“备业务服务a”互为备份。“主业务服务a”和“备业务服务a”同时接收同一个其它业务服务组发送的数据,并且同时实时处理该数据,但只会由其中的“主业务服务a”负责输出
响应数据,“备业务服务a”不输出响应数据。只有当“主业务服务a”发生故障时,才会自动切换成由“备业务服务a”向外输出响应数据,以满足高实时性、高可用性的数据传输需要。
81.其中,业务服务组20b可以是证券交易系统中提供“交易网关”的业务服务,该业务服务的应用程序或其拷贝“业务服务b1”和“业务服务b2”可以部署在不同计算机设备中,组成集群模式的业务服务组20b。“业务服务b1”和“业务服务b2”同时接收同一个其它业务服务组发送的数据,并且同时实时处理该数据送至业务服务21应用层,业务服务21应用层会基于预配置,根据该数据中的特定信息(例如数据来源和/或数据类型)来确定是否做出响应。“业务服务b1”和“业务服务b2”不区分主备角色,平行工作,以满足高实时并发处理或负载均衡的数据传输需要。
82.可选地,当业务服务组20的运行模式是热备模式时,仲裁机10会根据接收到的各组成员在启动时发送的请求,确定各组成员的工作模式。
83.可选地,其中,各组成员的工作模式包括:
84.主成员;
85.备成员;
86.单机。
87.其中,当业务服务组20的运行模式是热备模式时,其组成员在程序启动时向仲裁机10提出申请,仲裁机10分配其中一个组成员的工作模式为主成员,其它组成员的工作模式为备成员,通常情况下仲裁机接受收到的第一个申请,反馈同意消息,对应的组成员的工作模式设置成主成员。在运行过程中,若主成员状态异常,通过仲裁机10将其中一个备成员的工作模式切换成主成员,以确保业务服务组20的数据传输正常。若业务服务组20中只有一个组成员状态正常,则将业务服务组20的运行模式切换成单机模式,状态正常的组成员的工作模式切换成单机。
88.继续在该实施例中,分布式数据总线api22加载在每个业务服务组20的每个组成员中,其中,每个组成员通过调用分布式数据总线api22与其它业务服务组20的组成员实现数据传输。
89.可选地,该实施例中的一种分布式数据总线api22的架构如附图4所示,包括:
90.接口层模块221,数据层模块222,协议层模块223,网络层模块224,心跳模块225和状态机模块226,其中,
91.接口层模块221定义数据传输接口,实现与组成员的业务服务应用层的数据传输;
92.数据层模块222维护每个业务服务组20及其组成员信息,并根据业务服务组20的信息及其组成员的信息在接口层模块221和协议层模块223之间传输数据;
93.协议层模块223包括协议控制器,设置该分布式数据总线api22的运行机制,处理与数据层模块222和网络层模块224之间传输的数据;
94.网络层模块224实现与传输网络的数据链路层的数据传输;
95.心跳模块225产生心跳信号;
96.状态机模块226获取心跳模块225产生的心跳信号发送给所述仲裁机,并检测同一业务服务组的组成员的心跳信号。
97.可选地,其中,接口层模块221包括:
98.数据发送接口子模块2211;
99.数据递交回调接口子模块2212;
100.组成员信息变更回调接口子模块2213。
101.其中,数据发送接口子模块2211根据数据层模块222的数据路由子模块2222提供的数据路由功能,将数据发送出去;数据递交回调接口子模块2212将数据层模块222的数据递交队列子模块2224中的数据递交至业务服务应用层;组成员信息变更回调接口子模块2213跟踪组内各组成员的角色信息。
102.可选地,其中,数据层模块222包括:
103.数据递交子模块2221;
104.数据路由子模块2222;
105.信息静态维护子模块2223;
106.数据递交队列子模块2224。
107.其中,数据递交子模块2221根据当前递交序号,从数据递交队列子模块2224中获取数据发送至接口层221的数据递交回调接口子模块2212;数据路由子模块2222向接口层221的数据发送接口子模块2211提供数据路由;信息静态维护子模块2223用于维护所有业务服务组的组信息以及各组的组成员信息;数据递交队列子模块2224用于缓存接收到的待递交值业务服务应用层的数据。
108.其中,数据层模块222还可包括数据持久化子模块2225,可在数据递交子模块2221递交数据前,通过数据持久化子模块2225将数据持久化到磁盘,该模块可通过参数配置开启或关闭。
109.可选地,其中,网络层模块224包括:
110.网络层数据处理子模块2241;
111.数据传输窗口算法子模块2242;
112.网络事件注册及观察子模块2243;
113.数据传输端口子模块2244。
114.其中,网络层数据处理子模块2241提供网络层数据处理功能,包括数据网络字节序处理、数据完整性校验、数据源合法性校验等;数据传输窗口算法子模块2242包括数据接收窗口和数据发送窗口,提供网络数据传输窗口算法;网络事件注册及观察子模块2243提供数据总线事件注册及观察功能;数据传输端口子模块2244提供业务服务组内组成员之间、组成员与仲裁机之间的udp单播(udp unicast)端口,以及各业务服务组之间的udp组播((udp multicast))端口。
115.可选地,其中,在数据传输窗口算法子模块2242中,采用的数据传输窗口算法包括:
116.数据发送方和数据接收方基于预设窗口尺寸和预设规则传输数据,直至所述数据全部完成传输。
117.其中,数据发送方和数据接收方是不同业务服务组20中的组成员。
118.其中,窗口是数据传输中的一种环形数据链表,数据链表的节点数就是窗口尺寸。在本技术的实施例中,窗口尺寸在组成员运行期间是不变的,可静态配置,在组成员安装的硬件资源许可范围内,窗口尺寸越大,可获得越好的数据传输效率。
119.可选地,其中,该预设规则包括:
120.数据发送方基于预设窗口尺寸发送数据;
121.在预设时间内,数据接收方每接收到预设个数个数据包时,发送一次包含所述预设个数个数据包中最后一个数据包信息的成功接收消息;
122.若在预设时间内,数据接收方未接收到预设个数个数据包时,发送一次包含最后一个成功接收的数据包信息的成功接收消息,并根据后续成功接收的第一个数据包信息确定未成功接收的数据包信息,发送一次未成功接收消息,数据发送方根据接收到的所述未成功接收消息,重新发送所述未成功接收的数据包;
123.若基于预设窗口尺寸,数据发送方发送最后一个数据包后,在预设时间内未接收到对应的成功接收消息,则发送最后一个数据包成功接收确认请求,并根据接收到的数据接收方的响应进行处理。
124.其中,在本技术的实施例中,该预设个数通常是指窗口ack水位标。窗口ack水位标是决定数据接收方的接收窗口何时向数据发送方的发送窗口发送ack消息。在该实施例中,分布式数据总线api22通过在数据接收方的接收窗口每接收到预设个数个数据包时,即向数据发送方的发送窗口发送一次包含该预设个数个数据包中最后一个数据包信息的ack消息(成功接收消息)。本技术的分布式数据总线api22的数据传输确认机制是以udp数据包(应用消息)为确认对象,而集中式数据总线采用的tcp协议是以数据链路层的帧为确认对象。同时,根据网络硬件资源情况,对该预设个数(窗口ack水位标)进行合理的调整,可以有效减少网络堵塞,提升数据传输性能。
125.其中,基于窗口尺寸,数据链表中的每个节点都有明确的窗口索引地址,用于窗口数据滑动,以提高窗口检索效率。每个传输的数据包还包括窗口序号,在窗口数据开始传输时从1开始连续递增,以便统计窗口传输的数据量。
126.如附图5所示的一个可选实施例的分布式数据总线api基于窗口算法进行数据传输的原理示意图,其中,窗口尺寸设为8,预设个数(窗口ack水位标)是2,则窗口索引地址分别是0~7。在正常数据传输过程中,数据接收方的接收窗口每成功收到2个udp数据包,则向数据发送方的发送窗口发送一次包含后一个udp数据包窗口序号的ack消息(成功接收消息)。但当数据接收方的接收窗口在正常接收到窗口序号为2、4的udp数据包时,分别向数据发送方的发送窗口发送包含窗口序号为2、4的ack消息。当数据接收方的接收窗口在正常接收到窗口序号为5的udp数据包后,下一个正常接收的是窗口序号为7的udp数据包,则发现窗口序号为6的udp数据包缺失,向数据发送方的发送窗口发送包含窗口序号为5的ack消息消息和包含窗口序号为6的nak消息(未成功接收消息),请求数据发送方的发送窗口重发窗口序号为6的udp数据包。另外,因为设置的窗口尺寸是8,因此,当数据发送方发送窗口在发送窗口序号为9的udp数据包时,其实际是指向窗口索引地址为0的数据链表节点。
127.通常数据接收方未正常收到数据包的原因可能是数据发送方正常发送但因网络等原因造成丢包。一个示例中,假设窗口大小是100,预设个数(窗口ack水位标)是50,若数据发送方正常发送udp数据包,而数据接收方在正常接收1~40个udp数据包后,因网络问题后续udp数据包都未正常接收到,但是数据发送方还在继续发送,直到发送完一个窗口尺寸到100号包,此时发送窗口塞满,还未收到数据接收方的ack消息,数据发送方无窗口可用于继续传输数据,就会进入发送堵塞等待,而数据接收方也只收到40个udp数据包,数据接收方认为数据发送方只发了40个udp数据包,所以也会进入接收等待,这样就会造成数据传输
僵死情况。
128.本技术为了解决这种情况,可引入ack超时机制,即在预设时间内,如果数据接收方未收满预设个数(窗口ack水位标)个udp数据包,也会立刻给数据发送方发送一次最后一个udp数据包的ack消息,或者数据发送方在发送完一个预设窗口尺寸的最后一个udp数据包后,在预设时间内未接收到对应的成功接收消息,则发送最后一个数据包成功接收确认请求,并根据接收到的数据接收方的响应进行处理,以解决数据传输僵死情况。
129.继续上述示例,假设设置了ack超时为500ms,则数据接收方在正常接收1~40个udp数据包后未能继续正常接收到udp数据包,等待500ms,触发ack超时,则向数据发送方发送窗口序号为40的ack消息,若此时网络已恢复,数据发送方收到ack消息后,便可清理前40号窗口,发窗口序号为101及其后的udp数据包,数据接收方在接收到新的udp数据包后,发现跳号,知道丢包,则向数据发送方发送包含窗口序号为101的nak消息,数据接收方收到该nak消息,知道窗口序号为41~100的udp数据包未被正常接收到,重新发送这些udp数据包;若此时网络还是未回复,数据发送方未收到窗口序号为50的ack消息,在发送到窗口序号为100的udp数据包后等待500ms后,也未收到窗口序号为100的ack消息,则也会触发ack超时,主动向数据接收方发送窗口序号为100的ack消息请求,若网络已恢复,数据接收方收到该请求后,若窗口序号为100的数据包已收到,则向发送方发送窗口序号为100的ack消息;若窗口序号为100的数据包未收到,则向数据发送方发送窗口序号为100的nak消息,数据发送方根据收到的该nak消息和最后一次收到的ack消息,重发相应的udp数据包。
130.继续在该实施例中,仲裁机10设置所述业务服务组20的信息、组成员的信息以及基于udp协议设置数据传输参数。
131.其中,仲裁机10是一个独立的应用程序,通过仲裁机10对每个业务服务组20的信息进行设置,包括:业务服务组20的组编号、运行模式、唯一的udp组播地址、组端口等参数信息,其中,组编号用于标识业务服务组别,udp组播地址和组端口用于udp组播数据寻址,另外,根据业务服务21应用层需要,还可以配置包括业务服务组名称、控制端口、业务服务类型(提供服务或接受服务,其中,接受服务的业务服务组的组成员的工作模式只能设置成单机)等参数信息;对每个业务服务组20的组成员的信息进行设置,包括:组成员编号、唯一的ip地址、组成员端口等参数信息,其中,组成员编号用于标识组成员,ip地址和组成员端口用于udp单播数据寻址,另外,根据业务服务21应用层需要,还可以配置组成员名称等参数信息;还设置udp数据传输窗口尺寸、窗口ack水位标,ack确认超时时间周期、心跳检测时间周期、心跳信号异常超时时间周期等参数。
132.一个采用xml协议格式的对包含四个业务服务组的分布式数据传输系统的相关组信息、组成员信息以及数据传输参数设置的示例如下:
133.[0134][0135]
其中,groupid为1的业务服务组的运行模式是热备模式,其它业务服务组的运行是集群模式(只有1个组成员的业务服务组的运行模式也称作单机模式);数据传输窗口尺寸设置为20480个udp数据包,发送一次确认消息的成功接收udp数据包的预设个数(窗口ack水位标)是128个,ack确认超时是500ms,检测心跳的预设时间周期是3秒,组成员状态异常的判断是心跳信号丢失超过9秒。其中,为了防止设置不当反而造成网络僵死情况,还可以直接将数据传输参数写入仲裁机程序代码中。
[0136]
在本技术的分布式数据传输系统中,每个业务服务组的组成员之间基于udp单播协议进行数据传输;不同业务服务组之间基于udp组播协议进行数据传输;仲裁机与各业务
服务组的组成员之间基于udp单播协议进行数据传输。本技术的分布式数据传输系统的各组件之间的一个采用udp协议进行数据传输的原理示意图如附图6所示。
[0137]
附图7示出本技术另一个方面的一种基于分布式数据传输系统实现数据传输的方法流程图,其中,一个实施例的方法包括:
[0138]
s71仲裁机受理各组成员发送的请求,确定每个业务服务组的每个组成员的工作模式,其中,每个业务服务组中,只有一个组成员的工作模式是主成员,其它组成员的工作模式是备成员;
[0139]
s72当业务服务组的每个组成员的分布式数据总线api接收到同一数据时,将所述数据放入递交队列;
[0140]
s73所述业务服务组的备成员的分布式数据总线api生成递交序号及所述数据的数据摘要,发送至主成员的分布式数据总线api;
[0141]
s74所述主成员的分布式数据总线api根据接收到的所述递交序号及所述数据的数据摘要,将所述递交序号作为主成员的递交队列中所述数据的递交序号,并更新主成员的递交队列状态信息,向主成员的业务服务应用层递交所述数据,并向所述备成员的分布式数据总线api发送确认递交消息;
[0142]
s75所述备成员的分布式数据总线api根据接收到的所述确认递交消息,更新备成员的递交队列状态,向备成员的业务服务21应用层递交所述数据。
[0143]
其中,该方法基于上述实施例的一种分布式数据传输系统,其中的业务服务组20的运行模式被设置为热备模式。
[0144]
在业务服务组20的各组成员程序启动时加载分布式数据总线api22,各组成员分布式数据总线api22的状态机模块226会向仲裁机10发送udp单播数据包,申请将工作模式设置为主成员。在所述方法实施例的步骤s71中,仲裁机10受理各组成员发送的请求,确定每个业务服务组20的每个组成员的工作模式,其中,只有一个组成员的工作模式是主成员,其它组成员的工作模式是备成员:通常收到每个业务服务组20的第一个组成员的请求,会反馈同意消息,该组成员收到反馈的同意消息后,工作模式设置为主成员;收到该业务服务组20的其它组成员的请求,通常会反馈拒绝消息,其它组成员收到反馈的拒绝消息后,工作模式设置为备成员。
[0145]
其中,各组成员分布式数据总线api22的状态机模块226会定时(比如每隔1秒)刷新检查仲裁机10是否反馈,如仲裁机10无反馈,则重发请求。
[0146]
继续在该方法实施例中,在步骤s72中,当业务服务组20收到其它业务服务组通过udp组播协议发送的数据,业务服务组20的每个组成员(包括主成员和备成员)都接收到该数据,并将该数据放入自己的递交队列里。
[0147]
其中,根据其它业务服务组发送的数据中的udp组播地址,匹配的业务服务组20中状态正常的主成员和备成员通过加载的分布式数据总线api22的网络层模块224的数据传输端口子模块2244的udp组播端口和数据传输窗口算法子模块2242的接收窗口接收该数据,同时,主、备成员的接收窗口向自己的分布式数据总线api22的协议层模块223的协议控制器发送通知,告知“有数据到达待处理”,协议控制器收到通知后,控制接收窗口将接收的该数据放入数据层模块222的数据递交队列子模块2224里递交队列的队尾。
[0148]
继续在该方法实施例中,在步骤s73中,该业务服务组20的备成员的分布式数据总
线api22生成递交序号及所述数据的数据摘要,发送至主成员的分布式数据总线api22。
[0149]
其中,该业务服务组20的备成员的协议层模块223的协议控制器在将数据放入数据递交队列里的同时,会生成递交序号以及该数据的数据摘要,通过网络层模块224的数据传输端口子模块2244的udp单播端口将该递交序号及数据摘要发送至该业务服务组20的主成员的分布式数据总线api22,以通知主成员的分布式数据总线api22的接口层模块221向主成员的业务服务21应用层递交该数据,以便主成员的业务服务21应用层处理该数据。
[0150]
在上述步骤s72中,该业务服务组20的主成员在将该数据放入递交队列里时,并不会对应生成递交序号。继续在该方法实施例中,在步骤s74中,该业务服务组20的主成员的分布式数据总线api22在接收到该递交序号及数据摘要后,将该递交序号更新至主成员的递交队列中对应的该数据,等待递交。其中,主成员的协议控制器控制数据层模块222的数据递交子模块2221根据当前递交序号从递交队列里找到对应的数据向其业务服务21应用层递交,递交完后从递交队列中删除已递交数据,当前递交序号递增1,再从递交队列里找到对应的数据向其业务服务21应用层递交,直到当前递交序号大于当前递交队列里的最大可递交序号,此时递交队列里无数据可向业务服务21应用层递交,数据递交子模块便进入休眠。若之后主成员的分布式数据总线api22收到新的递交序号及数据摘要后,主协议控制器可将数据递交子模块2221唤醒,控制其更新递交队列中对应数据的递交序号,并更新最大可递交序号,根据当前递交序号向主成员的业务服务21应用层顺序递交数据。
[0151]
其中,主成员的分布式数据总线api22每完成一个递交序号对应的数据的递交,便向备成员的分布式数据总线api22发送该数据确认递交消息。
[0152]
继续在该方法实施例中,在步骤s75中,备成员的分布式数据总线api22根据接收到的所述确认递交消息,更新该数据在备成员的递交队列状态,随着备成员的递交队列中数据的递交持续进行,当该数据对应的递交序号与当前递交序号相同时,向备成员的业务服务21应用层递交该数据。
[0153]
业务服务组20接收其它业务服务组发送的数据的上述处理过程中,数据只在业务服务组20的每个组成员的数据传输窗口被拷贝,各组成员对该数据的后续处理都是指针传递,并无需再拷贝数据,直到该数据被递交至各组成员的业务服务21应用层。其中,数据排队、递交采用备成员向主成员发送单向实时通知、主成员和备成员并行队列缓存以及主成员完成递交后向备成员发送异步确认通知等机制,可减少数据递交的排队处理等待时间。
[0154]
采用上述处理机制,还可以提高整个业务系统的可靠性。
[0155]
如果处理机制设计为在主、备成员同时接收到数据后,主成员直接递交,并由主成员通知备成员递交,可能造成主成员和备成员递交的数据不一致情况。假设如下场景:主成员的分布式数据总线api已向业务服务应用层递交了20条数据,同时主成员的分布式数据总线api也向备成员的分布式数据总线api发了20条确认递交消息,但由于某种原因网络质量不佳,实际上备成员的分布式数据总线api只接收到主成员的分布式数据总线api发出的10条确认递交消息,若此时主成员因状态异常宕机,那么系统会切换成由备成员接管工作,主成员在宕机前已完成这20条数据的递交处理,由于备成员只处理了这20条中收到主成员确认递交消息的10条数据,另外未收到主成员确认递交消息的10条数据的处理顺序是未知的,备成员会按照自已定义顺序对这10条数据进行递交处理,最终可能因处理顺序与主成员不同,造成主成员的业务服务应用层执行后输出的结果与备成员的业务服务应用层执行
后输出的结果可能不同。对于如证券交易系统这种对数据的准确性要求非常高的业务来说,会产生很严重的后果。
[0156]
为了确保业务服务组20在组成员状态异常情况下数据传输及处理不受影响,仲裁机10需要持续了解业务服务组20的运行状态及其组成员的当前工作模式、业务服务组20各组成员之间需要相互知道各自的当前工作模式。
[0157]
可选地,该一种数据传输的方法还包括:
[0158]
s76(未示出)业务服务组20各组成员的分布式数据总线api22之间维持基于预设时间周期的心跳信号;
[0159]
s77(未示出)业务服务组20各组成员的分布式数据总线api22与仲裁机10之间维持基于所述预设时间周期的心跳信号。
[0160]
其中,被设置为热备模式的业务服务组20各组成员在程序启动时,通过加载的分布式数据总线api22的状态机模块226向仲裁机10提出申请,根据仲裁机10的反馈设置工作模式:主成员或备成员;被设置为集群模式的业务服务组各组成员在程序启动时,工作模式设置为单机。
[0161]
被设置为热备模式的业务服务组20各组成员在工作时,其中,其状态机模块226根据预设时间周期向组内每个组成员以及仲裁机10发送心跳信号,比如,预设心跳信号检测时间周期为3秒,则状态机模块226通过数据传输窗口子模块2244的udp单播端口,每隔3秒向组内其它组成员的状态机模块226以及仲裁机10分别发送心跳信号,通过接到来自组内其它组成员的心跳信号来确认组内其它组成员的工作模式。
[0162]
可选地,该一种数据传输的方法还包括:
[0163]
s78(未示出)当业务服务组20的备成员的分布式数据总线api22检测到主成员的分布式数据总线api22的心跳信号异常,向仲裁机10发送工作模式切换的申请;
[0164]
s79(未示出)当仲裁机10接收到所述申请,并确认所述业务服务组20的其他备成员的分布式数据总线api22的心跳信号都异常时,将所述业务服务组20的运行模式设定为单机模式,并向该备成员的分布式数据总线api22发送申请成功消息。
[0165]
在步骤s78中,若业务服务组20的备成员的分布式数据总线api22检测到主成员的分布式数据总线api22的心跳信号异常,比如,连续几个预设时间周期内未接收到主成员的状态机模块226发出的心跳信号,则判断主成员的当前工作模式异常,向仲裁机10申请将自己的工作模式切换成主成员,以确保该业务服务组20的数据传输正常,不受主成员异常的影响。
[0166]
若该业务服务组20的备成员有多个,其中的一个备成员在检测到主成员的心跳信号异常,第一个向仲裁机10发送工作模式切换申请,当仲裁机10接收到该申请,确认该业务服务组20当前主成员的心跳信号异常,则向该备成员发送同意消息,该备成员的当前工作模式切换成主成员,以确保该业务服务组20的数据传输正常。继续在步骤s79中,当仲裁机10接收到该申请,并确认该业务服务组20的其他备成员的心跳信号都异常时,将该业务服务组20的运行模式设定为单机模式,并向该备成员的分布式数据总线api22发送申请成功消息,该备成员的工作模式切换成单机。
[0167]
其中,业务服务组20的组成员的工作模式是单机时,组成员的分布式数据总线api22在收到其它业务服务组的udp组播数据后,通过协议控制器直接送入递交队列,按顺
序将递交队列中的数据递交给业务服务21应用层。
[0168]
根据本技术的又一方面,还提供了一种计算机可读介质,所述计算机可读介质存储有计算机可读指令,所述计算机可读指令可被处理器执行以实现前述方法。
[0169]
需要注意的是,本技术可在软件和/或软件与硬件的组合体中被实施,例如,可采用专用集成电路(asic)、通用目的计算机、缓存计算机和/或任何其他类似硬件设备来实现。在一个实施例中,本技术中涉及的软件程序可以通过处理器执行以实现上文所述步骤或功能。同样地,本技术的软件程序(包括相关的数据结构)可以被存储到计算机可读记录介质中。另外,本技术的一些步骤或功能可采用硬件来实现,例如,作为与处理器配合从而执行各个步骤或功能的电路。
[0170]
另外,本技术的全部或部分构成的技术方案可被应用为计算机程序产品,例如计算机程序指令,当其被计算机执行时,通过该计算机的操作,可以调用或提供根据本技术的方法和/或技术方案。而调用本技术的方法的程序指令,可能被存储在固定的或可移动的记录介质中,和/或通过广播或其他信号承载媒体中的数据流而被传输,和/或被存储在根据所述程序指令运行的计算机设备的工作存储器中。
[0171]
对于本领域技术人员而言,显然本发明不限于上述示范性实施例的细节,而且在不背离本发明的精神或基本特征的情况下,能够以其他的具体形式实现本发明。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本发明的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化涵括在本发明内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。此外,显然“包括”一词不排除其他单元或步骤,单数不排除复数。装置权利要求中陈述的多个单元或装置也可以由一个单元或装置通过软件和/或者硬件来实现。第一,第二等词语用来表示名称,而并不表示任何特定的顺序。

技术特征:
1.一种分布式数据传输系统,其特征在于,所述分布式数据传输系统包括:若干业务服务组,其中,每个业务服务组被分配一个唯一的udp组播地址,包含一个或多个组成员,其中,所述组成员是提供业务服务的应用程序或者是所述应用程序的拷贝,每个组成员被分配一个唯一的udp单播地址;分布式数据总线api,加载在每个组成员中,其中,组成员通过调用分布式数据总线api与其它组成员实现数据传输;仲裁机,设置所述业务服务组信息、组成员信息以及基于udp协议设置数据传输参数。2.根据权利要求1所述的系统,其特征在于,所述分布式数据总线api包括:接口层模块,数据层模块,协议层模块,网络层模块,心跳模块和状态机模块,其中,所述接口层模块定义数据传输接口,实现与组成员的业务服务应用层的数据传输;所述数据层模块维护业务服务组及其组成员信息,并根据所述业务服务组及其组成员信息在所述接口层模块和所述协议层模块之间传输数据;所述协议层模块设置所述分布式数据总线api的运行机制,处理与所述数据层模块和所述网络层模块之间传输的数据;所述网络层模块实现与传输网络的数据链路层的数据传输;所述心跳模块产生心跳信号;所述状态机模块获取所述心跳模块产生的心跳信号发送给所述仲裁机,并检测同一业务服务组的组成员的心跳信号。3.根据权利要求2所述的系统,其特征在于,所述接口层模块包括:数据发送接口子模块;数据递交回调接口子模块;组成员信息变更回调接口子模块。4.根据权利要求3所述的系统,其特征在于,所述数据层模块包括:数据递交子模块;数据路由子模块;信息静态维护子模块;数据递交队列子模块。5.根据权利要求4所述的系统,其特征在于,所述网络层模块包括:网络层数据处理子模块;数据传输窗口算法子模块;网络事件注册及观察子模块;数据传输端口子模块。6.根据权利要求5所述的系统,其特征在于,所述数据传输窗口算法包括:数据发送方和数据接收方基于预设窗口尺寸和预设规则传输数据,直至所述数据全部完成传输。7.根据权利要求6所述的系统,其特征在于,所述预设规则包括:数据发送方基于预设窗口尺寸发送数据;在预设时间内,数据接收方每接收到预设个数个数据包时,发送一次包含所述预设个数个数据包中最后一个数据包信息的成功接收消息;
若在预设时间内,数据接收方未接收到预设个数个数据包时,发送一次包含最后一个成功接收的数据包信息的成功接收消息,并根据后续成功接收的第一个数据包信息确定未成功接收的数据包信息,发送一次未成功接收消息,数据发送方根据接收到的所述未成功接收消息,重新发送所述未成功接收的数据包;若基于预设窗口尺寸,数据发送方发送最后一个数据包后,在预设时间内未接收到对应的成功接收消息,则发送最后一个数据包成功接收确认请求,并根据接收到的数据接收方的响应进行处理。8.根据权利要求5所述的系统,其特征在于,所述业务服务组的运行模式包括热备模式。9.根据权利要求8所述的系统,其特征在于,当业务服务组的运行模式是热备模式时,所述仲裁机还用于受理各组成员发送的请求,确定各组成员的工作模式。10.根据权利要求9所述的系统,其特征在于,所述组成员的工作模式包括:主成员;备成员;单机。11.一种基于如权利要求10所述分布式数据传输系统的数据传输的方法,其特征在于,所述方法包括:仲裁机受理各组成员发送的请求,确定每个业务服务组的每个组成员的工作模式,其中,每个业务服务组中,只有一个组成员的工作模式是主成员,其它组成员的工作模式是备成员;当业务服务组的每个组成员的分布式数据总线api接收到同一数据时,将所述数据放入递交队列;所述业务服务组的备成员的分布式数据总线api生成递交序号及所述数据的数据摘要,发送至主成员的分布式数据总线api;所述主成员的分布式数据总线api根据接收到的所述递交序号及所述数据的数据摘要,将所述递交序号作为主成员的递交队列中所述数据的递交序号,并更新主成员的递交队列状态信息,向主成员的业务服务应用层递交所述数据,并向所述备成员的分布式数据总线api发送确认递交消息;所述备成员的分布式数据总线api根据接收到的所述确认递交消息,更新备成员的递交队列状态,向备成员的业务服务应用层递交所述数据。12.根据权利要求11所述的方法,其特征在于,所述方法还包括:业务服务组各组成员的分布式数据总线api之间维持基于预设时间周期的心跳信号;业务服务组各组成员的分布式数据总线api与仲裁机之间维持基于所述预设时间周期的心跳信号。13.根据权利要求12所述的方法,其特征在于,所述方法还包括:当业务服务组的备成员的分布式数据总线api检测到主成员的分布式数据总线api的心跳信号异常,向仲裁机发送工作模式切换的申请;当仲裁机接收到所述申请,并确认所述业务服务组的其他备成员的分布式数据总线api的心跳信号都异常时,将所述业务服务组的运行模式设定为单机模式,并向该备成员的
分布式数据总线api发送申请成功消息。14.一种计算机可读介质,其特征在于,其上存储有计算机可读指令,所述计算机可读指令被处理器执行以实现如权利要求9至13中任一项所述的方法。

技术总结
本申请提供一种分布式数据传输系统及方法,其中,该系统包括:若干业务服务组,其中,每个业务服务组被分配一个唯一的UDP组播地址,包含一个或多个组成员,其中,所述组成员是提供业务服务的应用程序或者是所述应用程序的拷贝,每个组成员被分配一个唯一的UDP单播地址;分布式数据总线API,加载在每个组成员中,其中,组成员通过调用分布式数据总线API与其它组成员实现UDP组播和/或单播数据传输;仲裁机,设置所述业务服务组信息、组成员信息以及基于UDP协议设置数据传输参数。该分布式数据传输系统采用分布式数据总线API,无中心节点,架构轻量化,可扩展性强;采用UDP协议,通过消息注册机制实现数据路由,无需依次排队,提高了数据传输效率。了数据传输效率。了数据传输效率。


技术研发人员:徐小雷
受保护的技术使用者:东方财富信息股份有限公司
技术研发日:2021.12.01
技术公布日:2022/3/8

最新回复(0)