CN108306852B - 一种基于简单二进制编码的消息中间件系统和方法 - Google Patents
一种基于简单二进制编码的消息中间件系统和方法 Download PDFInfo
- Publication number
- CN108306852B CN108306852B CN201711268860.3A CN201711268860A CN108306852B CN 108306852 B CN108306852 B CN 108306852B CN 201711268860 A CN201711268860 A CN 201711268860A CN 108306852 B CN108306852 B CN 108306852B
- Authority
- CN
- China
- Prior art keywords
- subscription
- data
- data packet
- subscriber
- service
- 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.)
- Active
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/04—Protocols for data compression, e.g. ROHC
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/542—Event management; Broadcasting; Multicasting; Notifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/547—Messaging middleware
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q40/00—Finance; Insurance; Tax strategies; Processing of corporate or income taxes
- G06Q40/04—Trading; Exchange, e.g. stocks, commodities, derivatives or currency exchange
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Multimedia (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明公开了一种基于简单二进制编码的消息中间件系统和方法,克服了在金融衍生品业务的处理过程中由于数据传输带来的可靠性和系统延迟问题,可以在带宽有限的系统环境中可靠的进行数据传输,同时降低系统延迟。其技术方案为:本发明的全部协议都使用简单二进制编码方式实现,符合FIX国际规范。实现了通讯协议层内存零申请零拷贝,支持编码数据的随机访问,可以大幅提升数据处理能力。同时支持连接心跳检测、支持点播、消息重传,支持基于UDP协议的可靠多播、广播,支持协议的向后兼容以及动态升级,同时支持流速控制。
Description
技术领域
本发明涉及金融期货工具,尤其涉及基于简单二进制编码的低延迟可靠消息中间件的系统和方法。
背景技术
2005年金融信息交换协议组织(FIX Protocol Limited简称FPL)提出了基于减少带宽使用率的FAST编码方法。该编码方法是一种面向消息数据流的、具有高压缩率和高处理效率的编解码方法,满足了绝大多数交易系统的信息处理需求。然而,随着近年来教育程度的普及和金融知识的传播,越来越多的投资者加入到了金融衍生品交易的队伍中来,从而对交易系统的核心业务处理能力提出了更高的需求与挑战。
面对这一需求,如何解决在保证公开公平公正的原则下实现更低的延迟和更高的吞吐量这一问题迫在眉睫。为了解决这一问题,2013年FPL组织提出了符合FIX规范的简单二进制编码方法(简称SBE),其主要目标是通过对金融信息数据的简单压缩和编码,从而在数据处理方面实现更低的延迟。然而,简单二进制编码方法仅仅只是提出了对金融信息数据的一种编码方法,并没有考虑到数据如何可靠传输,以及在整个交易系统内部或者多个网络节点之间数据的快速交互等问题,这一层面的延迟将会从整体上导致SBE编码带来的性能提升微乎其微。
发明内容
以下给出一个或多个方面的简要概述以提供对这些方面的基本理解。此概述不是所有构想到的方面的详尽综览,并且既非旨在指认出所有方面的关键性或决定性要素亦非试图界定任何或所有方面的范围。其唯一的目的是要以简化形式给出一个或多个方面的一些概念以为稍后给出的更加详细的描述之序。
本发明的目的在于解决上述问题,提供了一种基于简单二进制编码的消息中间件系统和方法,克服了在金融衍生品业务的处理过程中由于数据传输带来的可靠性和系统延迟问题,可以在带宽有限的系统环境中可靠的进行数据传输,同时降低系统延迟。
本发明的技术方案为:本发明揭示了一种基于简单二进制编码的消息中间件系统,包括发布端系统和订阅端系统,其中:
发布端系统包括:
应用层数据编码单元,对业务数据进行简单二进制编码处理,转换成对应的应用层数据域;
发布端业务处理单元,将一个或多个相同类型的应用层数据域进行统一打包封装,根据业务类型在数据包前通过简单二进制编码添加业务层协议头以生成数据包;
发布端主题分发单元,根据从上层接收到的数据包中的主题字段,将该数据包追加到一个或多个主题流中;
发布端发布订阅控制协议单元,管理主题消息的发布,通过发布订阅管理协议处理订阅申请信息和取消申请信息,通过和订阅端发布订阅控制协议单元的交互来检测各个订阅者的生命周期以完成对订阅者列表的动态维护;
发布端网络层协议单元;
订阅端系统包括:
订阅端网络层协议单元;
订阅端发布订阅控制协议单元,和发布端发布订阅控制协议单元进行交互以检测各个订阅者的生命周期;
订阅端主题分发单元,根据下层传递来的数据包中的主题字段,将数据包路由到不同的订阅端业务处理单元;
订阅端业务处理单元,接收数据包并完成对其中各应用层数据域的解析。
根据本发明的基于简单二进制编码的消息中间件系统的一实施例,发布端业务处理单元生成的数据包的结构由业务层协议头和各个应用层数据域组成,其中业务层协议头包括数据包类型字段、业务类型字段、数据包长度字段、主题字段。
根据本发明的基于简单二进制编码的消息中间件系统的一实施例,发布端发布订阅控制协议单元和订阅端发布订阅控制协议单元通过心跳控制协议维护发布者与订阅者之间的链接信息,通过订阅者周期性的向发布端发送心跳信息,实现发布端对各订阅者的生命周期的动态监测。
根据本发明的基于简单二进制编码的消息中间件系统的一实施例,发布端发布订阅控制协议单元和订阅端发布订阅控制协议单元具备重传机制。
根据本发明的基于简单二进制编码的消息中间件系统的一实施例,发布端发布订阅控制协议单元和订阅端发布订阅控制协议单元具备流速控制机制。
本发明还揭示了一种基于简单二进制编码的消息中间件方法,包括发布端的发布流程和订阅端的订阅流程;
发布端的发布流程包括:
发布端的应用层对业务数据进行简单二进制编码处理,其中每个不同类型的业务数据转换成对应的应用层数据域;
发布端的业务处理单元在接收到应用层的数据后,将一个或多个相同类型的应用层数据域进行统一打包封装,根据业务类型在数据包前通过简单二进制编码添加业务层协议头以生成数据包;
发布端的主题分发单元根据从业务处理单元接收到的数据包中的主题字段,将该数据包追加到内存中维护着的对应的一个或多个主题流中;以及
发布端的数据发布线程在本地维护一个订阅列表,当订阅列表为空时数据发布线程处于休眠状态,当接收到某个订阅者的订阅请求时数据发布线程被激活并进行数据发布;
订阅端的订阅流程包括:
订阅端的订阅线程维护一个或多个订阅流,不同的订阅流对应不同的订阅主题,订阅线程从网络上接收指定主题的数据包,然后存入相对应的订阅流中;
订阅端检测自己所感兴趣的订阅流中是否有数据更新,当发现有数据更新时从订阅流中读取数据包并将其交给订阅端的主题分发单元;
订阅端的主题分发单元在收到数据包后根据业务类型将数据包传递给对应的业务处理单元;以及
订阅端的业务处理单元完成对不同业务数据类型的解析与响应。
根据本发明的基于简单二进制编码的消息中间件方法的一实施例,发布端的业务处理单元生成的数据包的结构由业务层协议头和各个应用层数据域组成,其中业务层协议头包括数据包类型字段、业务类型字段、数据包长度字段、主题字段。
根据本发明的基于简单二进制编码的消息中间件方法的一实施例,发布端的数据发布线程首先将订阅者身份识别号和其订阅的主题存入订阅列表中,然后根据订阅者请求的流起始编号,从相对应的主题流中不断按顺序取出大于指定流起始编号的数据包并发送出去,其中包括TCP、UDP广播、UDP单播、UDP组播在内的发送方式按照业务需求进行动态配置。
根据本发明的基于简单二进制编码的消息中间件方法的一实施例,在订阅端的订阅流程中,当订阅线程从网络上接收指定主题的数据包后,首先对其进行包括完整性校验、主题校验和序号校验在内的校验操作,其中完整性校验用于校验数据包的完整性以防止数据包在网络传输过程中造成的部分数据块的丢失,主题校验用于检测数据包是否是接收者感兴趣的主题,序号校验用于在UDP模式下通过判断接收到的数据包是否有顺序并进一步通过重传机制实现可靠的数据传输。
根据本发明的基于简单二进制编码的消息中间件方法的一实施例,在发布端与订阅端均设置发布订阅控制协议,发布订阅控制协议进一步包括心跳控制协议和发布订阅管理协议,其中心跳控制协议用于对订阅列表中的订阅者进行心跳检测,发布订阅管理协议用于维护订阅者列表。
本发明对比现有技术有如下的有益效果:本发明基于简单二进制编码(SBE),通过设计合理的系统模型和发布订阅控制策略,能够有效解决金融衍生品交易系统中数据的可靠传输问题,降低系统延迟。与现有的消息总线方法相比,本发明的全部协议都使用简单二进制编码方式实现,符合FIX国际规范。实现了通讯协议层内存零申请零拷贝,支持编码数据的随机访问,可以大幅提升数据处理能力。同时支持连接心跳检测、支持点播、消息重传,支持基于UDP协议的可靠多播、广播,支持协议的向后兼容以及动态升级,同时支持流速控制。可以在一个带宽有限的网络环境中,灵活可靠的进行消息收发,并降低系统延迟。
附图说明
在结合以下附图阅读本公开的实施例的详细描述之后,能够更好地理解本发明的上述特征和优点。在附图中,各组件不一定是按比例绘制,并且具有类似的相关特性或特征的组件可能具有相同或相近的附图标记。
图1示出了本发明的基于简单二进制编码的消息中间件系统的一实施例的原理图。
图2示出了单个发布、单个订阅者情况下的线程模型图。
图3示出了本发明的数据包的帧结构的示意图。
图4A和4B示出了本发明的基于简单二进制编码的消息中间件方法的一实施例的流程示意图。
具体实施方式
以下结合附图和具体实施例对本发明作详细描述。注意,以下结合附图和具体实施例描述的诸方面仅是示例性的,而不应被理解为对本发明的保护范围进行任何限制。
图1示出了本发明的基于简单二进制编码的消息中间件系统的一实施例的原理。请参见图1,本实施例的系统包括发布端系统和订阅端系统。发布端系统包括应用层数据编码单元11、发布端业务处理单元12、发布端主题分发单元13、发布端发布订阅控制协议单元14以及发布端网络层协议单元15。订阅端系统包括订阅端网络层协议单元21、订阅端发布订阅控制协议单元22、订阅端主题分发单元23、订阅端业务处理单元24。
应用层数据编码单元11对业务数据进行简单二进制编码处理,转换成对应的应用层数据域。应用层数据域(Field)主要负责对不同业务类型的数据进行简单二进制编码处理。首先根据业务规则按照简单二进制编码规范生成XML文件,然后通过解析工具将XML文件转换成相对应的Field编码。
发布端业务处理单元12将一个或多个相同类型的应用层数据域进行统一打包封装,根据业务类型在数据包前通过简单二进制编码添加业务层协议头以生成数据包。最终生成的数据包结构如图3所示,是由业务层协议头和各个应用层数据域组成,其中业务层协议头包括数据包类型字段、业务类型字段、数据包长度字段、主题字段。
发布端主题分发单元13根据从上层接收到的数据包中的主题字段,将该数据包追加到一个或多个主题流中。
发布端发布订阅控制协议单元14管理主题消息的发布,通过发布订阅管理协议处理订阅申请信息和取消申请信息,通过和订阅端发布订阅控制协议单元的交互来检测各个订阅者的生命周期以完成对订阅者列表的动态维护。
订阅端发布订阅控制协议单元22和发布端发布订阅控制协议单元14进行交互以检测各个订阅者的生命周期。
发布端发布订阅控制协议单元14和订阅端发布订阅控制协议单元22通过心跳控制协议维护发布者与订阅者之间的链接信息,通过订阅者周期性的向发布端发送心跳信息,实现发布端对各订阅者的生命周期的动态监测,从而实现管理功能。在发布端,发布端发布订阅控制协议单元14通过发布订阅管理协议处理订阅申请信息和取消订阅申请信息,通过定时器定时检测各个订阅者的生命周期,从而完成对订阅者列表的动态维护。
发布端发布订阅控制协议单元14和订阅端发布订阅控制协议单元22具备重传机制和流速控制机制。具体方案如下:
假设在某一个主题号上,当前只有一个发布端P1。有N个订阅者S1,…SN。令Pt,i,j表示在t时刻第i个发布端Pi成功发送的数据包的序号为j。St,i,j表示在t时刻第i个订阅者Si成功接收到的数据包的序号为j,这里i,j均为自然数,且i=1,2,…N。那么在某一时刻,假设发布端当前发送的数据包序号为Pt,1,N,订阅者Sk当前实际接收到的数据包序号为St,k,j,那么当订阅者接收到第St,k,j+1个数据包时,有以下三种情况:
第一种,Pt,1,N<St,k,j+1即N<j+1。则说明在某个较早以前的时候,该订阅者已经收到过序列号为St,k,N的包,那么为了避免重复处理,订阅者线程直接将该数据包丢弃。第二种,Pt,1,N=St,k,j+1,即N=j+1,则说明该数据包就是当前订阅者所期待接收的数据包。直接将其存入内存订阅流。第三种,Pt,1,N>St,k,j+1,即N>j+1。则说明序列号位于[J+1,N)区间之间的数据包已经丢失,需要向发布端发送重传请求,启动重传机制。
当发布端P1接收到订阅者Sk发送的重传请求时(这里k∈[1,N]),分为以下几种处理策略:
策略1:当Pt,1,N-St,k,j<threshod时,发布端直接访问该主题的内存流,从第j+1个数据包开始重新发送数据,并降低发送速率,这里threshod表示一个提前设定的整数阈值。
策略2:当Pt,1,N-St,k,j≥threshod时,为了不影响当前主题上的其它订阅者Sj,这里j∈[1,N]且j≠k,发布端P1会重新开启一个新的发送缓冲区α2,然后将订阅者Sk移动到该缓冲区的订阅者列表中。此后,在发送缓冲区α2上,发布端P1会向订阅者Sk从第j+1个数据包开始重新发送数据,并提高发送速率。与此同时,发布端P1仍然在原来的发送缓冲区α1上向其它订阅者发送数据。某一时刻,假设在新的发送缓冲区α2上发送数据的序号已经追赶上在α1上的发送序号。那么发布端P1会将发送缓冲区α1与α2合并。具体方法为将属于发送缓冲区α2的订阅者队列中所有的订阅者都移动到发送缓冲区α1的订阅者队列中。然后选择发送序号最小的数值作为起始序号,重新开始数据发送。
订阅端主题分发单元23根据下层传递来的数据包中的主题字段,将数据包路由到不同的订阅端业务处理单元。
订阅端业务处理单元24接收数据包并完成对其中各应用层数据域的解析。
图2表示单个发布者单个订阅者时的线程模式。其中,在发布端,应用线程主要负责将应用层业务数据编码后,按主题分类拷贝到对应的内存二进制流中。然后通知发布线程从内存二进制流中读取数据并从网络上发送出去。这里的内存二进制流的主要作用是为了维护流发送信息,方便重传机制的触发等突发情况。在订阅端,订阅线程负责检查数据包完整,将数据包按照主题过滤,然后将当前订阅者所关心的数据按照主题划分,分别追加到对应的内存二进制流中。与前叙相同,这里的内存二进制流也主要是为了维护发送信息并应对突发情况。
图4A和4B示出了本发明的基于简单二进制编码的消息中间件方法的一实施例的流程。请参见图4A和4B,本实施例的方法包括发布端的发布流程和订阅端的订阅流程。
图4A所示的发布端的发布流程包括:
步骤S11:发布端的应用层对业务数据进行简单二进制编码处理,其中每个不同类型的业务数据转换成对应的应用层数据域。
每个不同的业务数据类型都含有自己专有的简单二进制编码方式,称之为Field。例如,订单Field包括交易日、会员代码、客户代码、合约代码、买卖方向、价格、数量、止损价等。不同的业务数据类型的Field编码格式不同。
步骤S12:发布端的业务处理单元在接收到应用层的数据后,将一个或多个相同(Field)类型的应用层数据域进行统一打包封装,根据业务类型在数据包前通过简单二进制编码添加业务层协议头以生成数据包。
发布端的业务处理单元生成的数据包的结构由业务层协议头和各个应用层数据域组成,其中业务层协议头包括数据包类型字段、业务类型字段、数据包长度字段、主题字段。其中,数据包类型分为发布、请求、应答。业务类型表示数据包的业务分类,例如报单信息、订单信息、登录请求信息、登录返回信息、报单查询信息等。数据包长度表示增加了业务层报头后的总的数据长度。主题字段表示数据包隶属于哪一个发布主题。
步骤S13:在完成业务层数据包编码后,发布端的业务处理单元会将编码后的数据包传给发布端的主题分发单元。在发布端的主题分发单元的内存中维护着多个要发布的主题流,主题分发单元根据从业务处理单元接收到的数据包中的主题字段,将该数据包添加到对应的一个或多个主题流中。
步骤S14:发布端的数据发布线程在本地维护一个订阅列表,当订阅列表为空时数据发布线程不做任何操作即处于休眠状态,当接收到某个订阅者的订阅请求时数据发布线程被激活并进行数据发布。
在进行数据发布时,发布端的数据发布线程首先将订阅者身份识别号和其订阅的主题存入订阅列表中,然后根据订阅者请求的流起始编号,从相对应的主题流中不断按顺序取出大于指定流起始编号的数据包并发送出去,其中包括TCP、UDP广播、UDP单播、UDP组播在内的发送方式按照业务需求进行动态配置。
图4B所示的订阅端的订阅流程包括:
步骤S21:订阅端的订阅线程维护一个或多个订阅流,不同的订阅流对应不同的订阅主题,订阅线程从网络上接收指定主题的数据包,然后存入相对应的订阅流中。
当订阅线程从网络上接收指定主题的数据包后,首先对其进行包括完整性校验、主题校验和序号校验在内的校验操作。完整性校验用于校验数据包的完整性以防止数据包在网络传输过程中造成的部分数据块的丢失。主题校验用于检测数据包是否是接收者感兴趣的主题,如果不是则直接丢弃。序号校验用于在UDP模式下通过判断接收到的数据包是否有顺序并进一步通过重传机制实现可靠的数据传输。举例而言,这里包括以下三种情况。假设订阅者最近一次接收到的某个主题的包的序列号为N,当前接收到的该主题的包的序列号为K。那么,第一种情况下,当K=N+1时,说明没有发生数据包丢失现象。则将该数据包存入相应的订阅流,然后通知应用线程有新的数据包到来。当K<N+1时,说明这个数据包在以前的某个时间已经接收过,为一个重复包,则直接将之舍弃。当K>N+1时,说明该主题下序列号位于[N+1,K)之间的数据包由于某种原因已经丢失,需要发布端重新发送。这个时候,订阅者会立即启动重传机制,即通过向发布端发送一个丢包通知信号,告知发布端自己当前订阅的主题和已经接收到的数据包序列号N,然后继续侦听发布端发送的数据包。发布端在接收到订阅端传来的丢包通知信号后,会立即在内存流中重新定位到该主题下的第N个数据包,然后开始按序重新发送数据,并降低数据发送速率。
步骤S22:订阅端检测自己所感兴趣的订阅流中是否有数据更新,当检测超时仍没有发现有数据更新时则继续处理其他事务,当发现有数据更新时从订阅流中读取数据包并将其交给订阅端的主题分发单元。
步骤S23:订阅端的主题分发单元在收到数据包后根据业务类型将数据包传递给对应的业务处理单元。
步骤S24:订阅端的业务处理单元完成对不同业务数据类型的解析与响应。
此外,在发布端与订阅端均设置发布订阅控制协议,发布订阅控制协议进一步包括心跳控制协议和发布订阅管理协议。
心跳控制协议用于对订阅列表中的订阅者进行心跳检测。实现方法为,发布端在本地维护一个生存状态列表,记录订阅者列表中每个订阅者的生命周期。订阅者通过定时器定时的向发布端发送心跳信号。当发布端接收到某个订阅者的心跳信号时,立即更新列表中该订阅者的生存状态。
发布订阅管理协议用于维护订阅者列表。当有新的订阅请求到来时,发布端会将该订阅者依据主题加入到相应的订阅队列中,并初始化其生命周期。当接收到取消订阅请求时,发布端从订阅队列中找到该订阅者,并将之移除。另一方面,发布端也会通过定时器定时检测订阅列表中每个订阅者的生存状态。当发现某个订阅者心跳超时时,也就是说在该订阅者的生命周期结束时,仍未收到其所发来的心跳信息,意味着该订阅者由于某种原因已经退出订阅状态。因此发布端就会把该订阅者从本地订阅者列表中移除,此时如果在订阅者列表中没有其它与其具有相同主题的订阅者,发布端就会立即停止在相关的网络端口上发布该主题数据。
使用以下配置的硬件机器资源进行性能指标测试:
以下是在上述配置的机器上的吞吐量性能指标测试结果:
其中大端序即表示网络字节序,而小端序则与之相反。这里发布订阅模型仍然使用图2中所示的线程模型。为了排除网络抖动,交换机性能等因素的影响。这里发布端进程、订阅端进程都部署在同一台机器上。发布的数据包为订单信息报文,即OrderField,其编码后的大小为340字节。性能测试结果显示,从发布端的应用线程完成业务数据的简单二进制编码,到订阅端的应用线程接收到该条数据,然后解析,总共耗时为18us。在按照网络序组织字节序的情况下,应用层线程不解包时,订阅端平均每秒钟可以接收到118.5万个数据包。而在小端序不解包的情况下,订阅端平均每秒钟可以接收到124万个应用层数据包。这里不解包是指订阅单应用线程在接收到OrderField数据包后,只统计其个数,而不解析OrderField中的内容。与之相对,解包则表示不仅要统计数据包个数,还需要提取出数据包中的所有OrderField信息,并加以解析。
尽管为使解释简单化将上述方法图示并描述为一系列动作,但是应理解并领会,这些方法不受动作的次序所限,因为根据一个或多个实施例,一些动作可按不同次序发生和/或与来自本文中图示和描述或本文中未图示和描述但本领域技术人员可以理解的其他动作并发地发生。
本领域技术人员将进一步领会,结合本文中所公开的实施例来描述的各种解说性逻辑板块、模块、电路、和算法步骤可实现为电子硬件、计算机软件、或这两者的组合。为清楚地解说硬件与软件的这一可互换性,各种解说性组件、框、模块、电路、和步骤在上面是以其功能性的形式作一般化描述的。此类功能性是被实现为硬件还是软件取决于具体应用和施加于整体系统的设计约束。技术人员对于每种特定应用可用不同的方式来实现所描述的功能性,但这样的实现决策不应被解读成导致脱离了本发明的范围。
结合本文所公开的实施例描述的各种解说性逻辑板块、模块、和电路可用通用处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或其它可编程逻辑器件、分立的门或晶体管逻辑、分立的硬件组件、或其设计成执行本文所描述功能的任何组合来实现或执行。通用处理器可以是微处理器,但在替换方案中,该处理器可以是任何常规的处理器、控制器、微控制器、或状态机。处理器还可以被实现为计算设备的组合,例如DSP与微处理器的组合、多个微处理器、与DSP核心协作的一个或多个微处理器、或任何其他此类配置。
结合本文中公开的实施例描述的方法或算法的步骤可直接在硬件中、在由处理器执行的软件模块中、或在这两者的组合中体现。软件模块可驻留在RAM存储器、闪存、ROM存储器、EPROM存储器、EEPROM存储器、寄存器、硬盘、可移动盘、CD-ROM、或本领域中所知的任何其他形式的存储介质中。示例性存储介质耦合到处理器以使得该处理器能从/向该存储介质读取和写入信息。在替换方案中,存储介质可以被整合到处理器。处理器和存储介质可驻留在ASIC中。ASIC可驻留在用户终端中。在替换方案中,处理器和存储介质可作为分立组件驻留在用户终端中。
在一个或多个示例性实施例中,所描述的功能可在硬件、软件、固件或其任何组合中实现。如果在软件中实现为计算机程序产品,则各功能可以作为一条或更多条指令或代码存储在计算机可读介质上或藉其进行传送。计算机可读介质包括计算机存储介质和通信介质两者,其包括促成计算机程序从一地向另一地转移的任何介质。存储介质可以是能被计算机访问的任何可用介质。作为示例而非限定,这样的计算机可读介质可包括RAM、ROM、EEPROM、CD-ROM或其它光盘存储、磁盘存储或其它磁存储设备、或能被用来携带或存储指令或数据结构形式的合意程序代码且能被计算机访问的任何其它介质。任何连接也被正当地称为计算机可读介质。例如,如果软件是使用同轴电缆、光纤电缆、双绞线、数字订户线(DSL)、或诸如红外、无线电、以及微波之类的无线技术从web网站、服务器、或其它远程源传送而来,则该同轴电缆、光纤电缆、双绞线、DSL、或诸如红外、无线电、以及微波之类的无线技术就被包括在介质的定义之中。如本文中所使用的盘(disk)和碟(disc)包括压缩碟(CD)、激光碟、光碟、数字多用碟(DVD)、软盘和蓝光碟,其中盘(disk)往往以磁的方式再现数据,而碟(disc)用激光以光学方式再现数据。上述的组合也应被包括在计算机可读介质的范围内。
提供对本公开的先前描述是为使得本领域任何技术人员皆能够制作或使用本公开。对本公开的各种修改对本领域技术人员来说都将是显而易见的,且本文中所定义的普适原理可被应用到其他变体而不会脱离本公开的精神或范围。由此,本公开并非旨在被限定于本文中所描述的示例和设计,而是应被授予与本文中所公开的原理和新颖性特征相一致的最广范围。
Claims (8)
1.一种基于简单二进制编码的消息中间件系统,其特征在于,包括发布端系统和订阅端系统,其中:
发布端系统包括:
应用层数据编码单元,对业务数据进行简单二进制编码处理,转换成对应的应用层数据域;
发布端业务处理单元,将一个或多个相同类型的应用层数据域进行统一打包封装,根据业务类型在数据包前通过简单二进制编码添加业务层协议头以生成数据包;
发布端主题分发单元,根据从上层接收到的数据包中的主题字段,将该数据包追加到一个或多个主题流中;
发布端发布订阅控制协议单元,管理主题消息的发布,通过发布订阅管理协议处理订阅申请信息和取消申请信息,通过和订阅端发布订阅控制协议单元的交互来检测各个订阅者的生命周期以完成对订阅者列表的动态维护;
发布端网络层协议单元;
订阅端系统包括:
订阅端网络层协议单元;
订阅端发布订阅控制协议单元,和发布端发布订阅控制协议单元进行交互以检测各个订阅者的生命周期,其中发布端发布订阅控制协议单元和订阅端发布订阅控制协议单元通过心跳控制协议维护发布者与订阅者之间的链接信息,通过订阅者周期性的向发布端发送心跳信息,实现发布端对各订阅者的生命周期的动态监测;
订阅端主题分发单元,根据下层传递来的数据包中的主题字段,将数据包路由到不同的订阅端业务处理单元;
订阅端业务处理单元,接收数据包并完成对其中各应用层数据域的解析。
2.根据权利要求1所述的基于简单二进制编码的消息中间件系统,其特征在于,发布端业务处理单元生成的数据包的结构由业务层协议头和各个应用层数据域组成,其中业务层协议头包括数据包类型字段、业务类型字段、数据包长度字段、主题字段。
3.根据权利要求1所述的基于简单二进制编码的消息中间件系统,其特征在于,发布端发布订阅控制协议单元和订阅端发布订阅控制协议单元具备重传机制。
4.根据权利要求1所述的基于简单二进制编码的消息中间件系统,其特征在于,发布端发布订阅控制协议单元和订阅端发布订阅控制协议单元具备流速控制机制。
5.一种基于简单二进制编码的消息中间件方法,其特征在于,包括发布端的发布流程和订阅端的订阅流程;
发布端的发布流程包括:
发布端的应用层对业务数据进行简单二进制编码处理,其中每个不同类型的业务数据转换成对应的应用层数据域;
发布端的业务处理单元在接收到应用层的数据后,将一个或多个相同类型的应用层数据域进行统一打包封装,根据业务类型在数据包前通过简单二进制编码添加业务层协议头以生成数据包;
发布端的主题分发单元根据从业务处理单元接收到的数据包中的主题字段,将该数据包追加到内存中维护着的对应的一个或多个主题流中;以及
发布端的数据发布线程在本地维护一个订阅列表,当订阅列表为空时数据发布线程处于休眠状态,当接收到某个订阅者的订阅请求时数据发布线程被激活并进行数据发布;
订阅端的订阅流程包括:
订阅端的订阅线程维护一个或多个订阅流,不同的订阅流对应不同的订阅主题,订阅线程从网络上接收指定主题的数据包,然后存入相对应的订阅流中;
订阅端检测自己所感兴趣的订阅流中是否有数据更新,当发现有数据更新时从订阅流中读取数据包并将其交给订阅端的主题分发单元,其中在发布端与订阅端均设置发布订阅控制协议,发布订阅控制协议进一步包括心跳控制协议和发布订阅管理协议,其中心跳控制协议用于对订阅列表中的订阅者进行心跳检测,发布订阅管理协议用于维护订阅者列表;
订阅端的主题分发单元在收到数据包后根据业务类型将数据包传递给对应的业务处理单元;以及
订阅端的业务处理单元完成对不同业务数据类型的解析与响应。
6.根据权利要求5所述的基于简单二进制编码的消息中间件方法,其特征在于,发布端的业务处理单元生成的数据包的结构由业务层协议头和各个应用层数据域组成,其中业务层协议头包括数据包类型字段、业务类型字段、数据包长度字段、主题字段。
7.根据权利要求5所述的基于简单二进制编码的消息中间件方法,其特征在于,发布端的数据发布线程首先将订阅者身份识别号和其订阅的主题存入订阅列表中,然后根据订阅者请求的流起始编号,从相对应的主题流中不断按顺序取出大于指定流起始编号的数据包并发送出去,其中包括TCP、UDP广播、UDP单播、UDP组播在内的发送方式按照业务需求进行动态配置。
8.根据权利要求5所述的基于简单二进制编码的消息中间件方法,其特征在于,在订阅端的订阅流程中,当订阅线程从网络上接收指定主题的数据包后,首先对其进行包括完整性校验、主题校验和序号校验在内的校验操作,其中完整性校验用于校验数据包的完整性以防止数据包在网络传输过程中造成的部分数据块的丢失,主题校验用于检测数据包是否是接收者感兴趣的主题,序号校验用于在UDP模式下通过判断接收到的数据包是否有顺序并进一步通过重传机制实现可靠的数据传输。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711268860.3A CN108306852B (zh) | 2017-12-05 | 2017-12-05 | 一种基于简单二进制编码的消息中间件系统和方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711268860.3A CN108306852B (zh) | 2017-12-05 | 2017-12-05 | 一种基于简单二进制编码的消息中间件系统和方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108306852A CN108306852A (zh) | 2018-07-20 |
CN108306852B true CN108306852B (zh) | 2020-12-04 |
Family
ID=62870275
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711268860.3A Active CN108306852B (zh) | 2017-12-05 | 2017-12-05 | 一种基于简单二进制编码的消息中间件系统和方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108306852B (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109656726B (zh) * | 2018-11-28 | 2020-10-23 | 中国船舶重工集团公司第七一九研究所 | 一种适用于数据中心的工业信息交互系统及方法 |
CN110336702B (zh) * | 2019-07-11 | 2022-08-26 | 上海金融期货信息技术有限公司 | 一种消息中间件的系统和实现方法 |
CN111314217B (zh) * | 2019-12-09 | 2021-12-17 | 上海金融期货信息技术有限公司 | 一种多链路传输系统 |
CN112134915B (zh) * | 2020-06-29 | 2022-10-14 | 上海金融期货信息技术有限公司 | 一种应用层协议解耦合的通用网络处理系统 |
CN112104660A (zh) * | 2020-09-18 | 2020-12-18 | 国网浙江省电力有限公司 | 数据传输方法、相关设备及可读存储介质 |
CN114640705B (zh) * | 2022-04-22 | 2022-08-09 | 山东恒远智能科技有限公司 | 一种大规模物联终端心跳监控方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101656749A (zh) * | 2009-09-17 | 2010-02-24 | 中国船舶重工集团公司第七○九研究所 | 一种实时系统下无中心节点的发布者/订阅者实时互发现方法 |
CN104092767A (zh) * | 2014-07-21 | 2014-10-08 | 北京邮电大学 | 一种增加消息队列模型的发布/订阅系统及其工作方法 |
CN104660708A (zh) * | 2015-03-13 | 2015-05-27 | 黄庆宇 | 一种基于http的移动应用消息推送方法及系统 |
CN107317802A (zh) * | 2017-06-06 | 2017-11-03 | 中国电子信息产业集团有限公司第六研究所 | 一种基于soa与dds的数据实时处理分发系统 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20160286013A1 (en) * | 2015-03-24 | 2016-09-29 | General Electric Company | Management of stream metadata during high volume real-time data streams |
-
2017
- 2017-12-05 CN CN201711268860.3A patent/CN108306852B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101656749A (zh) * | 2009-09-17 | 2010-02-24 | 中国船舶重工集团公司第七○九研究所 | 一种实时系统下无中心节点的发布者/订阅者实时互发现方法 |
CN104092767A (zh) * | 2014-07-21 | 2014-10-08 | 北京邮电大学 | 一种增加消息队列模型的发布/订阅系统及其工作方法 |
CN104660708A (zh) * | 2015-03-13 | 2015-05-27 | 黄庆宇 | 一种基于http的移动应用消息推送方法及系统 |
CN107317802A (zh) * | 2017-06-06 | 2017-11-03 | 中国电子信息产业集团有限公司第六研究所 | 一种基于soa与dds的数据实时处理分发系统 |
Non-Patent Citations (1)
Title |
---|
发布/订阅模式测控消息中间件系统设计;王重楠等;《计算机应用》;20150310;第35卷(第3期);正文第2部分(系统设计) * |
Also Published As
Publication number | Publication date |
---|---|
CN108306852A (zh) | 2018-07-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108306852B (zh) | 一种基于简单二进制编码的消息中间件系统和方法 | |
US20210217088A1 (en) | Offload Processing of Data Packets Containing Financial Market Data | |
CN110336702B (zh) | 一种消息中间件的系统和实现方法 | |
JP6284549B2 (ja) | マルチパスストリーミングのためのfecベースの信頼性のある転送制御プロトコル | |
US7197571B2 (en) | System and method for improving backup performance of media and dynamic ready to transfer control mechanism | |
CN111371892A (zh) | 高并发分布式消息推送系统及方法 | |
CN113728596A (zh) | 在网络接口控制器(nic)中促进对幂等操作进行高效管理的系统和方法 | |
CA2674655C (en) | Improved data transfer method, system and protocol | |
KR101996598B1 (ko) | 차등적인 IoT 서비스를 제공하는 우선순위 기반의 MQTT 시스템 및 방법 | |
CN111314217B (zh) | 一种多链路传输系统 | |
US20020095511A1 (en) | Optimized performance for transaction-oriented communications using stream-based network protocols | |
CN102890631A (zh) | 基于持久化消息队列传输消息的方法及消息传输装置 | |
CN112583638A (zh) | 基于WebSocket的语音告警方法及系统 | |
WO2021036321A1 (zh) | 监管数据上报、电子装置、设备及计算机可读存储介质 | |
US8149830B2 (en) | Efficient light-weight multicasting communication protocol | |
CN111181698A (zh) | 数据处理方法、装置、设备及介质 | |
US20100303053A1 (en) | Aggregated session management method and system | |
WO2011137678A1 (zh) | 一种在客户端处理多用户并发信令跟踪的方法及系统 | |
CN116405546A (zh) | 一种数据推送的方法及终端 | |
CN113220730B (zh) | 业务数据的处理系统 | |
US20230026120A1 (en) | Memory Pooling in High-Performance Network Messaging Architecture | |
CN113612737A (zh) | 一种基于分组与重传机制的长报文可靠传输方法 | |
CN114489730A (zh) | 一种远程升级方法及其终端设备、计算机可读存储介质 | |
CN111447263A (zh) | 一种消息通信系统 | |
Pallickara et al. | An analysis of reliable delivery specifications for Web Services |
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 |