CN115065733A - 数据发布与订阅***、数据发布方法、数据订阅方法 - Google Patents

数据发布与订阅***、数据发布方法、数据订阅方法 Download PDF

Info

Publication number
CN115065733A
CN115065733A CN202210388604.2A CN202210388604A CN115065733A CN 115065733 A CN115065733 A CN 115065733A CN 202210388604 A CN202210388604 A CN 202210388604A CN 115065733 A CN115065733 A CN 115065733A
Authority
CN
China
Prior art keywords
data
udp datagram
datagram
sequence number
udp
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN202210388604.2A
Other languages
English (en)
Other versions
CN115065733B (zh
Inventor
张帆
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Bank of China Ltd
Original Assignee
Bank of China Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Bank of China Ltd filed Critical Bank of China Ltd
Priority to CN202210388604.2A priority Critical patent/CN115065733B/zh
Publication of CN115065733A publication Critical patent/CN115065733A/zh
Application granted granted Critical
Publication of CN115065733B publication Critical patent/CN115065733B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/16Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/34Flow control; Congestion control ensuring sequence integrity, e.g. using sequence numbers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/9057Arrangements for supporting packet reassembly or resequencing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1095Replication or mirroring of data, e.g. scheduling or transport for data synchronisation between network nodes

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Security & Cryptography (AREA)
  • Communication Control (AREA)

Abstract

本发明提供了一种数据发布与订阅***、数据发布方法、数据订阅方法,应用于分布式技术领域,该***包括:数据发布装置,用于将数据生成UDP数据报,并发送至数据接收装置,UDP数据报设有唯一的消息序号;在设定时长内无UDP数据报时,向数据接收装置发送心跳数据报,心跳数据报带有消息序号;在接收到重送请求后,向数据接收装置标识对应的数据接收装置发送目标消息序号对应的数据包;数据接收装置,用于在接收到UDP数据报后,检查UDP数据报是否缺失;在接收到心跳数据报后,检查UDP数据报是否缺失;在确定UDP数据报缺失后,向数据发布装置发送重送请求。本发明可以实现可靠、高效、快速、公平的数据发送与订阅。

Description

数据发布与订阅***、数据发布方法、数据订阅方法
技术领域
本发明涉及分布式技术领域,尤其涉及一种数据发布与订阅***、数据发布方法、数据订阅方法。
背景技术
在企业内网环境的数据发送和订阅装置,可用于视频直播、行情发布等场景。这类场景共同特点是:很多个接收者、要求传输速度快、资源消耗低,所以很适合采用UDP技术,但由于UDP不保证数据送达。另外,现有的技术会使用TCP协议传输数据,在特定的使用场景下,相对于UDP来说,TCP协议传输数据存在以下缺点:第一,不公平,当接收端的个数超过大于1时,需要逐个发给接收者,排在后面的接收者获得数据的时间点相对较晚;第二,开销大、速度慢;第三,***资源要求多,成本高、不经济。
综上所述,因此需要一种可靠、快速、公平的数据发送与订阅装置。
发明内容
本发明实施例提出一种数据发布与订阅***,用以实现可靠、快速、公平的数据发送与订阅,该***包括:
数据发布装置,用于在接收到数据后,将所述数据生成UDP数据报,并发送至数据接收装置,所述UDP数据报的消息序号栏位设有唯一的消息序号;在设定时长内无UDP数据报时,向数据接收装置发送心跳数据报,所述心跳数据报带有上一次发送的UDP数据报的消息序号;在接收到重送请求后,向数据接收装置标识对应的数据接收装置发送目标消息序号对应的数据包,所述数据包为TCP数据包,且所述TCP数据包中的内容与所述目标消息序号对应的UDP数据报的内容一致;
数据接收装置,用于在接收到UDP数据报后,基于UDP数据报的消息序号,检查UDP数据报是否缺失;在接收到心跳数据报后,基于心跳数据报带有的上一次发送的UDP数据报的消息序号,检查UDP数据报是否缺失;在确定UDP数据报缺失后,向数据发布装置发送重送请求,所述重送请求带有数据接收装置标识和目标消息序号。
本发明实施例提出一种数据发布方法,用以实现可靠、高效、快速、公平的数据发送与订阅,该方法包括:
在接收到数据后,将所述数据生成UDP数据报,并发送至数据接收装置,所述UDP数据报的消息序号栏位设有唯一的消息序号;所述数据接收装置在接收到UDP数据报后,基于UDP数据报的消息序号,检查UDP数据报是否缺失;
在设定时长内无UDP数据报时,向数据接收装置发送心跳数据报,所述心跳数据报带有上一次发送的UDP数据报的消息序号;所述数据接收装置在接收到心跳数据报后,基于心跳数据报带有的上一次发送的UDP数据报的消息序号,检查UDP数据报是否缺失;
在接收到重送请求后,向数据接收装置标识对应的数据接收装置发送目标消息序号对应的数据包,所述数据包为TCP数据包,且所述TCP数据包中的内容与所述目标消息序号对应的UDP数据报的内容一致;所述重送请求是数据接收装置在确定UDP数据报缺失后,向数据发布装置发送的,所述重送请求带有数据接收装置标识和目标消息序号。
本发明实施例提出一种数据发布装置,用以实现可靠、高效、快速、公平的数据发送与订阅,该装置包括:
UDP数据报生成模块,用于在接收到数据后,将所述数据生成UDP数据报,所述UDP数据报的消息序号栏位设有唯一的消息序号;
UDP数据报发送模块,用于将UDP数据报发送至数据接收装置;所述数据接收装置在接收到UDP数据报后,基于UDP数据报的消息序号,检查UDP数据报是否缺失;在接收到重送请求后,向数据接收装置标识对应的数据接收装置发送目标消息序号对应的数据包,所述数据包为TCP数据包,且所述TCP数据包中的内容与所述目标消息序号对应的UDP数据报的内容一致;所述重送请求是数据接收装置在确定UDP数据报缺失后,向数据发布装置发送的,所述重送请求带有数据接收装置标识和目标消息序号;
心跳数据报发送模块,用于在设定时长内无UDP数据报时,向数据接收装置发送心跳数据报,所述心跳数据报带有上一次发送的UDP数据报的消息序号;所述数据接收装置在接收到心跳数据报后,基于心跳数据报带有的上一次发送的UDP数据报的消息序号,检查UDP数据报是否缺失。
本发明实施例提出一种数据订阅方法,用以实现可靠、高效、快速、公平的数据发送与订阅,该方法包括:
在接收到UDP数据报后,基于UDP数据报的消息序号,检查UDP数据报是否缺失;所述UDP数据报是数据发布装置生成的,所述UDP数据报的消息序号栏位设有唯一的消息序号;
在接收到心跳数据报后,基于心跳数据报带有的上一次发送的UDP数据报的消息序号,检查UDP数据报是否缺失;所述心跳数据报是数据发布装置在设定时长内无UDP数据报时发送的,所述心跳数据报带有上一次发送的UDP数据报的消息序号;
在确定UDP数据报缺失后,向数据发布装置发送重送请求,所述重送请求带有数据接收装置标识和目标消息序号;所述数据发布装置在接收到重送请求后,向数据接收装置标识对应的数据接收装置发送目标消息序号对应的数据包,所述数据包为TCP数据包,且所述TCP数据包中的内容与所述目标消息序号对应的UDP数据报的内容一致。
本发明实施例提出一种数据订阅装置,用以实现可靠、高效、快速、公平的数据发送与订阅,该装置包括:
第一UDP数据报检查模块,用于在接收到UDP数据报后,基于UDP数据报的消息序号,检查UDP数据报是否缺失;所述UDP数据报是数据发布装置生成的,所述UDP数据报的消息序号栏位设有唯一的消息序号;
第二UDP数据报检查模块,用于在接收到心跳数据报后,基于心跳数据报带有的上一次发送的UDP数据报的消息序号,检查UDP数据报是否缺失;所述心跳数据报是数据发布装置在设定时长内无UDP数据报时发送的,所述心跳数据报带有上一次发送的UDP数据报的消息序号;
重送请求发送模块,用于在确定UDP数据报缺失后,向数据发布装置发送重送请求,所述重送请求带有数据接收装置标识和目标消息序号;所述数据发布装置在接收到重送请求后,向数据接收装置标识对应的数据接收装置发送目标消息序号数据包,所述数据包为TCP数据包,且所述TCP数据包中的内容与所述目标消息序号对应的UDP数据报的内容一致。
本发明实施例还提供一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述数据发布方法或数据订阅方法。
本发明实施例还提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述数据发布方法或数据订阅方法。
本发明实施例还提供一种计算机程序产品,所述计算机程序产品包括计算机程序,所述计算机程序被处理器执行时实现上述数据发布方法或数据订阅方法。
在本发明实施例中,数据发布装置,用于在接收到数据后,将所述数据生成UDP数据报,并发送至数据接收装置,所述UDP数据报的消息序号栏位设有唯一的消息序号;在设定时长内无UDP数据报时,向数据接收装置发送心跳数据报,所述心跳数据报带有上一次发送的UDP数据报的消息序号;在接收到重送请求后,向数据接收装置标识对应的数据接收装置发送目标消息序号对应的数据包,所述数据包为TCP数据包,且所述TCP数据包中的内容与所述目标消息序号对应的UDP数据报的内容一致;数据接收装置,用于在接收到UDP数据报后,基于UDP数据报的消息序号,检查UDP数据报是否缺失;在接收到心跳数据报后,基于心跳数据报带有的上一次发送的UDP数据报的消息序号,检查UDP数据报是否缺失;在确定UDP数据报缺失后,向数据发布装置发送重送请求,所述重送请求带有数据接收装置标识和目标消息序号。与现有技术通过TCP协议传输数据的方法相比,通过发送UDP数据报,可以同步发给所有的数据接收端,而不需要逐个发给接收者,公平性好;且由于可以同时发送UDP数据报,效率高,速度快;数据接收端在确定UDP数据报缺失后,向数据发布装置发送重送请求,以保证UDP数据不会缺失,可靠性好。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。在附图中:
图1为本发明实施例中数据发布与订阅***的示意图一;
图2为本发明实施例中数据发布与订阅***的示意图二;
图3为本发明实施例中数据发布方法的流程图;
图4为本发明实施例中数据发布装置的示意图;
图5为本发明实施例中另一种数据发布方法的流程图;
图6为本发明实施例中另一种数据发布装置的示意图;
图7为本发明实施例中计算机设备的示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚明白,下面结合附图对本发明实施例做进一步详细说明。在此,本发明的示意性实施例及其说明用于解释本发明,但并不作为对本发明的限定。
在本说明书的描述中,所使用的“包含”、“包括”、“具有”、“含有”等,均为开放性的用语,即意指包含但不限于。参考术语“一个实施例”、“一个具体实施例”、“一些实施例”、“例如”等的描述意指结合该实施例或示例描述的具体特征、结构或者特点包含于本申请的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。各实施例中涉及的步骤顺序用于示意性说明本申请的实施,其中的步骤顺序不作限定,可根据需要作适当调整。TCP和UDP都是网络层之上的传输层协议,但两者的差异如表1。
表1
Figure BDA0003595843680000051
Figure BDA0003595843680000061
TCP协议采用的是一种叫做单播的传输形式,UDP协议提供了向多个接收者发送消息的额外传输形式(多播、广播):
单播(TCP和UDP):发送消息给一个由唯一的地址所标识的单一的网络目的地。
多播(UDP):传输给一个预定义的主机组。
广播(UDP):传输到网络(或者子网)上的所有主机。
基于前述分析,本发明实施例提出基于UDP组播方法实现数据发布与订阅***。
图1为本发明实施例中数据发布与订阅***的示意图一,如图1所示,包括:
数据发布装置101,用于在接收到数据后,将所述数据生成UDP数据报,并发送至数据接收装置,所述UDP数据报的消息序号栏位设有唯一的消息序号;在设定时长内无UDP数据报时,向数据接收装置发送心跳数据报,所述心跳数据报带有上一次发送的UDP数据报的消息序号;在接收到重送请求后,向数据接收装置标识对应的数据接收装置发送目标消息序号对应的数据包,所述数据包为TCP数据包,且所述TCP数据包中的内容与所述目标消息序号对应的UDP数据报的内容一致;
数据接收装置102,用于在接收到UDP数据报后,基于UDP数据报的消息序号,检查UDP数据报是否缺失;在接收到心跳数据报后,基于心跳数据报带有的上一次发送的UDP数据报的消息序号,检查UDP数据报是否缺失;在确定UDP数据报缺失后,向数据发布装置发送重送请求,所述重送请求带有数据接收装置标识和目标消息序号。
在一实施例中,数据发布装置还用于:在生成UDP数据报时,在UDP数据报的校验码栏位生成所述UDP数据报的校验码;
数据接收装置还用于:在接收到UDP数据报后,基于所述UDP数据报的校验码检查UDP数据报的完整性;在接收到数据包后,获得所述数据包中与UDP数据报对应的校验码,基于所述校验码检查UDP数据报的完整性;在检查结果为不完整时,向数据发布装置发送重送请求。
其中,数据包是通过重送请求获得的。
在上述实施例中,采用了“消息序号机制”、“重送机制”和“心跳机制”实现可靠性,其中,消息序号由数据发布装置的发送者保证连续且递增。心跳机制使得为避免长时间无数据报造成的消息丢失或乱序的识别延迟。需要说明的是,重送请求为TCP请求,其他数据发送时通过UDP协议的。
图2为本发明实施例中数据发布与订阅***的示意图二,在一实施例中,数据接收装置有多个;多个数据接收装置和数据发布装置组成通讯组;
数据接收装置还用于:在刚加入通讯组且首次接收到数据发布装置的UDP数据报时,若所述UDP数据报的消息序号比预期大,根据数据需求,判断是否需要获取小于所述消息序号的UDP数据报,若是,向数据发布装置发送重送请求。
例如,目前通讯组有数据接收装置1、数据接收装置2和数据接收装置3,数据接收装置4刚加入通讯组且首次接收到数据发布装置的UDP数据报的消息序号为4,那么,数据接收装置4根据数据需求判断是否要求重送消息序号为1、2、3的UDP数据报,若需要,向数据发布装置发送重送请求,这里,重送请求包括数据接收装置4的标识和目标消息序号1、2和3。
另外,图2中数据发送装置是通过交换机来发送UDP数据的。
在一实施例中,数据接收装置还用于:
当超过设定时长未收到任何数据报时,生成报警信息。
在一实施例中,数据接收装置为数据订阅端;
所述数据订阅端用于对环形无锁队列中的UDP数据和/或数据包进行处理。
在一实施例中,数据接收装置为展示终端;
所述展示终端用于根据不同的业务场景对环形无锁队列中的UDP数据和/或数据包进行展示。
在一实施例中,数据接收装置具体用于:
在非首次接收到数据发布装置的UDP数据报,且UDP数据报的消息序号比预期大时,确定UDP数据报存在缺失;根据UDP数据报的消息序号和预期,获得目标消息序号;
在接收到数据发布装置的UDP数据报,且UDP数据报的消息序号比预期小时,确定UDP数据报乱序,丢弃所述UDP数据报;
在接收到数据发布装置的数据包,且数据包的消息序号比预期小时,确定UDP数据报乱序,丢弃所述数据包。
在上述实施例中,在正常数据接收过程中,例如,UDP数据报的消息序号为5,而目前已经接收的UDP数据报的消息序号为1、2、3,因此,预期应为4,UDP数据报的消息序号比预期4大,说明UDP数据报缺失,目标消息序号应为4,此时重送请求的目标消息序号为4。
又例如,接收的UDP数据报的消息序号为2,目前已经接收的UDP数据报的消息序号为1、2、3,预期应为4,说明消息序号为2的UDP数据报已经接收了,此时出现乱序,丢弃刚接收的UDP数据报即可。
数据包则是通过重送请求获得的,也需要进行上述判断,这里不再赘述。
在一实施例中,数据接收装置具体用于:
在心跳数据报带有的上一次发送的UDP数据报的消息序号比预期大时,确定UDP数据报存在缺失;根据上一次发送的UDP数据报的消息序号和预期,获得目标消息序号。
例如,心跳数据报带有的上一次发送的UDP数据报的消息序号为5,而实际上消息序号为5的UDP数据报并没有收到(因UDP的不可靠而丢失),上一次发送的UDP数据报的消息序号为4,那么预期应该为4,说明UDP数据报有缺失,重送请求的目标消息序号应该为5。
心跳数据报是周期性产生的。该心跳数据报可以监控通信链路状态及识别接受序列号间隙。周期间隔长度可以通过参数确定。心跳数据报的时间间隔应当在每一个UDP数据报发送后复位,即发送一个UDP数据报后,在间隔给定的时间内无其它UDP数据报发送则发送一个心跳数据报。
在一实施例中,数据接收装置还用于:采用NIO非阻塞方式接收UDP数据报和/或数据包,将接收的UDP数据报和/或数据包按照正确的顺序保存到环形无锁队列中,所述环形无锁队列中的UDP数据报在处理时采用独占CPU核心的方式。
在上述实施例中,采用NIO非阻塞方式接收UDP数据报和/或数据包,可高效率接收数据包,通过环形队列内数据报的连续,确保数据报的连续。所述环形无锁队列中的UDP数据报和/或数据包在处理时采用独占CPU核心的方式可降低处理延迟。
综上所述,在本发明实施例提出的***中,数据发布装置,用于在接收到数据后,将所述数据生成UDP数据报,并发送至数据接收装置,所述UDP数据报的消息序号栏位设有唯一的消息序号;在设定时长内无UDP数据报时,向数据接收装置发送心跳数据报,所述心跳数据报带有上一次发送的UDP数据报的消息序号;在接收到重送请求后,向数据接收装置标识对应的数据接收装置发送目标消息序号对应的数据包,所述数据包为TCP数据包,且所述TCP数据包中的内容与所述目标消息序号对应的UDP数据报的内容一致;数据接收装置,用于在接收到UDP数据报后,基于UDP数据报的消息序号,检查UDP数据报是否缺失;在接收到心跳数据报后,基于心跳数据报带有的上一次发送的UDP数据报的消息序号,检查UDP数据报是否缺失;在确定UDP数据报缺失后,向数据发布装置发送重送请求,所述重送请求带有数据接收装置标识和目标消息序号。与现有技术通过TCP协议传输数据的方法相比,通过发送UDP数据报,可以同步发给所有的数据接收端,而不需要逐个发给接收者,公平性好;且由于可以同时发送UDP数据报,效率高,速度快;数据接收端在确定UDP数据报缺失后,向数据发布装置发送重送请求,以保证UDP数据不会缺失,可靠性好。
本发明实施例还提出一种数据发布方法,其原理与数据发布与订阅***类似,这里不再赘述。
图3为本发明实施例中数据发布方法的流程图,包括:
步骤301,在接收到数据后,将所述数据生成UDP数据报,并发送至数据接收装置,所述UDP数据报的消息序号栏位设有唯一的消息序号;所述数据接收装置在接收到UDP数据报后,基于UDP数据报的消息序号,检查UDP数据报是否缺失;
步骤302,在设定时长内无UDP数据报时,向数据接收装置发送心跳数据报,所述心跳数据报带有上一次发送的UDP数据报的消息序号;所述数据接收装置在接收到心跳数据报后,基于心跳数据报带有的上一次发送的UDP数据报的消息序号,检查UDP数据报是否缺失;
步骤303,在接收到重送请求后,向数据接收装置标识对应的数据接收装置发送目标消息序号对应的数据包,所述数据包为TCP数据包,且所述TCP数据包中的内容与所述目标消息序号对应的UDP数据报的内容一致;所述重送请求是数据接收装置在确定UDP数据报缺失后,向数据发布装置发送的,所述重送请求带有数据接收装置标识和目标消息序号。
在一实施例中,所述方法还包括:在生成UDP数据报时,在UDP数据报的校验码栏位生成所述UDP数据报的校验码;数据接收装置在接收到UDP数据报后,基于所述UDP数据报的校验码检查UDP数据报的完整性;在接收到数据包后,获得所述数据包中与UDP数据报对应的校验码,基于所述校验码检查UDP数据报的完整性;在检查结果为不完整时,向数据发布装置发送重送请求。
本发明实施例还提出一种数据发布装置,其原理与数据发布与订阅***类似,这里不再赘述。
图4为本发明实施例中数据发布装置的示意图,包括:
UDP数据报生成模块401,用于在接收到数据后,将所述数据生成UDP数据报,所述UDP数据报的消息序号栏位设有唯一的消息序号;
UDP数据报发送模块402,用于将UDP数据报发送至数据接收装置;所述数据接收装置在接收到UDP数据报后,基于UDP数据报的消息序号,检查UDP数据报是否缺失;在接收到重送请求后,向数据接收装置标识对应的数据接收装置发送目标消息序号对应的数据包,所述数据包为TCP数据包,且所述TCP数据包中的内容与所述目标消息序号对应的UDP数据报的内容一致;所述重送请求是数据接收装置在确定UDP数据报缺失后,向数据发布装置发送的,所述重送请求带有数据接收装置标识和目标消息序号;
心跳数据报发送模块403,用于在设定时长内无UDP数据报时,向数据接收装置发送心跳数据报,所述心跳数据报带有上一次发送的UDP数据报的消息序号;所述数据接收装置在接收到心跳数据报后,基于心跳数据报带有的上一次发送的UDP数据报的消息序号,检查UDP数据报是否缺失。
在一实施例中,UDP数据报生成模块401还用于:在生成UDP数据报时,在UDP数据报的校验码栏位生成所述UDP数据报的校验码;数据接收装置在接收到UDP数据报后,基于所述UDP数据报的校验码检查UDP数据报的完整性;在接收到数据包后,获得所述数据包中与UDP数据报对应的校验码,基于所述校验码检查UDP数据报的完整性;在检查结果为不完整时,向数据发布装置发送重送请求。
综上所述,在本发明实施例提出的数据发布方法中,在接收到数据后,将所述数据生成UDP数据报,并发送至数据接收装置,所述UDP数据报的消息序号栏位设有唯一的消息序号;所述数据接收装置在接收到UDP数据报后,基于UDP数据报的消息序号,检查UDP数据报是否缺失;在设定时长内无UDP数据报时,向数据接收装置发送心跳数据报,所述心跳数据报带有上一次发送的UDP数据报的消息序号;所述数据接收装置在接收到心跳数据报后,基于心跳数据报带有的上一次发送的UDP数据报的消息序号,检查UDP数据报是否缺失;在接收到重送请求后,向数据接收装置标识对应的数据接收装置发送目标消息序号对应的数据包,所述数据包为TCP数据包,且所述TCP数据包中的内容与所述目标消息序号对应的UDP数据报的内容一致;所述重送请求是数据接收装置在确定UDP数据报缺失后,向数据发布装置发送的,所述重送请求带有数据接收装置标识和目标消息序号。与现有技术通过TCP协议传输数据的方法相比,通过发送UDP数据报,可以同步发给所有的数据接收端,而不需要逐个发给接收者,公平性好;且由于可以同时发送UDP数据报,效率高,速度快;数据接收端在确定UDP数据报缺失后,向数据发布装置发送重送请求,以保证UDP数据不会缺失,可靠性好。
本发明实施例还提出另一种数据发布方法,其原理与数据发布与订阅***类似,这里不再赘述。
图5为本发明实施例中另一种数据发布方法的流程图,包括:
步骤501,在接收到UDP数据报后,基于UDP数据报的消息序号,检查UDP数据报是否缺失;所述UDP数据报是数据发布装置生成的,所述UDP数据报的消息序号栏位设有唯一的消息序号;
步骤502,在接收到心跳数据报后,基于心跳数据报带有的上一次发送的UDP数据报的消息序号,检查UDP数据报是否缺失;所述心跳数据报是数据发布装置在设定时长内无UDP数据报时发送的,所述心跳数据报带有上一次发送的UDP数据报的消息序号;
步骤503,在确定UDP数据报缺失后,向数据发布装置发送重送请求,所述重送请求带有数据接收装置标识和目标消息序号;所述数据发布装置在接收到重送请求后,向数据接收装置标识对应的数据接收装置发送目标消息序号对应的数据包,所述数据包为TCP数据包,且所述TCP数据包中的内容与所述目标消息序号对应的UDP数据报的内容一致。
在一实施例中,所述方法还包括:
在接收到UDP数据报后,基于所述UDP数据报的校验码检查UDP数据报的完整性;在接收到数据包后,获得所述数据包中与UDP数据报对应的校验码,基于所述校验码检查UDP数据报的完整性;在检查结果为不完整时,向数据发布装置发送重送请求。
在一实施例中,所述方法还包括:
在刚加入通讯组且首次接收到数据发布装置的UDP数据报时,若所述UDP数据报的消息序号比预期大,根据数据需求,判断是否需要获取小于所述消息序号的UDP数据报,若是,向数据发布装置发送重送请求。
在一实施例中,所述方法还包括:
在非首次接收到数据发布装置的UDP数据报,且UDP数据报的消息序号比预期大时,确定UDP数据报存在缺失;根据UDP数据报的消息序号和预期,获得目标消息序号;
在接收到数据发布装置的UDP数据报,且UDP数据报的消息序号比预期小时,确定UDP数据报乱序,丢弃所述UDP数据报;
在接收到数据发布装置的数据包,且数据包的消息序号比预期小时,确定UDP数据报乱序,丢弃所述数据包。
在一实施例中,所述方法还包括:
在心跳数据报带有的上一次发送的UDP数据报的消息序号比预期大时,确定UDP数据报存在缺失;根据上一次发送的UDP数据报的消息序号和预期,获得目标消息序号。
在一实施例中,所述方法还包括:
采用NIO非阻塞方式接收UDP数据报和/或数据包,将接收的UDP数据报和/或按照正确的顺序保存到环形无锁队列中,所述环形无锁队列中的UDP数据报和/或数据包在处理时采用独占CPU核心的方式。
在一实施例中,所述方法还包括:
当超过设定时长未收到任何数据报时,生成报警信息。
本发明实施例还提出另一种数据发布装置,其原理与数据发布与订阅***类似,这里不再赘述。
图6为本发明实施例中另一种数据发布装置的示意图,包括:
第一UDP数据报检查模块601,用于在接收到UDP数据报后,基于UDP数据报的消息序号,检查UDP数据报是否缺失;所述UDP数据报是数据发布装置生成的,所述UDP数据报的消息序号栏位设有唯一的消息序号;
第二UDP数据报检查模块602,用于在接收到心跳数据报后,基于心跳数据报带有的上一次发送的UDP数据报的消息序号,检查UDP数据报是否缺失;所述心跳数据报是数据发布装置在设定时长内无UDP数据报时发送的,所述心跳数据报带有上一次发送的UDP数据报的消息序号;
重送请求发送模块603,用于在确定UDP数据报缺失后,向数据发布装置发送重送请求,所述重送请求带有数据接收装置标识和目标消息序号;所述数据发布装置在接收到重送请求后,向数据接收装置标识对应的数据接收装置发送目标消息序号对应的数据包,所述数据包为TCP数据包,且所述TCP数据包中的内容与所述目标消息序号对应的UDP数据报的内容一致。
在一实施例中,所述数据接收装置还包括第三UDP数据报检查模块,用于:
在接收到UDP数据报后,基于所述UDP数据报的校验码检查UDP数据报的完整性;在接收到数据包后,获得所述数据包中与UDP数据报对应的校验码,基于所述校验码检查UDP数据报的完整性;在检查结果为不完整时,向数据发布装置发送重送请求
在一实施例中,重送请求发送模块603还用于:
在刚加入通讯组且首次接收到数据发布装置的UDP数据报时,若所述UDP数据报的消息序号比预期大,根据数据需求,判断是否需要获取小于所述消息序号的UDP数据报,若是,向数据发布装置发送重送请求。
在一实施例中,第一UDP数据报检查模块601具体用于:
在非首次接收到数据发布装置的UDP数据报,且UDP数据报的消息序号比预期大时,确定UDP数据报存在缺失;根据UDP数据报的消息序号和预期,获得目标消息序号;
在接收到数据发布装置的UDP数据报,且UDP数据报的消息序号比预期小时,确定UDP数据报乱序,丢弃所述UDP数据报;
在接收到数据发布装置的数据包,且数据包的消息序号比预期小时,确定UDP数据报乱序,丢弃所述数据包。
在一实施例中,第二UDP数据报检查模块602具体用于:
在心跳数据报带有的上一次发送的UDP数据报的消息序号比预期大时,确定UDP数据报存在缺失;根据上一次发送的UDP数据报的消息序号和预期,获得目标消息序号。
在一实施例中,所述数据接收装置还包括存储模块,用于:采用NIO非阻塞方式接收UDP数据报和/或数据包,将接收的UDP数据报和/或按照正确的顺序保存到环形无锁队列中,所述环形无锁队列中的UDP数据报和/或数据包在处理时采用独占CPU核心的方式。
在一实施例中,所述数据接收装置还包括报警信息生成模块,用于:当超过设定时长未收到任何数据报时,生成报警信息。
在一实施例中,数据接收装置为数据订阅端;
所述数据订阅端用于对环形无锁队列中的UDP数据和/或数据包进行处理。
在一实施例中,数据接收装置为展示终端;
所述展示终端用于根据不同的业务场景对环形无锁队列中的UDP数据和/或数据包进行展示。
综上所述,在本发明实施例提出的数据订阅方法及装置中,在接收到UDP数据报后,基于UDP数据报的消息序号,检查UDP数据报是否缺失;所述UDP数据报是数据发布装置生成的,所述UDP数据报的消息序号栏位设有唯一的消息序号;在接收到心跳数据报后,基于心跳数据报带有的上一次发送的UDP数据报的消息序号,检查UDP数据报是否缺失;所述心跳数据报是数据发布装置在设定时长内无UDP数据报时发送的,所述心跳数据报带有上一次发送的UDP数据报的消息序号;在确定UDP数据报缺失后,向数据发布装置发送重送请求,所述重送请求带有数据接收装置标识和目标消息序号;所述数据发布装置在接收到重送请求后,向数据接收装置标识对应的数据接收装置发送目标消息序号对应的数据包,所述数据包为TCP数据包,且所述TCP数据包中的内容与所述目标消息序号对应的UDP数据报的内容一致。与现有技术通过TCP协议传输数据的方法相比,通过发送UDP数据报,可以同步发给所有的数据接收端,而不需要逐个发给接收者,公平性好;且由于可以同时发送UDP数据报,效率高,速度快;数据接收端在确定UDP数据报缺失后,向数据发布装置发送重送请求,以保证UDP数据不会缺失,可靠性好。
本发明实施例还提供一种计算机设备,图7为本发明实施例中计算机设备的示意图,所述计算机设备700包括存储器710、处理器720及存储在存储器710上并可在处理器720上运行的计算机程序730,所述处理器720执行所述计算机程序730时实现上述数据发布方法或数据订阅方法。
本发明实施例还提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述数据发布方法或数据订阅方法。
本发明实施例还提供一种计算机程序产品,所述计算机程序产品包括计算机程序,所述计算机程序被处理器执行时实现上述数据发布方法或数据订阅方法。
本发明实施例提出的计算机设备、计算机可读存储介质、计算机程序产品中涉及的方法具有如下有益效果:实用性强,增加了对四则运算表达式中变量编码的合法性和可用性校验,从而解决金融市场债券投资数据之间中多变量间复杂计算的关系的问题,有助于用户分析多变量间复杂运算关系,具有较强的实用性;灵活性好:可实现用户自定义四则运算表达式,不局限于某种固定的运算关系,具有较强的灵活性,进而可以灵活分析金融市场债券投资收益率。
本领域内的技术人员应明白,本发明的实施例可提供为方法、***、或计算机程序业务***。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序业务***的形式。
本发明是参照根据本发明实施例的方法、设备(***)、和计算机程序业务***的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (16)

1.一种数据发布与订阅***,其特征在于,包括:
数据发布装置,用于在接收到数据后,将所述数据生成UDP数据报,并发送至数据接收装置,所述UDP数据报的消息序号栏位设有唯一的消息序号;在设定时长内无UDP数据报时,向数据接收装置发送心跳数据报,所述心跳数据报带有上一次发送的UDP数据报的消息序号;在接收到重送请求后,向数据接收装置标识对应的数据接收装置发送目标消息序号对应的数据包,所述数据包为TCP数据包,且所述TCP数据包中的内容与所述目标消息序号对应的UDP数据报的内容一致;
数据接收装置,用于在接收到UDP数据报后,基于UDP数据报的消息序号,检查UDP数据报是否缺失;在接收到心跳数据报后,基于心跳数据报带有的上一次发送的UDP数据报的消息序号,检查UDP数据报是否缺失;在确定UDP数据报缺失后,向数据发布装置发送重送请求,所述重送请求带有数据接收装置标识和目标消息序号。
2.如权利要求1所述的***,其特征在于,数据发布装置还用于:在生成UDP数据报时,在UDP数据报的校验码栏位生成所述UDP数据报的校验码;
数据接收装置还用于:在接收到UDP数据报后,基于所述UDP数据报的校验码检查UDP数据报的完整性;在接收到数据包后,获得所述数据包中与UDP数据报对应的校验码,基于所述校验码检查UDP数据报的完整性;在检查结果为不完整时,向数据发布装置发送重送请求。
3.如权利要求1所述的***,其特征在于,数据接收装置有多个;多个数据接收装置和数据发布装置组成通讯组;
数据接收装置还用于:在刚加入通讯组且首次接收到数据发布装置的UDP数据报时,若所述UDP数据报的消息序号比预期大,根据数据需求,判断是否需要获取小于所述消息序号的UDP数据报,若是,向数据发布装置发送重送请求。
4.如权利要求1所述的***,其特征在于,数据接收装置具体用于:
在非首次接收到数据发布装置的UDP数据报,且UDP数据报的消息序号比预期大时,确定UDP数据报存在缺失;根据UDP数据报的消息序号和预期,获得目标消息序号;
在接收到数据发布装置的UDP数据报,且UDP数据报的消息序号比预期小时,确定UDP数据报乱序,丢弃所述UDP数据报;
在接收到数据发布装置的数据包,且数据包的消息序号比预期小时,确定UDP数据报乱序,丢弃所述数据包。
5.如权利要求1所述的***,其特征在于,数据接收装置具体用于:
在心跳数据报带有的上一次发送的UDP数据报的消息序号比预期大时,确定UDP数据报存在缺失;根据上一次发送的UDP数据报的消息序号和预期,获得目标消息序号。
6.如权利要求1所述的***,其特征在于,数据接收装置还用于:采用NIO非阻塞方式接收UDP数据报和/或数据包,将接收的UDP数据报和/或数据包按照正确的顺序保存到环形无锁队列中,所述环形无锁队列中的UDP数据报和/或数据包在处理时采用独占CPU核心的方式。
7.如权利要求1所述的***,其特征在于,数据接收装置还用于:
当超过设定时长未收到任何数据报时,生成报警信息。
8.如权利要求1所述的***,其特征在于,数据接收装置为数据订阅端;
所述数据订阅端用于对环形无锁队列中的UDP数据和/或数据包进行处理。
9.如权利要求1所述的***,其特征在于,数据接收装置为展示终端;
所述展示终端用于根据不同的业务场景对环形无锁队列中的UDP数据和/或数据包进行展示。
10.一种数据发布方法,其特征在于,包括:
在接收到数据后,将所述数据生成UDP数据报,并发送至数据接收装置,所述UDP数据报的消息序号栏位设有唯一的消息序号;所述数据接收装置在接收到UDP数据报后,基于UDP数据报的消息序号,检查UDP数据报是否缺失;
在设定时长内无UDP数据报时,向数据接收装置发送心跳数据报,所述心跳数据报带有上一次发送的UDP数据报的消息序号;所述数据接收装置在接收到心跳数据报后,基于心跳数据报带有的上一次发送的UDP数据报的消息序号,检查UDP数据报是否缺失;
在接收到重送请求后,向数据接收装置标识对应的数据接收装置发送目标消息序号对应的数据包,所述数据包为TCP数据包,且所述TCP数据包中的内容与所述目标消息序号对应的UDP数据报的内容一致;所述重送请求是数据接收装置在确定UDP数据报缺失后,向数据发布装置发送的,所述重送请求带有数据接收装置标识和目标消息序号。
11.一种数据发布装置,其特征在于,包括:
UDP数据报生成模块,用于在接收到数据后,将所述数据生成UDP数据报,所述UDP数据报的消息序号栏位设有唯一的消息序号;
UDP数据报发送模块,用于将UDP数据报发送至数据接收装置;所述数据接收装置在接收到UDP数据报后,基于UDP数据报的消息序号,检查UDP数据报是否缺失;在接收到重送请求后,向数据接收装置标识对应的数据接收装置发送目标消息序号对应的数据包,所述数据包为TCP数据包,且所述TCP数据包中的内容与所述目标消息序号对应的UDP数据报的内容一致;所述重送请求是数据接收装置在确定UDP数据报缺失后,向数据发布装置发送的,所述重送请求带有数据接收装置标识和目标消息序号;
心跳数据报发送模块,用于在设定时长内无UDP数据报时,向数据接收装置发送心跳数据报,所述心跳数据报带有上一次发送的UDP数据报的消息序号;所述数据接收装置在接收到心跳数据报后,基于心跳数据报带有的上一次发送的UDP数据报的消息序号,检查UDP数据报是否缺失。
12.一种数据订阅方法,其特征在于,包括:
在接收到UDP数据报后,基于UDP数据报的消息序号,检查UDP数据报是否缺失;所述UDP数据报是数据发布装置生成的,所述UDP数据报的消息序号栏位设有唯一的消息序号;
在接收到心跳数据报后,基于心跳数据报带有的上一次发送的UDP数据报的消息序号,检查UDP数据报是否缺失;所述心跳数据报是数据发布装置在设定时长内无UDP数据报时发送的,所述心跳数据报带有上一次发送的UDP数据报的消息序号;
在确定UDP数据报缺失后,向数据发布装置发送重送请求,所述重送请求带有数据接收装置标识和目标消息序号;所述数据发布装置在接收到重送请求后,向数据接收装置标识对应的数据接收装置发送目标消息序号对应的数据包,所述数据包为TCP数据包,且所述TCP数据包中的内容与所述目标消息序号对应的UDP数据报的内容一致。
13.一种数据订阅装置,其特征在于,包括:
第一UDP数据报检查模块,用于在接收到UDP数据报后,基于UDP数据报的消息序号,检查UDP数据报是否缺失;所述UDP数据报是数据发布装置生成的,所述UDP数据报的消息序号栏位设有唯一的消息序号;
第二UDP数据报检查模块,用于在接收到心跳数据报后,基于心跳数据报带有的上一次发送的UDP数据报的消息序号,检查UDP数据报是否缺失;所述心跳数据报是数据发布装置在设定时长内无UDP数据报时发送的,所述心跳数据报带有上一次发送的UDP数据报的消息序号;
重送请求发送模块,用于在确定UDP数据报缺失后,向数据发布装置发送重送请求,所述重送请求带有数据接收装置标识和目标消息序号;所述数据发布装置在接收到重送请求后,向数据接收装置标识对应的数据接收装置发送目标消息序号对应的数据包,所述数据包为TCP数据包,且所述TCP数据包中的内容与所述目标消息序号对应的UDP数据报的内容一致。
14.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求10或12所述方法。
15.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现权利要求10或12所述方法。
16.一种计算机程序产品,其特征在于,所述计算机程序产品包括计算机程序,所述计算机程序被处理器执行时实现权利要求10或12所述方法。
CN202210388604.2A 2022-04-14 2022-04-14 数据发布与订阅***、数据发布方法、数据订阅方法 Active CN115065733B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210388604.2A CN115065733B (zh) 2022-04-14 2022-04-14 数据发布与订阅***、数据发布方法、数据订阅方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210388604.2A CN115065733B (zh) 2022-04-14 2022-04-14 数据发布与订阅***、数据发布方法、数据订阅方法

Publications (2)

Publication Number Publication Date
CN115065733A true CN115065733A (zh) 2022-09-16
CN115065733B CN115065733B (zh) 2024-04-16

Family

ID=83196871

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210388604.2A Active CN115065733B (zh) 2022-04-14 2022-04-14 数据发布与订阅***、数据发布方法、数据订阅方法

Country Status (1)

Country Link
CN (1) CN115065733B (zh)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101980468A (zh) * 2010-12-06 2011-02-23 南京恩瑞特实业有限公司 网络热备数据传输方法
CN103166974A (zh) * 2013-03-28 2013-06-19 浙江理工大学 一种基于tcp/udp混合协议的流媒体无线传输方法
US20200053004A1 (en) * 2018-08-09 2020-02-13 Tata Consultancy Services Limited Method and system for message based communication and failure recovery for fpga middleware framework
CN111314217A (zh) * 2019-12-09 2020-06-19 上海金融期货信息技术有限公司 一种多链路传输***

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101980468A (zh) * 2010-12-06 2011-02-23 南京恩瑞特实业有限公司 网络热备数据传输方法
CN103166974A (zh) * 2013-03-28 2013-06-19 浙江理工大学 一种基于tcp/udp混合协议的流媒体无线传输方法
US20200053004A1 (en) * 2018-08-09 2020-02-13 Tata Consultancy Services Limited Method and system for message based communication and failure recovery for fpga middleware framework
CN111314217A (zh) * 2019-12-09 2020-06-19 上海金融期货信息技术有限公司 一种多链路传输***

Also Published As

Publication number Publication date
CN115065733B (zh) 2024-04-16

Similar Documents

Publication Publication Date Title
JP5249763B2 (ja) 要求に応じたマルチメディアコンテンツのマルチキャスト配信
CN108270732B (zh) 一种流媒体处理方法及***
CN108377671B (zh) 处理报文的方法和计算机设备
CN110418376A (zh) 数据传输方法及装置
CN107135216B (zh) 一种加强弱网环境流媒体传输方法
WO1999055041A1 (en) Method and apparatus for using ranking to select repair nodes
CN111294664A (zh) 音视频传输数据方法、电子设备及存储介质
CN109391551B (zh) 一种多端口组播方法、设备及计算机可读存储介质
CN108282277A (zh) 一种丢包重传方法、装置及***
CN114553799B (zh) 基于可编程数据平面的组播转发方法、装置、设备及介质
De Araujo et al. A publish/subscribe system using causal broadcast over dynamically built spanning trees
CN113347578B (zh) 音频数据传输方法、装置、***、存储介质及耳机
US9948473B2 (en) Seamless connection handshake for a reliable multicast session
CN105656994B (zh) 一种业务加速方法和装置
CN115065733B (zh) 数据发布与订阅***、数据发布方法、数据订阅方法
CN102025730B (zh) 基于http协议的数据传输装置及其实现方法
CN117082054A (zh) 一种数据传输方法、装置、***和介质
CN107820218A (zh) 报文传输方式的设定方法及设备
CN116261065A (zh) 基于消息队列遥测传输协议的通信方法、设备及存储介质
CN110719228A (zh) 基于实时数据分发服务的大数据包传输方法及装置
WO2022111693A1 (zh) 数据传输方法和相关设备
CN116032998A (zh) 数据传输方法、装置、计算机可读存储介质及电子设备
JP3647776B2 (ja) ネットワーク上で高信頼性マルチキャストを行うシステム及び方法
CN110611663B (zh) 一种检测方法、装置及***
CN111212253B (zh) 视频会议中的监控处理方法、装置、电子设备及存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant