CN103907306B - 消息流完整性 - Google Patents
消息流完整性 Download PDFInfo
- Publication number
- CN103907306B CN103907306B CN201280053349.0A CN201280053349A CN103907306B CN 103907306 B CN103907306 B CN 103907306B CN 201280053349 A CN201280053349 A CN 201280053349A CN 103907306 B CN103907306 B CN 103907306B
- Authority
- CN
- China
- Prior art keywords
- message
- data
- stage
- heartbeat
- sent
- 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.)
- Expired - Fee Related
Links
Classifications
-
- 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L1/00—Arrangements for detecting or preventing errors in the information received
-
- 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/06—Asset management; Financial planning or analysis
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L1/00—Arrangements for detecting or preventing errors in the information received
- H04L1/12—Arrangements for detecting or preventing errors in the information received by using return channel
- H04L1/16—Arrangements for detecting or preventing errors in the information received by using return channel in which the return channel carries supervisory signals, e.g. repetition request signals
- H04L1/1607—Details of the supervisory signal
- H04L1/1642—Formats specially adapted for sequence numbers
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L43/00—Arrangements for monitoring or testing data switching networks
- H04L43/08—Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L43/00—Arrangements for monitoring or testing data switching networks
- H04L43/08—Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
- H04L43/0823—Errors, e.g. transmission errors
- H04L43/0847—Transmission error
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L43/00—Arrangements for monitoring or testing data switching networks
- H04L43/10—Active monitoring, e.g. heartbeat, ping or trace-route
Landscapes
- Engineering & Computer Science (AREA)
- Business, Economics & Management (AREA)
- Accounting & Taxation (AREA)
- Finance (AREA)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (AREA)
- Development Economics (AREA)
- Technology Law (AREA)
- Strategic Management (AREA)
- Physics & Mathematics (AREA)
- General Business, Economics & Management (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Marketing (AREA)
- Economics (AREA)
- Environmental & Geological Engineering (AREA)
- Entrepreneurship & Innovation (AREA)
- Human Resources & Organizations (AREA)
- Operations Research (AREA)
- Health & Medical Sciences (AREA)
- Cardiology (AREA)
- General Health & Medical Sciences (AREA)
- Game Theory and Decision Science (AREA)
- Computer And Data Communications (AREA)
- Information Transfer Between Computers (AREA)
- Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
- Debugging And Monitoring (AREA)
- Communication Control (AREA)
- Mobile Radio Communication Systems (AREA)
- Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
- Detection And Prevention Of Errors In Transmission (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
提供了一种用于改善命令反馈消息流的完整性的系统、方法和计算机可读存储介质。某些实施例提供了一种方法,包括通过计算设备发送第一数据消息;发送第一停止消息;清除消息流状态;以及发送第二数据消息。第一数据消息包括具有预定义的初始序列号的值的第一序列号和第一阶段号。第二数据消息包括具有预定义的初始序列号的值的第二序列号和第二阶段号,其中第二阶段号与第一阶段号不同。第一和第二数据消息可以包括与用于可交易对象的命令相关的数据,消息流状态可以与命令相关联。
Description
背景技术
通过网络从一个设备向另一个设备传送的消息通常包含当在目的地设备接收时被提取的内容。随后,基于所述内容执行各种处理动作。
由于事件依赖于消息的内容,因此希望维持消息流的完整性。具体地,检测丢失消息和实现消息流数据减少的能力是特别有利的。这种检测丢失消息和减少消息流数据特别相关的一个应用领域是电子交易领域。
附图说明
参考下面的附图公开某些实施例。
图1示出根据某些实施例的计算设备的框图。
图2A示出利用使用固定的间隔技术的心跳的示例性消息。
图2B示出利用使用增加的间隔技术的心跳的示例性消息。
图2C示出根据图2A-2B的用于发送消息的示例性方法的流程图。
图2D示出根据图2A-2B的用于接收消息的示例性方法的流程图。
图3A示出利用使用增加的间隔技术的心跳的示例性消息。
图3B示出利用停止消息技术的示例性消息。
图3C-3D示出使用停止消息的示例性消息。
图3E示出使用停止消息和消息流清除的示例性消息。
图3F-3H示出使用停止消息、消息流清除和阶段号的示例性消息。
图4示出用于根据某些实施例的使用阶段号发送消息的示例性方法的流程图。
图5示出用于根据某些实施例的使用阶段号接收消息的示例性方法的流程图。
图6示出根据某些实施例的示例性发送器设备的框图。
图7示出根据某些实施例的示例性接收器设备的框图。
图8示出可以采用某些实施例的电子交易系统的框图。
图9示出图8的示例性电子交易系统的框图。
当结合所提供的示出示例的附图阅读时,可以更好地理解某些实施例。然而,应该理解的是,实施例并不限于附图中示出的布置和手段。
具体实施例
消息流是相关消息的逻辑通信信道。检测丢失消息,特别是那些包含数据的消息,可以提高消息流的完整性。如果消息丢失,那么可以采取各种动作,如请求重传丢失消息、关闭或者重置消息流、在日志文件中创建条目、提供错误消息、生成中断、提醒处理接收到的数据的应用或者高层协议有关丢失消息、中止程序执行、通知一个或多个用户消息丢失、终止所述消息流并建立新的消息流、释放并重新获取许可、与服务器重新进行验证和/或重新下载完整的数据集。
此外,需要存储状态信息以维持消息流和消息流的完整性。状态信息可以存储在发送器和接收器以及中间设备中。这种状态信息可以消耗有限的资源,如存储器。因此,希望减少需要存储的消息流的状态信息。
为了检测丢失消息,当前的一些系统使用对每条消息递增预定量的序列号或者消息标识符,使得接收方可以确定消息被发送的顺序和是否丢失任何消息。然而,当不频繁发送消息时,可能在检测到丢失消息之前存在不可接受的延迟。
当前的一些系统利用心跳消息来增加检测到丢失消息的可能性。心跳消息可以以固定的间隔发送,以在合理的时间量内检测到丢失消息。然而,发送大量的心跳消息可能会低效使用有限的网络带宽和/或增加在网络上传递其他数据消息的等待时间。
本公开的实施例涉及一种通过检测丢失消息并减少存储的消息流的状态信息来提高消息流的完整性的技术。在某些实施例中,使用增加的间隔技术的心跳被用来增加检测到丢失消息的可能性,同时减少由于心跳消息而导致的网络流量。在某些实施例中,实现停止消息技术来增加检测到丢失消息的可能性,同时减少过量的非数据网络流量。在某些实施例中,实现消息流状态清除技术来减少存储的消息流的状态信息以及因此的存储器的使用。在某些实施例中,实现阶段号技术来提高检测到丢失消息的可能性。
虽然下面公开包括除其他组件以外的在硬件上执行的软件的实施例,但应该注意的是,所述实施例仅是说明性的,而不应该认为是限制性的。例如,可以设想,任何或者所有这些硬件和软件组件都可以完全只用硬件、完全只用软件、完全只用固件或者用硬件、软件和/或固件的任何组合来实施。因此,所公开的实施例可以以其他方式来实现。
I.简要描述
某些实施例提供一种方法,包括:通过计算设备发送第一数据消息;通过计算设备发送第一停止消息;以及通过计算设备发送第二数据消息。第一数据消息包括具有预定义的初始序列号的值的第一数据消息序列号。第一数据消息包括第一数据消息阶段号。第一停止消息包括停止消息阶段号。停止消息阶段号与第一数据消息阶段号相同。第二数据消息在第一停止消息后发送。第二数据消息包括具有预定义的初始序列号的值的第二数据消息序列号。第二数据消息包括第二数据消息阶段号。第二数据消息阶段号与第一数据消息阶段号不同。在某些实施例中,第一数据消息和第二数据消息可以包括与用于可交易对象的命令相关的数据。
某些实施例提供一种有形的计算机可读存储介质,包括在执行时使得计算设备至少执行下列操作的指令:发送第一数据消息;发送第一停止消息;以及发送第二数据消息。第一数据消息包括具有预定义的初始序列号的值的第一数据消息序列号。第一数据消息包括第一数据消息阶段号。第一停止消息包括停止消息阶段号。停止消息阶段号与第一数据消息阶段号相同。第二数据消息在第一停止消息后发送。第二数据消息包括具有预定义的初始序列号的值的第二数据消息序列号。第二数据消息包括第二数据消息阶段号。第二数据消息阶段号与第一数据消息阶段号不同。在某些实施例中,第一数据消息和第二数据消息可以包括与用于可交易对象的命令相关的数据。
某些实施例提供一种系统,包括第一数据消息发送器,其发送第一数据消息;第一停止消息发送器,其发送第一停止消息;以及第二数据消息发送器,其发送第二数据消息。第一数据消息包括具有预定义的初始序列号的值的第一数据消息序列号。第一数据消息包括第一数据消息阶段号。第一停止消息包括停止消息阶段号。停止消息阶段号与第一数据消息阶段号相同。第二数据消息在第一停止消息后发送。第二数据消息包括具有预定义的初始序列号的值的第二数据消息序列号。第二数据消息包括第二数据消息阶段号。第二数据消息阶段号与第一数据消息阶段号不同。在某些实施例中,第一数据消息和第二数据消息可以包括与用于可交易对象的命令相关的数据。
某些实施例提供一种系统,包括阶段号生成器,其提供消息的阶段号;序列号生成器,其提供消息的序列号;第一数据消息发送器,其发送第一数据消息;第一停止消息发送器,其发送第一停止消息;以及第二数据消息发送器,其发送第二数据消息。第一数据消息包括由序列号生成器提供的具有预定义的初始序列号的值的第一数据消息序列号。第一数据消息包括由阶段号生成器提供的第一数据消息阶段号。第一停止消息包括由阶段号生成器提供的停止消息阶段号。停止消息阶段号与第一数据消息阶段号相同。第二数据消息在第一停止消息后发送。第二数据消息包括由序列号生成器提供的具有预定义的初始序列号的值的第二数据消息序列号。第二数据消息包括由阶段号生成器提供的第二数据消息阶段号。第二数据消息阶段号与第一数据消息阶段号不同。在某些实施例中,第一数据消息和第二数据消息可以包括与用于可交易对象的命令相关的数据。
某些实施例提供一种方法,包括通过计算设备检测要发送新消息;通过计算设备确定新消息的阶段号;通过计算设备确定新消息的序列号;以及通过计算设备发送具有所述阶段号和所述序列号的新消息。
某些实施例提供一种有形的计算机可读存储介质,包括在执行时使得计算设备至少执行下列操作的指令:检测要发送新消息;确定新消息的阶段号;确定新消息的序列号;以及发送具有所述阶段号和所述序列号的新消息。
某些实施例提供一种系统,包括:新消息检测器,其检测要发送新消息;阶段号生成器,其确定新消息的阶段号;序列号生成器,其确定新消息的序列号;以及消息发送器,其发送具有所述阶段号和所述序列号的新消息。
某些实施例提供一种方法,包括:通过计算设备接收包括消息阶段号和消息序列号的新消息;通过计算设备确定新消息的预期阶段号;通过计算设备确定新消息的预期序列号;通过计算设备比较消息阶段号和预期阶段号;通过计算设备比较消息序列号和预期序列号;以及当(a)消息阶段号和预期阶段号以及(b)消息序列号和预期序列号中至少一个不匹配时,通过计算设备报告丢失消息。
某些实施例提供一种有形的计算机可读存储介质,包括在执行时使得计算设备至少执行下列操作的指令:接收包括消息阶段号和消息序列号的新消息;确定新消息的预期阶段号;确定新消息的预期序列号;比较消息阶段号和预期阶段号;比较消息序列号和预期序列号;以及当(a)消息阶段号和预期阶段号以及(b)消息序列号和预期序列号中至少一个不匹配时,报告丢失消息。
某些实施例提供一种系统,包括:消息接收器,其接收包括消息阶段号和消息序列号的新消息;预期阶段号生成器,其确定新消息的预期阶段号;预期序列号生成器,其确定新消息的预期序列号;阶段号比较器,其比较消息阶段号和预期阶段号;序列号比较器,其比较消息序列号和预期序列号;以及丢失消息报告器,当(a)消息阶段号和预期阶段号以及(b)消息序列号和预期序列号中至少一个不匹配时,报告丢失消息。
某些实施例提供一种方法,包括:通过计算设备发送第一数据消息;通过计算设备发送第一心跳消息;以及通过计算设备发送第二心跳消息。第一心跳消息在发送第一数据消息后以第一时间间隔发送。第一时间间隔具有预定义的长度。第二心跳消息在发送第一心跳消息后以第二时间间隔发送。第二时间间隔从第一时间间隔增加。
某些实施例提供一种有形的计算机可读存储介质,包括在执行时使得计算设备至少执行下列操作的指令:发送第一数据消息;发送第一心跳消息;以及发送第二心跳消息。第一心跳消息在发送第一数据消息后以第一时间间隔发送。第一时间间隔具有预定义的长度。第二心跳消息在发送第一心跳消息后以第二时间间隔发送。第二时间间隔从第一时间间隔增加。
某些实施例提供一种系统,包括:第一数据消息发送器,其发送第一数据消息;第一心跳消息发送器,其发送第一心跳消息;以及第二心跳消息发送器,其发送第二心跳消息。第一心跳消息在发送第一数据消息后以第一时间间隔发送。第一时间间隔具有预定义的长度。第二心跳消息在发送第一心跳消息后以第二时间间隔发送。第二时间间隔从第一时间间隔增加。
某些实施例提供一种方法,包括:通过计算设备发送第一数据消息,以及通过计算设备发送第一停止消息。
某些实施例提供一种有形的计算机可读存储介质,包括在执行时使得计算设备至少执行下列操作的指令:发送第一数据消息;以及发送第一停止消息。
某些实施例提供一种系统,包括:第一数据消息发送器,其发送第一数据消息;以及第一停止消息发送器,其发送第一停止消息。
某些实施例提供一种方法,包括通过计算设备发送包括序列号和阶段号的消息。
某些实施例提供一种有形的计算机可读存储介质,包括在执行时使得计算设备至少发送包括序列号和阶段号的消息。
某些实施例提供一种系统,包括发送包括序列号和阶段号的消息的消息发送器。
某些实施例提供一种方法,包括:通过计算设备接收包括序列号和阶段号的消息;以及基于序列号和阶段号通过计算设备报告丢失信息。
某些实施例提供一种有形的计算机可读存储介质,包括在执行时使得计算设备至少执行下列操作的指令:接收包括序列号和阶段号的消息;以及基于序列号和阶段号报告丢失消息。
某些实施例提供一种系统,包括:消息接收器,接收包括序列号和阶段号的消息;以及丢失信息报告器,基于序列号和阶段号报告丢失信息。
II.示例性计算设备
图1示出可以用于实现所公开的实施例的示例性计算设备100的框图。一个或多个计算设备100可以实现在例如被配置为处理从许多不同设备接收到的数据以及发送到许多不同设备的数据的终端计算机或者服务器系统中。
计算设备100包括处理器102、互连总线104、芯片集106、存储器控制器108、输入/输出(I/O)控制器110、系统存储器112、大容量存储存储器114、I/O总线116、网络接口118、显示器120、输入设备122以及输出设备124。计算设备100可以包括额外的、不同的或者更少的组件。例如,可以提供多条总线、多个处理器、多个存储器设备、多个网络接口、多个显示设备、多个输入设备、多个输出设备或者它们的任何组合。作为另一个示例,计算设备100可以不包括与显示设备120分开的输出设备124。作为另一个示例,计算设备100可以不包括显示设备120。作为另一个示例,计算设备100可以不包括输入设备122。作为替代,例如,计算设备100可以经由网络接口118通过外部或者远程输入设备来控制。
计算设备100包括耦接到互连总线104的处理器102。互连总线104可以包括通信总线、信道、网络、电路、开关、交换结构(fabric)或者在计算设备100的组件之间传送数据的其他机构。互连总线104可以与计算设备100的任何组件通信耦接,并可以在计算设备100的任何组件之间传输数据。例如,在应用的安装过程中,要由处理器102执行的一个或多个计算机可读指令可以从输入设备122和/或网络接口118传输到系统存储器112和/或大容量存储存储器114。当计算设备100正在运行或者准备运行存储在系统存储器112和/或大容量存储存储器114中的应用时,处理器102可以经由互连总线104从系统存储器112和/或大容量存储存储器114获取指令。
处理器102可以是例如处理器、处理单元或者微处理器。处理器102可以包括例如一个或多个通用处理器、数字信号处理器、专用集成电路、现场可编程门阵列、模拟电路、数字电路、编程处理器和/或它们的组合。处理器102可以是单个设备或者多个设备的组合,如与网络或者分布式处理相关联的一个或多个设备的组合。可以使用任何处理策略,如多处理、多任务、并行处理和/或远程处理。处理可以是本地的或者远程的,并且可以从一个处理器转移到另一个处理器。计算设备100可以是多处理器系统,并且因此可以包括与互连总线104通信耦接的一个或多个额外的处理器。
可以操作处理器102以执行编程在一个或多个有形介质(如,系统存储器112、大容量存储存储器114和/或经由网络接口118)中的逻辑。如这里使用的,编程在一个或多个有形介质中的逻辑包括可由处理器102或者不同的处理器执行的指令。所述逻辑可以被存储为例如软件、硬件、集成电路、固件和/或微代码的一部分。所述逻辑可以经由例如连接到因特网的通信网络从外部通信设备接收。处理器102可以执行所述逻辑来执行图中示出的或者在这里描述的功能、动作或者任务。
图1的处理器102耦接到芯片集106,其包括存储器控制器108和I/O控制器110。芯片集通常提供I/O和存储器管理功能以及可以由耦接到芯片集106的一个或多个处理器访问或者使用的多个通用和/或专用寄存器和定时器。存储器控制器108执行使得处理器102(或者如果有多个处理器,那么多个处理器)能够访问系统存储器112和大容量存储存储器114的功能。
系统存储器112和大容量存储存储器114可以是一个或多个有形的介质,例如计算机可读存储介质。系统存储器112可以包括各种类型的易失性和非易失性存储介质,包括例如随机存取存储器(RAM)、只读存储器(ROM)、可编程只读存储器(PROM)、电可编程只读存储器(EPROM)、电可擦除只读存储器(EEPROM)、闪速存储器、任何其他有形的数据存储设备或者它们的任何组合。大容量存储存储器114可以包括各种类型的大容量存储设备,包括例如硬盘驱动器、光学介质、磁带、任何其他有形的数据存储设备或者它们的任何组合。在某些实施例中,系统存储器112和大容量存储存储器114是非临时性的。
系统存储器112和大容量存储存储器114可以是例如单个存储器模块。系统存储器112和大容量存储存储器114可以与处理器102相邻、作为处理器102的一部分、使用处理器102编程、与处理器102网络连接和/或远离处理器102,使得例如可以由处理器102获取和处理存储在系统存储器112和大容量存储存储器114中的数据。系统存储器112和大容量存储存储器114可以存储可以由处理器102执行的指令。可以执行所述指令来执行这里描述的或者图中示出的一个或多个动作或者功能。
I/O控制器110执行使得处理器102能够通过I/O总线116与网络接口118、显示器120、输入设备122和输出设备124通信的功能。虽然存储器控制器108和I/O控制器110在图1中被描绘成芯片集106内单独的块,但这些块执行的功能可以集成在单个半导体电路内,或者可以使用两个或者更多单独的集成电路来实现。计算设备100的一个或多个组件可以实现为片上系统(例如,IPHONETM中的片上系统)。
网络接口118可以单向或者双向通信耦接。因此,网络接口118可以通信连接一个、两个或者更多个通信网络或者设备。例如,互连总线104可以经由网络接口118与服务器耦接,使得计算设备100的一个、一些或者所有组件都可以访问或者可以与服务器通信。作为另一个示例,网络接口118可以将互连总线104与其他的通信网络耦接。网络接口118可以是例如提供数据通信连接的综合业务数字网(ISDN)卡或者调制解调器。作为另一个示例,网络接口118可以是提供至例如连接到因特网的兼容LAN的数据通信连接的局域网(LAN)卡。也可以实现无线链路。网络接口118可以发送和接收例如携带表示各种类型的信息的模拟或者数字数据流的电、电磁或者光信号。
显示设备120可以包括例如可视输出设备、阴极射线管(CRT)显示器、电子显示器、电子纸、平板显示器、发光二极管(LED)显示器、电致发光显示器(ELD)、等离子显示面板(PDP)、液晶显示器(LCD)、薄膜晶体管显示器(TFT)、有机发光二极管显示器(OLED)、表面传导电子发射显示器(SED)、激光电视、碳纳米管、纳米晶体显示器、头戴式显示器、投影仪、三维显示器和/或透明显示设备。
显示设备120适用于显示屏幕,所述屏幕可以是交互式的,并使得用户能够输入数据。
输入设备122可以包括例如键盘、鼠标、麦克风、触摸屏、轨迹球、小键盘、操纵杆和/或用于提供输入的其他设备。输入设备122可以用于例如向处理器102提供指令选择。例如,输入设备122可以是用于控制显示在屏幕上的光标的鼠标。鼠标可以包括例如用于选择和控制的一个或多个按钮。
输出设备124可以包括例如键盘、鼠标、扬声器、触摸屏、轨迹球、小键盘、触觉设备或者系统、操纵杆和/或用于提供输出的其他设备。例如,输出设备124可以用于向用户输出一个或多个信号,如触觉信号或者音频信号。虽然输入设备122和输出设备124在图1中被描绘为单独的块,但由这些块执行的功能可以集成在单个I/O设备之中。
III.消息流完整性技术
用户依赖于正在发送和传递的消息以保持最新和准确到能够做出明智决定。当消息通过网络传送时,它们可能会由于例如中间设备丢弃消息、链路故障、资源(例如,存储器或者处理)不足或者中间设备崩溃或者重置而发生延迟和/或丢失。因此,希望能够检测到未能适当发送或者接收的丢失消息来维持消息流的完整性。
当确定消息丢失时,可以采取各种动作,如请求重传丢失消息、关闭或者重置消息流、在日志文件中创建条目、提供错误消息、生成中断、提醒处理接收到的数据的应用或者高层协议有关丢失消息、中止程序执行、通知一个或多个用户消息丢失、终止消息流并建立新的消息流、释放并重新获取许可、与服务器重新进行验证和/或重新下载完整的数据集。
当前的一些系统使用序列号或者消息标识符帮助检测丢失消息。序列号或者消息标识符对每条消息改变(通常,递增)预定量,以允许接收方确定消息被发送的顺序和是否丢失任何消息。接收方可以缓冲可能由于例如网络行为导致乱序接收的消息。当没有接收到某条消息时,它可以被视为是缺失的。缺失的消息可能会在例如稍后的时间接收到,因为它在中间设备或者由于重传而被重新排序。如果过了一段时间后,没有接收到序列中的缺失的消息,那么接收方可以确定所述消息丢失。在另一个示例中,一接收到稍后的、乱序的消息,就可以确定缺失的较早的消息丢失,而不是当乱序接收到稍后的消息时,等待一段时间以可能接收到较早的消息。
在一些系统中,可以不频繁地发送消息,如当远离数据源的设备处正在监视的对象的数据变化时。
例如,可以不频繁地发送有关服务器相关状态变化的信息,如服务器是否可以访问或者无法访问,以及至服务器的连接是否可以访问或者无法访问。作为另一个示例,可以不频繁地发送如新闻消息的消息。作为另一个示例,可以不频繁地发生数据下载,如在启动时,以及当随后检测到丢失消息时。
当消息流完整性依赖于基于稍后接收到的消息的序列号来检测丢失消息时,不频繁地发送消息可能会导致在检测到丢失消息之前不可接受的延迟。例如,如果有关数据状态的第一变化的消息被发送,但被丢失,那么接收方可能无法检测到丢失消息,直到接收到有关数据状态的第二变化的另一个消息。如果不频繁地发送消息,那么可能在第一消息丢失数小时后接收到第二消息。作为另一个示例,当状态不存在第二变化时,可能无法检测到第一消息丢失。因此,在第一消息丢失和检测到丢失消息之间的时间期间,接收方使用不正确的数据。
A.使用固定的间隔技术的心跳
用于增加检测到丢失消息的可能性的现有系统使用的一种技术是,无论是否存在要发送的新数据,都以某一定义的间隔发送消息。如果自从例如发送上一条消息已经过去某一时间段,那么使用这种技术的系统发送心跳消息。心跳消息也可以称为例如活动消息、保持活动消息、状态消息或者同步信息。使用固定的间隔技术的心跳在图2A的示例性消息中示出。
图2A示出利用使用固定的间隔技术的心跳的示例性消息,其中定义的时间间隔为“1”。在此示例中,数据消息表示为“M”,并且心跳消息表示为“HB”。这里,每条数据消息的序列号都加一。在此示例中,第一数据消息M1在时间t=0以序列号“0”发送。由于定义的时间间隔为“1”,并且在此时间间隔内没有新的数据将被发送,因此系统在时间t=1以序列号“0”发送第一心跳消息HB1。在此示例中,心跳消息重复发送的上一条数据消息的序列号。在某些实施例中,可以为心跳消息分配它们自己的序列号。
在时间t=2,此时没有要发送的新数据,系统以序列号“0”发送第二心跳消息HB2,与数据消息M1,发送的上一条数据消息,的序列号相同。在时间t=3,此时没有要发送的新数据,系统以序列号“0”发送第三心跳消息HB3。在时间t=4,此时没有要发送的新数据,系统以序列号“0”发送第四心跳消息HB4。在时间t=5,有要发送的新数据。因此,系统发送第二数据消息M2,并将序列号增大为“1”。在时间t=6,有要发送的新数据。因此,系统发送第三数据消息M3,并将序列号增大为“2”。在时间t=7,此时没有要发送的新数据,系统以序列号“2”发送第四心跳消息HB5,与数据消息M3,发送的上一条数据消息,的序列号相同。
通过以定义的间隔如“1”发送心跳消息,系统能够提供丢失消息和检测到丢失消息之间的时间量的界限。由于接收方知道定义的时间间隔,并可以检测是否未能在定义的间隔内接收到消息,因此系统能够提供检测到丢失消息的界限。在此示例中,如果数据消息M3丢失,那么系统下次接收到序列号为“2”的心跳消息HB5。系统会比较接收到的心跳消息的序列号“2”与上一次接收到的消息的序列号;这里是序列号为“1”的数据消息M2。由于在此示例中,心跳消息保留先前发送的数据消息的序列号,因此系统将在定义的时间间隔“1”内检测到丢失消息。在另一个示例中,接收方可以检测是否未能在大于定义的时间间隔的某一时间长度内(如,较小的恒定的时间量或者双倍定义的间隔)接收到消息,以允许网络延迟变化。
然而,在具有上述定义的时间间隔的心跳系统中,其中可能存在大量未频繁更新的状态信息,例如,将存在对应的大量心跳消息。大量心跳消息可能低效使用有限的网络带宽和/或增加在网络上传递其他数据消息的延迟。例如,如果特定的服务器正在运行应用并处理1500个用户,其中每个用户都有两个端点,那么服务器正在处理3000个端点。如果没有活动或者更新的状态信息,那么例如每秒可能需要3000条心跳消息,从而低效利用有限的网络带宽,并带走和/或延迟对从另一个服务器系统接收的信息的处理能力的访问。
B.使用增加的间隔技术的心跳
某些实施例通过提供心跳消息之间增加的间隔来解决该非数据网络流量过多的问题。例如,第一心跳可以在发送上一条数据消息的固定时间量后发送。随后的心跳消息可以随后在增加的间隔后发送。例如,间隔可以增加固定量、加倍、几何增加、指数增加或者增加预定义的量,如变化的固定间隔或者基于如斐波那契数或者素数的序列。为了提高对丢失消息的有效检测,可以对间隔设定上限或者限制到最大值。对间隔设定上限或者限制到最大值可以防止时间间隔变得有效地无界限(effectively unbounded),并维持丢失消息和检测到丢失消息之间的时间量的界限。
图2B示出利用使用增加的间隔技术的示例性心跳的示例性消息,其中时间间隔加倍。在此示例中,数据消息表示为“M”,心跳消息表示为“HB”。这里,每条数据消息的序列号都加一,并且心跳消息包括发送的上一条数据消息的序列号。在此示例中,第一数据消息M1在时间t=0以序列号“0”发送。第一时间间隔为“1”,并且在此时间间隔内没有新的数据将被发送。因此,系统在时间t=1以序列号“0”发送第一心跳消息HB1。
在此示例中,时间间隔加倍,并且因此下一条心跳消息将在时间t=3(t=1(发送上一条心跳消息的时间)+1(前一间隔)*2(加倍))发送,使得先前的时间间隔的量“1”加倍。在时间t=3,此时没有要发送的新数据,系统以序列号为“0”发送第二心跳消息HB2,序列号与数据消息M1,发送的上一条数据消息,相同。下一条心跳消息将在时间t=7发送(t=3(发送上一条心跳消息的时间)+2(前一间隔)*2(加倍)),使得先前的时间间隔的量“2”加倍。然而,在时间t=5,有要发送的新数据。因此,系统发送第二数据消息M2,并将序列号增大为“1”。在时间t=6,有要发送的新数据,并且因此系统发送第三数据消息M3,并将序列号增大为“2”。下一条心跳消息将在时间t=7发送,返回初始时间间隔“1”。在时间t=7,此时没有要发送的新数据,系统以序列号“2”发送第三心跳消息HB3,序列号与数据消息M3,发送的上一条数据消息,相同。
上面的图2B中描述的增加的间隔技术与固定的心跳间隔相比减少了由于心跳消息而导致的网络流量,其中上面的图2A中描述的固定的心跳间隔与增加的间隔技术的初始间隔相同。在图2A的示例中,四条心跳消息在两条数据消息(M1和M2)之间发送,而在此示例中,只有两条心跳消息发送。
此外,增加的间隔技术提供了对短暂链路故障一定的容忍度。例如,如果链路断开,而在增加的间隔期间恢复连接,并且没有新消息发送,那么将不会检测到短暂的链路故障。固定的间隔技术可能更容易检测到这种短暂的链路故障,尽管这种故障对数据流的完整性不会构成问题,因为没有数据丢失。
图2C示出用于根据上述使用增加的间隔技术的心跳发送消息的方法的示例性流程图200。在此示例中,每条数据消息都具有不同的序列号。例如,每条数据消息都可以具有比先前的数据消息的序列号大一的序列号。在此示例中,心跳消息使用与在心跳之前发送的上一条数据消息相同的序列号。
在块201,重置要发送的消息的序列号,并设定表示应该发送心跳消息的时间的下一次心跳时间。例如,序列号可以重置为“0”或者“-1”,并且下一次心跳时间可以设定为“无穷大”,因为还没有发送任何数据消息。
在块202,确定是否要发送新的数据消息,或者是否已经到达下一次心跳时间。例如,可以从应用接收要发送的新的数据消息。作为另一个示例,与下一次心跳时间相关联的定时器可能会到期。
在块203,如果要发送新的数据消息(如在块202确定的),那么递增要发送的消息的序列号。例如,序列号可以递增1,从“0”到“1”,或者从“-1”到“0”。
在块204,以递增的序列号发送新的数据消息,如图2B的数据消息M1。
在块205,下一次心跳时间被设定为发送新的数据消息的时间加上初始间隔(并且清除任何先前设定的下一次心跳时间)。例如,如果在t=0发送新的数据消息,并且初始心跳间隔为“1”,那么下一次心跳时间可以设定为t=1。然后,控制返回块202。
如果没有要发送的新的数据消息,并且已经到达下一次心跳时间(如在块202确定的),那么在块206以当前序列号发送心跳消息,当前序列号是已发送的上一条数据消息的序列号,如图2B的心跳消息HB2。
在块207,在此示例中,通过使发送的上一条心跳消息的间隔加倍,并将之与在块206中发送上一条心跳消息的时间相加来确定下一次心跳时间。例如,如果最近发送的心跳消息在心跳间隔“2”后的t=3发送,那么下一次心跳时间将被设定为t=7(t=3(发送上一条心跳消息的时间)+2(前一心跳间隔)*2(加倍)。然后,控制返回块202。
用于根据上述使用增加的间隔技术的心跳发送消息的方法为数据消息分配序列号,并且为在所述数据消息后续发送的心跳消息分配对应的序列号。为数据和心跳消息分配序列号允许在数据消息丢失和接收到后续消息的时间内检测到丢失消息。
图2D示出用于根据上述使用增加的间隔技术的心跳接收消息的方法的示例性流程图210。在此示例中,每条数据消息具有不同的序列号。例如,每条数据消息可以具有比先前的数据消息的序列号大一的序列号。在此示例中,心跳消息使用与在所述心跳之前发送的上一条数据消息相同的序列号。
在块211,重置要接收的消息的预期序列号。例如,预期序列号可以重置为“0”或者“-1”。
在块212,接收到消息。所述消息可以是例如数据消息或者心跳消息。如果在预期时间间隔内未接收到消息,那么可以报告丢失消息。例如,预期时间间隔可以基于发送数据消息和发送第一心跳消息之间的初始时间间隔,或者预期时间间隔可以基于两条心跳消息之间的间隔。例如,初始时间间隔和/或两条心跳消息之间的间隔可以增加恒定的量或者加倍以允许网络延迟变化来确定预期时间间隔。
在块213,确定接收到的消息的预期序列号。如果接收到的消息是数据消息,那么可以通过递增先前接收到的消息的序列号(或者如果未接收到任何先前的消息,那么根据重置的预期序列号)来确定预期序列号。例如,序列号可以递增1,从“0”到“1”,或者从“-1”到“0”。如果在此示例中,接收到的消息是心跳消息,那么预期序列号将与先前接收到的消息的序列号相同。
在块214,将接收到的消息的序列号与在块213中确定的预期序列号进行比较。
如果接收到的消息的序列号不等于预期序列号(如在块214确定的),那么在块215,可以报告丢失消息。在某些实施例中,只有在丢失消息是数据消息时才可以报告丢失消息。在某些实施例中,系统可以确定消息缺失,并等待一段时间以接收缺失的信息。如果在一段时间内未接收到缺失的消息,那么系统可以将缺失的消息报告为丢失。
如果接收到的消息的序列号等于预期序列号(如在块214确定的),那么在块216,确定接收到的消息是否是数据消息。如果接收到的消息是数据消息,那么在块217,处理数据消息,并且控制返回块212。例如,可以通过将数据消息内容传递给应用来处理数据消息。如果接收到的消息不是数据消息,那么控制返回块212。
用于根据上述使用增加的间隔技术的心跳接收消息的方法对于每条数据消息预期递增的序列号,并预期心跳消息的序列号与先前发送的数据消息的序列号相同。为数据和心跳消息分配序列号允许在数据消息丢失和接收到后续消息的时间内检测到丢失消息。
C.停止消息技术
某些实施例通过利用停止消息技术处理过多的非数据网络流量的问题。在停止消息技术中,发送停止消息以向接收方指示发送器将不会提供额外的心跳消息,并且因此,接收方要接收的下一条消息是数据消息。停止消息也可以称为例如结束消息或者心跳暂停消息。此外,停止消息可以是不同的消息类型,或者可以由如心跳消息或者数据消息的另一条消息中的标志来表示。在一个示例中,停止消息可以由数据消息中的标志来表示。在此示例中,停止消息技术可以单独使用,或者与心跳消息技术结合使用。
此外,使用的心跳信息和停止消息的数量可以变化。例如,可以在停止消息后发送三条心跳消息。在另一个示例中,可以发送三条心跳消息,其中最后一条心跳消息具有停止消息标志。在另一示例中,可以基于使用的链路/传输等待时间来确定要发送的心跳消息的数量。
停止消息技术以与上面参考图2A-2D描述的相似的方式增加检测到丢失数据消息。此外,停止消息技术进一步减少由于过多的心跳消息而导致的网络流量,并提供对短暂链路故障一定的容忍度,类似于上面参考图2B描述的增加的间隔技术。
图3A和3B示出减少发送的心跳消息的数量的停止消息技术的优点。图3A示出利用如上所述的使用增加的间隔技术的示例性心跳的示例性消息。在此示例中,数据消息表示为“M”,并且心跳消息表示为“HB”。这里,心跳消息的时间间隔加倍,并且心跳消息包括发送的上一条数据消息的序列号。在此示例中,第一数据消息M1在时间t=0以序列号“0”发送。第一时间间隔为“1”,并且在此时间间隔内没有要发送的新数据。因此,系统在时间t=1以序列号“0”发送第一心跳消息HB1。在时间t=3(在间隔:1(前一间隔)*2(加倍)=2后),此时没有要发送的新数据,系统以序列号“0”发送第二心跳消息HB2。在时间t=7(在间隔:2(前一间隔)*2(加倍)=4后),此时没有要发送的新数据,系统以序列号“0”发送第三心跳消息HB3。在时间t=11(在下一次要发送心跳消息之前),有要发送的新数据。因此,系统发送第二数据消息M2并将序列号增大为“1”。在图3A的示例中,在发送第二数据消息之前发送三条心跳消息。这些心跳消息可能过多,并可能导致网络流量增加。
图3B示出利用如上所述的示例性停止消息技术的消息。在此示例中,停止消息表示为“SM”,并且不使用心跳消息。作为替代,在初始间隔“1”后,发送包括发送的上一条数据消息的序列号的停止消息。在此示例中,第一数据消息M1在时间t=0以序列号“0”发送。在时间t=1,此时没有要发送的新数据,停止消息SM1以序列号“0”发送。该停止消息指示没有额外的心跳消息将被发送,并且要接收的下一条消息是数据消息。在时间t=11,数据消息M2以序列号“1”发送。在图3B中示出的停止消息技术通过减少心跳消息的数量而减少网络流量。在图3A的示例中,在两条数据消息之间发送三条心跳消息,在此示例中,只发送一条停止消息。
D.清除消息流状态技术
某些实施例处理与由发送器和接收器维持的消息流有关的状态信息。消息流状态是特定消息流所特有的信息。消息流是与特定的对象、主题等相关的消息的逻辑通信信道。例如,被监视的每个对象都可以具有与该对象相关的消息的相关联的消息流。作为另一个示例,每个用户都可以具有特定用于该用户的消息的消息流,如个人收件箱流。对于发送器,消息流状态可以包括例如上一次发送的序列号、上一次发送的时间、用于重传的发送数据的副本、接收方的地址或者主题以及与心跳消息的发送时间间隔相关的信息。
接收方的地址可以不同于底层链路和/或传输地址,包括例如IP网络、进程间通信(“IPC”)、共享存储器和/或消息传递交换结构,如。例如,某些实施例可以用在其中存在一个或多个加入单一IP多播组的接收方的IP多播机制的顶部。接收方基于包括在消息中的主题地址识别用于它们的消息。不同的接收方可能对不同的主题感兴趣,但IP多播组的每个成员仍会接收所有的多播消息。对特定的主题不感兴趣的接收方将丢弃该消息,就好像从未接收它一样。虽然单一IP多播组可以是预定义的值,但主题地址将是消息流状态的一部分,因为它是与例如被监视的对象相关联的消息流所特有的。
对于接收器,消息流状态可以包括例如上一次接收到的序列号、上一次的接收时间、乱序消息的副本、与发送器相关的地址或者主题以及与用于检测丢失消息的发送间隔相关的信息。例如按特定路线传送消息的中间设备也可以维持每个消息流的消息流状态。
这种消息流状态信息可能会不予考虑(dismissed),因为只占用甚至用于成千上万的对象和/或用户的功能强大的服务器的存储器或者如套接字(sockets)、处理、连接或者端口的其他资源的一小部分。然而,如果预期服务器运行数月或者更长时间,那么每次它必须为之维持消息流状态的对象和用户的数量是无界限的,因此从理论上说,服务器可能耗尽存储器或者其他资源。此外,如果支持消息的重新排序,那么对每个消息流可能需要或者希望使用缓冲器。对于大量的消息流,这可能代表大量的存储器使用。
此外,某些类型的接收方可能具有更有限的存储器和/或资源限制。例如,大的存储器和/或资源需求在如移动设备的某些设备中可能是不实际的或者性价比较低的。作为另一个示例,专门的网络接口控制器(“NIC”)卡可以执行消息处理,并可以具有影响可维持的流的数量的资源限制。作为另一个示例,如路由器和/或桥接器的设备,包括可以在远程站点或者网络提供信息给大量的客户端的应用协议路由器,在各种配置中,可以看作是接收方或者中间设备。一些设备可以实现为例如具有存储器和/或资源限制的专用硬件设备。因此,希望减少需要为与不频繁的消息相关的消息流存储的状态信息。
某些实施例结合上述的停止消息技术通过清除消息状态信息来处理存储消息流状态信息的问题。虽然底层传输连接,如传输控制协议(“TCP”)连接或者多播组可能不能关闭,但可以清除、丢弃、重写和/或从存储器解除分配消息流状态信息,释放相关联的资源(如套接字)。因为当没有任何消息要发送时,没有必要存储消息流状态信息,所以可以进行消息流状态信息清除。因此,在发送和/或接收到停止消息后可以清除状态信息。
当要发送新的数据消息时,以预定义的序列号开始创建新的消息流状态。例如,每次在已经发送停止消息后要发送新的数据消息时,新的数据消息的序列号都可以重置为“0”。数据消息的目的地可以从来源和/或消息本身的内容获得。例如,可以基于用户信息构建消息的主题。作为另一个示例,可以基于用户信息、组成员信息、应用标识符、用户名称和/或帐户构建目的地。由于正在发送新的数据消息,因此与发送间隔相关的状态设定为预定义的初始值。因此,有效地重建消息流状态。
图3C示出结合上述示例性消息流状态清除技术利用示例性停止消息技术的示例性消息。在此示例中,消息流中每条消息(数据消息和停止消息)的序列号按“1”递增。数据消息M1以序列号“0”发送,数据消息M2以序列号“1”发送,并且停止消息SM1以序列号“2”发送。在发送停止消息SM1后,由发送器、接收器和一个或多个中间设备中的一个或多个清除消息流状态。因为消息流状态已被清除,所以要发送的后续数据消息的序列号也重置为预定值“0”。发送停止消息SM1向接收方(和任何中间设备)指示下一次接收的消息应该是数据消息,以及数据消息的序列号应该是“0”。在此示例中,在稍后的时间,数据消息M3以序列号“0”发送,数据消息M4以序列号“1”发送,并且停止消息SM2以序列号“2”发送。在接收到停止消息SM1后,接收方将预期接收序列号为“0”的数据消息。如果例如数据消息M3丢失,那么接收方将替代地接收到序列号为“1”的数据消息M4。接收方将确定已经丢失数据消息,因为接收到的数据消息M4的序列号不是“0”。在另一个示例中,如果数据消息M3和M4丢失,那么接收方将确定已经丢失两条数据消息,因为接收到的消息将是序列号为“2”的停止消息SM2,而不是序列号为“0”和“1”的数据消息M3和M4。
E.阶段号技术
如上所述,当使用清除消息流状态技术时,以预定义的序列号开始创建新的消息流状态。例如,每次在已经发送停止消息后发送新的数据消息时,新的数据消息的序列号都可以重置为“0”。在发送停止消息后清除消息流状态的系统可能在整个消息序列丢失时无法检测出丢失数据消息。消息序列是数据消息和对应的后续停止消息的序列。虽然这种系统可以由于不正确的序列号顺序检测出丢失数据消息,但当整个消息序列丢失时,接收到的消息的序列号仍保持正确排序。因为新的消息序列的序列号以预定序列号(如“0”)重新开始,所以接收到的消息保持正确排序。当新的消息序列的序列号被重置时,可能检测不到整个消息序列的丢失。图3D示出该问题的示例。
图3D示出其中可能在未检测到的情况下丢失整个消息序列的示例性消息。在此示例中,每条消息的序列号按1递增,并在发送停止消息后重置为“0”。因此,数据消息M1以序列号“0”发送,数据消息M2以序列号“1”发送,并且停止消息SM1以序列号“2”发送。由于发送了停止消息,因此后续数据消息的序列号被重置为“0”。数据消息M3以序列号“0”发送,数据消息M4以序列号“1”发送,并且停止消息SM2以序列号“2”发送。当发送另一停止消息时,后续数据消息的序列号被重置。数据消息M5以序列号“0”发送,数据消息M6以序列号“1”发送,并且停止消息SM3以序列号“2”发送。
在此示例中,数据消息M3、数据消息M4和停止消息SM2丢失。由于数据消息的序列号在发送停止消息后被重置,因此在此示例中的接收方将无法检测到丢失消息M3、M4和SM2。这里接收方将预期在接收到SM1后接收序列号为“0”的数据消息,这样的话,无法检测到消息M3、M4和SM2的丢失。
作为另一示例,由于网络延迟和消息丢失,一个消息序列的一部分可以不可检测地与第二消息序列的一部分组合,因此系统无法检测出这些组合的消息的丢失。图3E示出一个示例。在此示例中,类似于上面讨论并在图3D中的示出的示例,每条消息的序列号按“1”递增,并在发送停止消息后重置为“0”。在图3E的示例中,数据消息M1以序列号“0”发送,数据消息M2以序列号“1”发送,数据消息M3以序列号“2”发送,并且停止消息SM1以序列号“3”发送。序列号被重置,并且数据消息M4以序列号“0”发送,数据消息M5以序列号“1”发送,数据消息M6以序列号“2”发送,并且停止消息SM2以序列号“3”发送。
在此示例中,消息M3、SM1、M4和M5丢失。在接收到序列号为“1”的数据消息M2后,接收方预期接收序列号为“2”的数据消息。由于在发送停止消息后,序列号被重置,因此接收方接收到序列号为“2”的数据消息,但没有检测到消息M3、SM1、M4和M5的丢失。如果以较大的间隔发送消息,但在中间设备缓冲和/或延迟消息,然后丢弃一些消息,那么可能会出现这种情况。
为了处理消息流状态被清除、后续发送的数据消息的序列号被重置并且消息序列可能丢失情况,某些实施例除了序列号之外还提供包括在每条消息中的阶段号。阶段号是对整个消息序列保持相同,并且例如在发送停止消息后对后续的消息序列设定为另一个值的标识符。阶段号可以是例如数值、字母数值或者位模式值。
图3F示出具有根据阶段号技术的阶段号的图3D的示例性消息。在图3F示出的示例中,每个消息序列的阶段号按1递增。因此,第一消息序列以阶段号“0”发送,第二消息序列以阶段号“1”发送,并且第三消息序列以阶段号“2”发送。在此示例中,接收方预期接收具有按1递增的阶段号的消息序列。因此,当在接收到阶段号“0”的第一消息序列后接收到阶段号“2”的第三消息序列时,接收方可以确定阶段号“1”的消息序列已经丢失。
图3G示出包括阶段号的图3E的示例性消息。在图3G中,每个消息序列的阶段号按1递增。因此,第一消息序列以阶段号“0”发送,并且第二消息序列以阶段号“1”发送。在此示例中,接收方预期接收具有按1递增的阶段号的消息序列。在接收到序列号“1”以及阶段号“0”的数据消息M2后,接收方预期接收到序列号“2”以及阶段号“0”的数据消息。当消息M3、SM1、M4和M5丢失时,接收方替代地接收到序列号“2”以及阶段号“1”的数据消息M6。由于接收到的数据消息的阶段号不为“0”,因此接收方能够检测到丢失消息序列。
在另一个示例中,阶段号是可以清除的消息流状态的一部分,因为相同消息序列中的每条消息都具有相同的阶段。清除消息流状态的好处在上面已经描述。当新的消息序列开始时,每当从发送器发送新的序列,下一个消息序列的阶段的值都从发送器上可用的以非重复的或者非常不频繁重复的方式改变的全局值或者函数获得。这导致下一个阶段号对接收方来说是不可预测的。例如,发送器可以维持对协议实现方式可用的以及每当新的消息序列开始时按1递增的单个32位无符号整数值。每当从发送器发送新的序列时,无论接收方是谁,都选择新的阶段号。因此,在此示例中,接收方无法预测消息序列的阶段号,因为发送器可以发送消息序列给许多不同的接收方。
图3H示出其中接收方无法预测消息序列的阶段号的示例性消息。图3H与图3G示出的示例相似,但在图3H中,阶段号是随机分配的。在图3H的示例中,第一消息序列以阶段号“0”发送,并且第二消息序列以阶段号“5”发送。在接收到序列号“1”以及阶段号“0”的数据消息M2后,接收方将预期接收到阶段号“0”的停止消息或者数据消息。当消息M3、SM1、M4和M5丢失时,接收方接收到序列号“2”以及阶段号“5”的数据消息M6。比较数据消息M6的阶段号“5”与数据消息M2的阶段号“0”,接收方确定消息序列已经丢失。
在另一个示例中,当接收方无法预测消息序列的阶段号时,接收方可能在阶段号与消息流状态一起被清除时无法检测到整个消息序列的丢失。为了在此示例中检测丢失消息,可以采用能够检测链路状态问题的机制。例如,在每条链接/传输机制上发送周期心跳的独立机制(独立于特定的消息流,因为多个消息流可以通过相同链路/传输发送)可以检测到这些类型的链路故障,并且应用可以相应地采取行动以防止由于丢失完整的序列而导致的问题。此外,在某些情况下,由于数据的性质,消息序列的丢失可能在处理稍后的序列时对接收方来说是显而易见的。
图4示出用于使用如上所述的阶段号发送消息的方法的示例性流程图400。在此示例中,每条消息都使用阶段号以及序列号,并且不使用心跳消息,在数据消息还未发送的初始时间间隔后只有停止消息。在某些实施例中,心跳消息也可以在发送停止消息之前发送。此外,还包括上面讨论的消息流状态信息清除技术的实施例。
在块401,确定是否要发送新的消息。新的消息可以是例如新的数据消息或者停止消息。例如,可以从应用接收到要发送的新的数据消息。作为另一个示例,与初始间隔相关联的定时器可能到期,指示应该发送停止消息。在某些实施例中,要发送的新的消息可以是心跳消息。如果确定不发送新的消息,那么控制返回块401。
如果要发送新的消息(如在块401确定的),那么在块402确定阶段号。如果新的消息是消息序列中的第一数据消息,那么阶段号可以通过例如递增先前的消息序列的阶段号(或者如果这是发送的第一消息序列,那么以如“0”的预定义的值开始)或者从全局值或者函数获得新的阶段号来确定。例如,上一消息序列的阶段号可以递增1,从“0”到“1”。如果新的消息不是消息序列中的第一数据消息,那么阶段号可以确定为发送的上一条消息的阶段号。例如,如果发送的上一条消息的阶段号是“1”,那么要发送的新的消息的阶段号也是“1”。
在块403,确定序列号。如果新的消息是数据消息,那么序列号可以通过递增先前发送的数据消息的序列号来确定(或者如果这是消息序列中的第一数据消息,那么以如“0”的预定义的值开始)。例如,序列号可以递增1,从“0”到“1”。如果新的消息是停止消息(或者在某些实施例中,心跳消息),那么序列号可以确定为消息序列中发送的上一条数据消息的序列号。
在块404,如果新的消息是数据消息,那么控制前进到块405。如果新的消息是停止消息,那么控制前进到块406。
在块405,发送新的消息(数据消息),并且控制返回块401。
在包括心跳消息的某些实施例中,控制将从块404传递到发送新的心跳消息的块,并在控制返回块401之前确定新的下一次心跳时间。
在块406,发送新的消息(停止消息)。在块407,清除消息流状态,如上所述,控制返回块401。
图5示出用于根据上述的阶段号技术接收消息的方法的示例性流程图500。在此示例中,每条消息都使用阶段号以及序列号,并且每个消息流都具有不同的阶段号。例如,每个消息流可以具有比先前的消息流的阶段号大一的阶段号。作为另一个示例,每个消息流可以具有对接收方来说不可预测的阶段号。此外,在此示例中,每条数据消息都具有不同的序列号。例如,每条数据消息都可以具有比先前的数据消息的序列号大一的序列号。在此示例中,不使用心跳消息,在数据消息还未发送的初始间隔后只有停止消息。在某些实施例中,心跳消息也可以在发送停止消息之前发送。此外,还包括上面讨论的消息流状态信息清除技术的实施例。
在块501,接收到消息。所述消息可以是例如数据消息或者停止消息。如果在预期时间间隔内未接收到消息,那么可以报告丢失消息。例如,预期时间间隔可以基于数据消息和第一心跳消息(或者这里停止消息)之间的初始时间间隔,或者预期时间间隔可以基于两条心跳消息之间的间隔。例如,初始时间间隔和/或两条心跳消息之间的间隔可以增加恒定的量或者加倍以允许网络延迟变化来确定预期时间间隔。
在块502,确定接收到的消息的预期阶段号。接收到的消息的预期阶段号在此示例中与消息序列中先前接收到的消息的阶段号相同。如果接收到的消息是消息序列的第一消息(这可以基于是否没有接收到先前的消息或者先前的消息是停止消息来确定),那么基于阶段号对接收器来说是否是可预测的来确定预期阶段号。如果阶段号对接收器来说是可预测的,那么预期阶段号可以根据预定函数来确定。例如,预期阶段号可以通过递增先前的消息序列的阶段号(或者如果这是接收到的第一消息序列,那么以如“0”的预定义的值开始)来确定。如果阶段号对接收器来说是不可预测的,那么消息序列中接收到的第一消息的阶段号用作预期阶段号,并预期为不同于先前的消息序列的阶段号。
在块503,确定接收到的消息的预期序列号。如果接收到的消息是数据消息,那么预期序列号可以通过递增先前接收到的消息的序列号(或者如果在此消息序列中没有接收到先前的消息,那么从预定义的初始序列号开始)来确定。例如,序列号可以递增1,从“0”到“1”。如果在此示例中接收到的消息是停止消息,那么预期序列号将与先前接收到的消息的序列号相同。
在块504,比较接收到的消息的阶段号与在块502中确定的预期阶段号。
如果接收到的消息的阶段号不等于预期阶段号(如在块504确定的),那么在块505,才可以报告丢失数据消息。在某些实施例中,仅在丢失消息是数据消息时,可以报告丢失消息。在某些实施例中,系统可以确定消息缺失,并等待一段时间以接收缺失的消息。如果在一段时间内未接收到缺失的消息,那么系统可以将缺失的消息报告为丢失。
如果接收到的消息的阶段号等于预期阶段号(如在块504确定的),那么在块506,比较接收到的消息的序列号和在块503中确定的预期序列号。
如果接收到的消息的序列号不等于预期序列号(如在块506确定的),那么在块505,可以如上所述报告丢失消息。
如果接收到的消息的序列号等于预期序列号(如在块506确定的),那么在块507,如果接收到的消息是数据消息,那么控制前进到块508。如果接收到的消息是停止消息,那么控制前进到块509。
如果接收到的消息是数据消息,那么在块508,处理数据消息。例如,接收到的数据消息可以传递给应用。然后,控制返回块501。
如果接收到的消息是停止消息,那么在块509,如上面讨论的,清除消息流状态,并且控制返回块501。
在包括心跳消息的某些实施例中,控制将从块507传递到更新下一预期心跳时间的块,并且控制将返回块501。
IV.示例性发送器设备和接收器设备
图6示出示例性发送器设备600的框图。发送器设备600单独和组合地实现上面讨论的技术。发送器设备600包括消息发送器601、消息识别器602、阶段号生成器603、序列号生成器604以及消息流状态清除器605。
在某些实施例中,可以仅实现上面讨论的技术的子集(和/或组合的子集)。例如,不提供阶段号技术的发送器设备可以不包括阶段号生成器603。
消息发送器601发送消息。例如,消息发送器601可以发送数据消息、心跳消息和停止消息。根据利用的一种或多种特定的技术,可以不发送某些消息类型。例如,如果仅与停止消息一起利用阶段号技术,那么将不会发送心跳消息。作为另一个示例,可以与使用增加的间隔技术的心跳和停止消息技术一起利用阶段号技术,因此可以发送数据消息、心跳消息和停止消息。此外,根据利用的一种或多种特定的技术,消息可以包括序列号或者阶段号和序列号两者。例如,利用使用增加的间隔技术的心跳发送的消息可以不包括阶段号。作为另一个示例,利用阶段号技术发送的消息可以包括阶段号和序列号两者。
消息发送器601可以从应用接收要在数据消息中发送的数据。消息发送器601可以跟踪下一次心跳时间,使得根据利用的一种或多种特定的技术以适当的间隔发送心跳消息和/或停止消息。
在某些实施例中,单独的消息发送器可以用来发送不同的消息类型。
消息识别器602识别发送的消息的类型。例如,消息识别器602可以将要发送的消息识别为数据消息、心跳消息或者停止消息。
阶段号生成器603确定并提供要发送的消息的阶段号。对于包括阶段号的要发送的消息,将阶段号提供给消息发送器601。阶段号可以如上面讨论地确定。当要发送的消息是消息序列中的第一消息时,阶段号可以通过例如递增先前的消息序列的阶段号(或者如果这是发送的第一消息序列,那么以如“0”的预定义的值开始)或者从全局值或者函数获得新的阶段号来确定。当要发送的消息不是消息序列中的第一消息时,阶段号可以确定为发送的上一条消息的阶段号。
序列号生成器604确定并提供要发送的消息的序列号。序列号可以基于正在发送的消息的类型来确定。序列号可以如上面讨论地确定。在某些实施例中,心跳消息和/或停止消息的序列号与发送的上一条数据消息的序列号相同。在某些实施例中,心跳消息和/或停止消息的序列号从发送的上一条消息的序列号递增,而不论上一条消息是数据消息还是心跳消息。在某些实施例中,对于新的消息序列的第一消息,序列号重置为预定义的值。
如上所述,消息流状态清除器605在发送停止消息后清除消息流状态。
图7示出示例性接收器设备700的框图。接收器设备700单独和组合地实现上面讨论的技术。接收器设备700包括消息接收器701、消息识别器702、预期阶段号生成器703、预期序列号生成器704、阶段号比较器705、序列号比较器706、丢失消息报告器707、消息处理器708以及消息流状态清除器709。
在某些实施例中,可以仅实现上面讨论的技术的子集(和/或组合的子集)。例如,不提供阶段号技术的接收器设备可以不包括预期阶段号生成器703和/或阶段号比较器705。
消息接收器701接收消息。例如,消息接收器701可以接收数据消息、心跳消息和停止消息。根据利用的一种或多种特定的技术,可以不接收某些消息类型。例如,如果仅与停止消息一起利用阶段号技术,那么将不会接收心跳消息。作为另一个示例,可以与使用增加的间隔技术的心跳和停止消息技术一起利用阶段号技术,因此可以接收数据消息、心跳消息和停止消息。此外,根据利用的一种或多种特定的技术,消息可以包括序列号或者阶段号和序列号两者。例如,利用使用增加的间隔技术的心跳接收的消息可以不包括阶段号。作为另一个示例,利用阶段号技术接收的消息可以包括阶段号和序列号两者。
消息接收器701可以跟踪预期的下一次心跳时间,使得如果在预期时间间隔内未接收到心跳消息和/或停止消息,那么将心跳消息和/或停止消息检测为丢失。例如,预期时间间隔可以基于数据消息和第一心跳消息或者停止消息之间的初始时间间隔,或者预期时间间隔可以基于两条心跳消息之间的间隔。例如,初始时间间隔和/或两条心跳消息之间的间隔可以增加恒定的量或者加倍以允许网络延迟变化来确定预期时间间隔。
在某些实施例中,可以利用单独的消息接收器来接收不同的消息类型。
消息识别器702识别接收到的消息的类型。例如,消息识别器702可以将接收到的消息识别为数据消息、心跳消息或者停止消息。
预期阶段号生成器703为接收到的消息确定并提供预期阶段号。可以如上面讨论地确定阶段号。接收到的消息的预期阶段号与消息序列中的先前接收到的消息的阶段号相同。如果接收到的消息是消息序列的第一消息(这可以基于是否没有接收到先前的消息或者先前的消息是停止消息来确定),那么预期阶段号基于阶段号对接收器来说是否是可预测的来确定。如果阶段号对接收器来说是可预测的,那么预期阶段号可以根据预定函数来确定。例如,预期阶段号可以通过递增先前的消息序列的阶段号(或者如果这是接收到的第一消息序列,那么以如“0”的预定义的值开始)来确定。如果阶段号对接收器来说是不可预测的,那么消息序列中接收到的第一消息的阶段号作为预期阶段号,并预期与先前的消息序列的阶段号不同。
预期序列号生成器704为接收到的消息确定并提供预期序列号。预期序列号可以基于接收到的消息的类型来确定。可以如上面讨论地确定预期序列号。在某些实施例中,心跳消息和/或停止消息的预期序列号与接收到的上一条数据消息的序列号相同。在某些实施例中,心跳消息和/或停止消息的预期序列号从接收到的上一条数据消息的序列号递增。在某些实施例中,对于新的消息序列的第一消息,预期序列号重置为预定义的值。
阶段号比较器705确定接收到的消息的阶段号是否等于由预期阶段号生成器703提供的预期阶段号。如果不是,那么丢失消息报告器707用来报告丢失消息。
序列号比较器706确定接收到的消息的序列号是否等于由预期序列号生成器704提供的预期序列号。如果不是,那么丢失消息报告器707用来报告丢失消息。
丢失消息报告器707报告丢失消息。在某些实施例中,仅当丢失消息是数据消息时,才可以报告丢失消息。在某些实施例中,消息接收器701可以确定消息缺失,并等待一段时间来接收缺失的消息。如果未能在一段时间内接收到缺失的消息,那么消息接收器701可以使用丢失消息报告器707将缺失的消息报告为丢失。
消息处理器708处理接收到的消息。例如,接收到的数据消息可以传递给应用。
如上所述,消息流状态清除器709在接收到停止消息后清除消息流状态。
V.示例电子交易系统
如从上文可以清楚看到的是,实施例适用于数据通过连接的设备传送和接收的网络环境。示例性的这种环境是电子交易系统,其中电子交易所(exchange)将与市场数据相关的消息传送给交易设备。市场数据包括例如可交易对象的价格数据、市场深度数据、最后交易数量数据和/或与市场相关的任何数据。在某些电子交易系统中,交易设备发送与交易命令(order)相关的消息到电子交易所。在接收到交易命令后,电子交易所将交易命令输入交易所命令簿,并尝试将交易命令的数量与一个或多个对方的(contra-side)交易命令的数量匹配。在某些实施例中,每个命令都可以有与该命令相关的消息的相关联的消息流。
在某些电子交易系统中,消息可以不频繁发送。例如,消息可以与如命令的正在监视的对象相关。例如,关于命令的状态的信息可以仅当在该命令的状态变化时发送。命令的状态变化可以包括例如成交(fill)、部分成交、命令价格变化或者取消命令。例如,如果命令远离市场工作,那么它的状态可能在一小时或者更多小时的过程中不会变化。在某些情况下,命令可能是目前不在市场中工作的命令,如触发命令,并且状态可能在几小时或者几天内不会变化。这种触发命令可以包括例如持有(hold)、取消前有效(“GTC”)、到期前有效(“GTD”)、触及即限价(limit-if-touched)、触及即市价(market-if-touched)、收盘时限价(limit-on-close)、收盘时市价(market-on-close)、开盘时限价(limit-on-open)和开盘时市价(market-on-open)命令。“GTC”命令保持有效的设定价格直到它被取消或者执行。“GTD”命令保持有效直到设定的日期。已经成交的命令目前也不在市场上工作。
作为另一个示例,可以不频繁发送关于与服务器相关的状态变化的信息,如服务器是可以访问的还是无法访问的以及至交易所的连接是可以访问的还是无法访问的。作为另一个示例,可以不频繁发送与命令无关的消息,如新闻消息。作为另一个示例,文件和初始命令簿下载可以不频繁发生,如启动时以及当随后检测到丢失消息时。单个交易员不一定下达大量命令,但如果命令簿是由多个用户共享,组合起来,大量命令或者与共享的命令簿相关的其他类型的状态可以有不频繁发送的信息。例如,如风险经理的管理员可以访问每个交易员的命令簿。作为另一个示例,由于特定公司的所有交易员在交易所的相同帐户下进行交易,因此他们可以共享命令簿。在共享命令簿的情况下,每个共享命令簿的接收方都可以潜在地接收到与命令簿相关的消息。
图8示出其中可以采用某些实施例的电子交易系统800的框图。系统800包括交易设备810、网关820和电子交易所830。交易设备810与网关820通信。网关820与交易所830通信。
如这里使用的,短语“与......通信”可以包括直接通信和通过一个或多个中间组件间接通信。
在操作中,交易设备810可以发送命令以在交易所830买入或者卖出可交易对象。例如,用户可以利用交易设备810发送命令。命令可以通过网关820发送至交易所830。此外,市场数据可以从交易所830通过网关820发送到交易设备810。用户还可以利用交易设备810来监视该市场数据和/或基于所述市场数据做出发送用于可交易对象的命令的决定。
可交易对象是可以以某一数量和/或价格交易的任何东西。例如,金融产品,包括股票、期权、债券、期货、货币、权证、基金衍生品、证券、商品、掉期、利率产品、指数型产品、交易活动、货物以及其集合和/或组合可以是可交易对象。可交易对象可以是“真实的(real)”或者“合成的(synthetic)”。真实的可交易对象包括在交易所上市(list)和/或管理的产品。合成的可交易对象包括用户定义的产品。例如,合成的可交易对象可以包括真实的(或者其他合成的)产品的组合,如由利用交易设备810的用户创建的综合套期战略(synthetic spread)。可能存在与合成的交易对象对应和/或类似的真实的可交易对象。
交易设备810可以包括例如一个或多个电子计算平台,如手持设备、笔记本计算机、台式计算机、使用单核或者多核处理器的工作站、使用多个处理器的服务器和/或计算机集群。例如,尽管在逻辑上表现为单一的设备,但交易设备810可以包括与服务器通信的交易终端,其中交易终端和服务器统称为交易设备810。交易终端可以为用户提供交易屏幕,并可以向服务器传送指令以进一步处理通过交易屏幕的用户输入,如下达命令。
用户通常拥有、操作、控制、编程、配置或者以其他方式使用交易设备810。如这里使用的,短语“用户”可以包括但不限于人(例如,交易员)或者电子交易设备(例如,算法交易系统)。一个或多个用户可以涉及例如所有、操作、控制、编程、配置或者其他使用。
交易设备810可以包括一个或多个交易应用。一个或多个交易应用可以例如通过在交易和图表窗口中布置和显示市场数据来处理市场数据。市场数据可以从例如交易所830接收。作为另一个示例,市场数据可以从提供历史数据和/或模拟交易但不会招致现实世界交易的模拟环境接收。这个处理可以基于例如用户偏好。例如,一个或多个交易应用可以包括自动交易工具,如自动跨期买卖工具。一个或多个交易应用可以分布在交易设备810的一个或多个计算设备上。例如,交易应用的某些组件可以在交易工作站上执行,交易应用的其他组件可以在与工作站通信的服务器上执行。
交易设备810可以包括例如电子交易工作站、便携式交易设备、算法交易系统(如“黑箱”或者“灰箱”系统)、嵌入式交易系统和/或自动交易工具。例如,交易设备810可以是运行由伊利诺伊州芝加哥市的交易科技国际股份有限公司(Trading TechnologiesInternational,Inc.of Chicago,Illinois)提供的电子交易平台的副本的计算系统。作为另一个示例,交易设备810可以是运行也由交易科技国际股份有限公司提供的如和/或AutotraderTM的自动交易工具的计算设备。
作为另一示例,交易设备810可以包括使用算法处理市场数据并包括用于基于算法处理手动下达命令的用户界面或者操作自动下达的命令的交易应用。算法交易应用是包括执行某些动作的自动处理算法的交易应用。即,交易应用包括执行一个或多个定义的动作的一系列的自动指令。这些动作可以包括例如以特定的方式处理市场数据、下达命令、修改现有的命令、删除命令、制止下达命令、选择要进行动作的一个或多个可交易对象、确定下达或者修改命令的价格、确定下达命令的数量或者修改命令的数量,确定命令应该是买入还是卖出以及延迟动作一段时间。
如这里使用的,算法(也称为交易算法)是由包括描述将在交易中使用的算法的逻辑表达式和参数的定义规定的。逻辑表达式规定参数之间的关系,并可以生成更多的参数。参数可包括例如输入到算法的逻辑表达式中的输入。算法的定义可以至少部分地由算法交易应用规定。例如,算法交易应用可以允许用户仅规定将被预定义的逻辑表达式使用的参数。作为另一个示例,算法交易应用可以允许用户规定逻辑表达式中的一些或者全部以及参数中的一些或者全部。用户规定逻辑表达式的交易算法是用户定义的交易算法。
交易应用可以存储在交易设备810的计算机可读介质中。在某些实施例中,交易应用的一个或多个组件可以存储在交易工作站上,并且交易应用的其他组件可以存储在与工作站通信的服务器上。在某些实施例中,交易应用的一个或多个组件可以从另一个计算机可读介质加载到交易设备810的计算机可读介质中。例如,交易应用(或者交易应用的更新)可以由制造商、开发商或者发行商存储在一个或多个CD或者DVD上,然后再提供给负责将应用加载到交易设备810上的某人或者交易设备810从中获取交易应用的服务器。作为另一个示例,交易设备810可以例如经由因特网或者内部网络从服务器接收交易应用(或者交易应用的更新)。当交易设备810请求(“拉分发(pull distribution)”)和/或交易设备810未请求(“推分发(push distribution)”)时,交易设备810可以接收到交易应用或者更新。
交易设备810适用于发送用于可交易对象的命令。所述命令可以例如以一条或者多条消息或者以数据包或者通过共享的存储器系统发送。交易设备810也可以适用于例如取消命令、更改指令和/或查询交易。作为另一个示例,交易设备810可以适用于将命令发送到不招致现实世界交易的模拟环境中的模拟交易。
例如,交易设备810发送的命令可以在用户的请求下发送或者自动发送。例如,交易员可以利用电子交易工作站对特定的可交易对象下达命令,手动提供用于该命令的一个或多个参数,如命令价格和/或数量。作为另一个示例,自动交易工具可以计算用于该命令的一个或多个参数,并自动发送该命令。在某些情况下,自动交易工具可以准备要发送的命令,但在用户没有确认的情况下实际上不发送它。
在某些实施例中,交易设备810包括用户接口。用户接口可以包括例如用于向用户呈现交易应用的基于文本和/或图形界面的一个或多个显示设备。例如,显示设备可以包括计算机监视器、手持式设备显示器、投影仪和/或电视机。用户接口可以用于规定或者查看使用交易应用的命令的参数。用户接口可以包括例如用于接收输入的一个或多个输入设备。例如,输入设备可以包括键盘、轨迹球、两键或者三键鼠标和/或触摸屏。用户接口可以包括用于与用户交互的其他设备。例如,信息可以可听地通过扬声器提供给用户和/或通过麦克风接收。
在某些实施例中,交易应用包括使得用户能够与一个或多个市场进行交互的一个或多个交易屏幕。例如,交易屏幕可以使得用户能够获得并查看市场信息,设定命令输入参数,输入和取消命令和/或在实现各种交易策略时监视形势(position)。例如,交易应用可以从交易所830接收信息(如买入价格、买入数量、卖出价格、卖出数量、过去销售的价格和数量和/或其他市场相关信息),其中的部分或者全部可以依次使用交易设备810的用户接口显示。根据接收到的信息,交易屏幕可以显示关于可交易对象的价格水平范围和与价格水平对应的买入及卖出数量。为了向用户提供相关的交易信息,交易屏幕可以显示围绕内部市场的价格范围(以及对应的买入价和卖出数量)。信息可以连续或者定期提供给交易应用,这允许交易应用以当前的市场信息更新交易屏幕。例如,用户可以使用交易屏幕基于显示的信息来下达命令买入和卖出可交易对象或者以其他方式交易可交易对象。
交易屏幕可以显示一个或多个交易工具。交易工具是允许协助和/或促进电子交易的电子工具。示例性交易工具包括但不限于图表、交易梯形图(trading ladder)、命令输入工具、自动交易工具、自动跨期买卖工具、风险管理工具、命令参数工具、命令输入系统、市场网格、成交窗口、市场命令窗口和它们的组合,以及用于交易、准备交易、管理交易或者分析市场的其他电子工具。
在某些实施例中,命令从交易设备810通过网关820发送至交易所830。例如,交易设备810可以使用局域网、广域网、无线网络、虚拟专用网络、T1线路、T3线路、综合业务数字网络(“ISDN”)线路、存在点(a point-of-presence)、因特网和/或共享的存储器系统与网关820通信。
网关820适用于与交易设备810和交易所830通信。网关820促进交易设备810和交易所830之间的通信。例如,网关820可以从交易设备810接收命令并将命令传送到交易所830。作为另一个示例,网关820可以从交易所830接收市场数据并将市场数据发送到交易设备810。
在某些实施例中,网关820对在交易设备810和交易所830之间通信的数据执行处理。例如,网关820可以将从交易设备810接收到的命令处理成交易所830理解的数据格式。同样,网关820可以将从交易所830接收到的交易所特定格式的市场数据转换成交易设备810理解的格式。网关820的处理也可以包括跟踪来自交易设备810的命令和基于从交易所830接收到的成交确认更新命令的状态。作为另一个示例,网关820可以整合来自交易所830的市场数据,并将其提供给交易设备810。
在某些实施例中,网关820可以提供除了处理在交易设备810和交易所830之间通信的数据以外的其他的服务。例如,网关820可以提供风险处理。
例如,网关820可以包括一个或多个电子计算平台,如手持式设备、笔记本计算机、台式计算机、使用单核或者多核处理器的工作站、使用多个处理器的服务器和/或计算机集群。
网关820可以包括一个或多个网关应用。所述一个或多个网关应用可以例如处理命令处理和市场数据处理。例如,该处理可以基于用户偏好。
在某些实施例中,网关820使用例如局域网、广域网、虚拟专用网络、T1线路、T3线路、ISDN线路、存在点、因特网和/或共享的存储器系统与交易所830通信。
一般而言,交易所830可以被任何交易所实体拥有、操作、控制或者使用。示例性交易所实体包括CME集团、伦敦国际金融期货及期权交易所(“LIFFE”)、洲际交易所(“ICE”)和欧洲期货交易所。交易所830可以包括电子匹配系统,如适用于允许例如买入和卖出提供用于通过交易所交易的可交易对象的计算机、服务器或者其他计算设备。电子匹配系统可以包括例如匹配引擎。例如,交易所830可以包括多个独立的实体,其中一些上市和/或管理可交易对象,其他一些接收并匹配命令。交易所830可以包括例如电子通信网络(“ECN”)。
交易所830适用于匹配命令以买入及卖出可交易对象。可交易对象可以通过交易所830上市交易。例如,命令可以包括从交易设备810接收的命令。例如,命令可以通过网关820从交易设备810接收。此外,命令可以从与交易所830通信的其他设备接收。即,通常情况下,交易所830与也提供要匹配的命令的各种其他的交易设备(其可以类似于交易设备810)通信。
交易所830适用于提供市场数据。例如,市场数据可以以一条或者多条消息或者以数据包或者通过共享的存储器系统提供。例如,市场数据可以提供给交易设备810。例如,市场数据可以通过网关820提供给交易设备810。例如,市场数据可以包括代表内部市场的数据。内部市场是在特定时间点(因为内部市场可能随时间变化)的最低卖出价格(也称为“最佳报价(best ask)”)和最高买入价格(也称为“最佳出价(best bid)”)。市场数据也可以包括市场深度。市场深度是指在内部市场可获得的数量,并且也可以指远离内部市场以其他价格可获得的数量。因此,内部市场可以视为是市场深度的第一级。例如,距离内部市场一个单位(one tick)可以视为是市场深度的第二级。在某些实施例中,对于所有的价格水平提供市场深度。在某些实施例中,对于少于所有的价格水平提供市场深度。例如,可以只对于内部市场双方的前五个价格水平提供市场深度。作为另一个示例,可以对于在市场上数量可获得的前十个价格水平提供市场深度。市场数据也可以包括如最后交易价(LTP)、最后交易数量(LTQ)和命令成交信息的信息。
在某些实施例中,系统800包括一个以上的交易设备810。例如,如上面讨论的,与交易设备810类似的多个交易设备可以与网关820通信以将命令发送给交易所830。
在某些实施例中,系统800包括一个以上的网关820。例如,如上面讨论的,与网关820类似的多个网关可以与交易设备810和交易所830通信。这种布置可以用来提供例如如果一个网关820故障情况下的冗余。
在某些实施例中,系统800包括一个以上的交易所830。例如,如上面讨论的,网关820可以与交易所830类似的多个交易所通信。这种布置可以允许例如交易设备810在一个以上的交易所通过网关820进行交易。
在某些实施例中,系统800包括一个以上的交易所830和一个以上的网关820。例如,如上所述,与网关820类似的多个网关可以与交易所830类似的多个交易所通信。例如,每个网关都可以与一个或多个不同的交易所通信。例如,这种布置可以允许一个或多个交易设备810在一个以上的交易所进行交易(和/或提供连接到多个交易所的冗余连接)。
在某些实施例中,交易设备810包括一个或多个计算设备或者处理组件。换言之,交易设备810的功能可以通过一个以上的计算设备来执行。例如,一个计算设备可以生成要发送给交易所830的命令,而另一计算设备可以为用户提供图形用户界面。在某些实施例中,网关820包括一个或多个计算设备或者处理组件。换言之,网关820的功能可以通过一个以上的计算设备来执行。在某些实施例中,交易所830包括一个或多个计算设备或者处理组件。换言之,交易所830的功能可以通过一个以上的计算设备来执行。
在某些实施例中,网关820是交易设备810的一部分。例如,网关820的组件可以是与交易设备810相同的计算平台的一部分。作为另一个示例,网关820的功能可以通过交易设备810的组件来执行。在某些实施例中,网关820不存在。例如,当交易设备810不需要利用网关820与交易所830通信时,可以出现这种布置。例如,如果交易设备810适用于与交易所830直接通信。
在某些实施例中,网关820物理上位于与交易设备810相同的地点。在某些实施例中,网关820物理上位于与交易所830相同的地点。在某些实施例中,交易设备810物理上位于与交易所830相同的地点。在某些实施例中,网关820在物理上位于与交易设备810和交易所830两者分开的地点。
在某些实施例中,系统800可以包括通信架构所特有的其他设备,如中间件、防火墙、集线器、交换器、路由器、交易专用通信设备、调制解调器、安全管理器和/或加密/解密设备。
图9示出图8的电子交易系统800的示例性实现方式900。系统900包括交易设备810a-810e、网关820、电子交易所830、第一WAN路由器940、第二WAN路由器950和WAN链路960。交易设备810a和810b与网关820通信。网关820与交易所830通信。交易设备810c-810e使用WAN路由器940和WAN路由器950与网关820通信。
在操作中,交易设备810a-810e可以发送命令以在交易所830买入或者卖出可交易对象。例如,用户可以利用交易设备810a-810e发送命令。命令从交易设备810a和810b通过网关820发送到交易所830。命令从交易设备810c-810e通过WAN路由器950和940发送到网关820并通过网关820发送到交易所830。此外,市场数据从交易所830通过网关820发送到交易设备810a和810b以及WAN路由器940。市场数据从WAN路由器940发送到WAN路由器950,然后从WAN路由器950发送到交易设备810c-810e。
例如,在电子交易系统800的示例性实现方式900中,消息延迟和/或丢失可能发生在WAN路由器940。消息延迟和/或丢失可能是由于例如WAN路由器940丢弃消息或者由于WAN路由器940、WAN路由器950和/或WAN链路960故障。例如,WAN路由器940可能由于资源有限,如耗尽存储器或者处理能力和/或因为在WAN链路960上传送消息中的延迟而丢弃消息。作为另一个实例,WAN路由器940和/或WAN路由器950可能由于断电或者硬件故障而故障。作为另一个示例,WAN链路960可能因为线缆损坏或者硬件故障而故障。
电子交易系统可以采用上面讨论的各种技术和实施例。例如,图8的示例性电子交易系统800可以实现结合图2C描述的示例性方法。所述示例性方法为从图8的网关820发送到交易设备810的消息分配序列号。使用所述示例性方法为数据和心跳消息分配序列号允许图8的交易设备810在数据消息丢失和接收到后续消息的时间内检测到丢失消息。
作为另一个示例,图8的示例性电子交易系统800可以实现结合图2D描述的示例性方法。图8的交易设备810从网关820接收消息。交易设备810确定将从网关820发送的消息的预期序列号。交易设备810比较接收到的消息的序列号和预期序列号,以确定是否已经丢失数据消息。
作为另一个示例,图8的示例性电子交易系统800可以实现结合图4描述的示例性方法。所述示例性方法为通过图8的网关820发送给交易设备810的消息分配序列号和阶段号。使用所述示例性方法为消息序列分配序列号和阶段号允许图8的交易设备810检测出丢失消息序列。此外,所述示例性方法允许网关820在发送完整的消息序列后清除消息流状态。
作为另一个示例,图8的示例性电子交易系统800可以实现结合图5描述的示例性方法。图8的交易设备810从网关820接收消息。交易设备810分别比较从网关820接收到的消息的阶段号和序列号以及预期阶段号和序列号,以确定是否已经丢失消息。此外,该示例性方法允许交易设备810在接收到完整的消息序列后清除消息流状态。
描述的一些附图描绘代表可用于实现具体实施例的所有或者一部分的方法的示例性框图、系统和/或流程图。例如,示例性框图、系统和/或流程图的一个或多个组件、元件、模块和/或功能可以作为存储在有形的计算机可读介质上的一组计算机可读指令以硬件、固件、离散逻辑和/或其任何组合的形式单独或者组合实现。
例如,示例性框图、系统和/或流程图可以使用一个或多个专用集成电路(ASIC)、一个或多个可编程逻辑器件(PLD)、一个或多个现场可编程逻辑器件(FPLD)、离散逻辑、硬件和/或固件的任何组合实现。此外,示例性方法中的一些或者全部可以例如人工或者组合使用上述技术来实现。
例如,示例性框图、系统和/或流程图可以使用一个或多个处理器、控制器和/或其他的处理设备来执行。例如,所述示例可以使用例如存储在有形的计算机可读介质上的例如计算机可读指令的编码指令来实现。有形的计算机可读介质可以包括各种类型的易失性和非易失性存储介质,包括例如随机存取存储器(RAM)、只读存储器(ROM)、可编程只读存储器(PROM)、电可编程只读存储器(EPROM)、电可擦除只读存储器(EEPROM)、闪速存储器、硬盘驱动器、光学介质、磁带、文件服务器、任何其他有形的数据存储设备或者它们的任何组合。有形的计算机可读介质是非临时性的。
此外,尽管在上面参考附图描述了示例性框图、系统和/或流程图,但也可以采用其他的实现方式。例如,可以改变执行组件、元件、模块和/或功能的顺序和/或可以改变、删除、细分或者组合描述的组件、元件、模块和/或功能中的一些。此外,可以通过例如独立的处理线程、处理器、设备、离散逻辑和/或电路顺序地和/或并行地执行任何或全部组件、元件、模块和/或功能。
虽然已经公开了实施例,但可以进行各种改变并可以以等效物替代。此外,可以做出许多修改以适应特定的情况或者材料。因此,所公开的技术不限于所公开的具体实施例,而是包括落入所附权利要求的范围内的所有的实施例。
Claims (46)
1.一种消息发送方法,包括:
通过计算设备发送第一数据消息,其中第一数据消息包括具有预定义的初始序列号的值的第一数据消息序列号,其中第一数据消息包括第一数据消息阶段号;
通过计算设备发送第一停止消息,其中第一停止消息包括停止消息阶段号,其中停止消息阶段号与第一数据消息阶段号相同,并且第一停止消息指示在发送第一停止消息之后以及发送另一数据消息之前将不发送心跳消息;以及
通过计算设备发送第二数据消息,其中第二数据消息在第一停止消息后发送,其中第二数据消息包括具有预定义的初始序列号的值的第二数据消息序列号,其中第二数据消息包括第二数据消息阶段号,其中第二数据消息阶段号与第一数据消息阶段号不同。
2.如权利要求1所述的方法,其中第一数据消息包括与服务器的状态相关的数据。
3.如权利要求2所述的方法,其中服务器是计算设备。
4.如权利要求1所述的方法,其中第一停止消息在第一数据消息后发送。
5.如权利要求1所述的方法,其中第一数据消息包括指示第一数据消息也是第一停止消息的标志。
6.如权利要求1所述的方法,进一步包括通过计算设备发送第一心跳消息,其中第一心跳消息在发送第一数据消息后以第一时间间隔发送,其中第一心跳消息包括第一心跳消息阶段号,其中第一心跳消息阶段号与第一数据消息阶段号相同。
7.如权利要求6所述的方法,其中第一心跳消息包括第一心跳消息序列号,其中第一心跳消息序列号与第一数据消息序列号相同。
8.如权利要求6所述的方法,其中第一心跳消息在发送第一停止消息之前发送。
9.如权利要求6所述的方法,其中第一心跳消息包括指示第一心跳消息也是第一停止消息的标志。
10.如权利要求6所述的方法,进一步包括通过计算设备发送第二心跳消息,其中第二心跳消息在发送第一心跳消息后以第二时间间隔发送,其中第二心跳消息包括第二心跳消息阶段号,其中第二心跳消息阶段号与第一数据消息阶段号相同。
11.如权利要求10所述的方法,其中第二时间间隔从第一时间间隔增加固定量。
12.如权利要求10所述的方法,其中第二时间间隔根据第一时间间隔的倍数、第一时间间隔的指数、素数序列和斐波那契序列之一从第一时间间隔增加。
13.如权利要求1到12的任一项所述的方法,进一步包括通过计算设备清除与正在监视的对象相关联的消息流状态,其中消息流状态在发送停止消息后清除,其中消息流状态包括消息流所特有的信息,其中消息流是用于与正在监视的对象相关的消息的逻辑通信信道。
14.如权利要求13所述的方法,其中消息流所特有的信息包括第一数据消息阶段号。
15.如权利要求13所述的方法,其中清除消息流状态包括从计算设备的存储器解除分配消息流状态。
16.一种消息发送系统,包括:
第一数据消息发送器,其发送第一数据消息,其中第一数据消息包括具有预定义的初始序列号的值的第一数据消息序列号,其中第一数据消息包括第一数据消息阶段号;
第一停止消息发送器,其发送第一停止消息,其中第一停止消息包括停止消息阶段号,其中停止消息阶段号与第一数据消息阶段号相同,并且第一停止消息指示在发送第一停止消息之后以及发送另一数据消息之前将不发送心跳消息;以及
第二数据消息发送器,其发送第二数据消息,其中第二数据消息在第一停止消息后发送,其中第二数据消息包括具有预定义的初始序列号的值的第二数据消息序列号,其中第二数据消息包括第二数据消息阶段号,其中第二数据消息阶段号与第一数据消息阶段号不同。
17.如权利要求16所述的系统,其中第一数据消息包括与服务器的状态相关的数据。
18.如权利要求17所述的系统,其中服务器包括第一数据消息发送器、第一停止消息发送器和第二数据消息发送器。
19.如权利要求16所述的系统,其中第一停止消息在第一数据消息后发送。
20.如权利要求16所述的系统,其中第一数据消息包括指示第一数据消息也是第一停止消息的标志。
21.如权利要求16所述的系统,进一步包括发送第一心跳消息的第一心跳消息发送器,其中第一心跳消息在发送第一数据消息后以第一时间间隔发送,其中第一心跳消息包括第一心跳消息阶段号,其中第一心跳消息阶段号与第一数据消息阶段号相同。
22.如权利要求21所述的系统,其中第一心跳消息包括第一心跳消息序列号,其中第一心跳消息序列号与第一数据消息序列号相同。
23.如权利要求21所述的系统,其中第一心跳消息在发送第一停止消息之前发送。
24.如权利要求21所述的系统,其中第一心跳消息包括指示第一心跳消息也是第一停止消息的标志。
25.如权利要求21所述的系统,进一步包括发送第二心跳消息的第二心跳消息发送器,其中第二心跳消息在发送第一心跳消息后以第二时间间隔发送,其中第二心跳消息包括第二心跳消息阶段号,其中第二心跳消息阶段号与第一数据消息阶段号相同。
26.如权利要求25所述的系统,其中第二时间间隔从第一时间间隔增加固定量。
27.如权利要求25所述的系统,其中第二时间间隔根据第一时间间隔的倍数、第一时间间隔的指数、素数序列和斐波那契序列之一从第一时间间隔增加。
28.如权利要求16到27的任一项所述的系统,进一步包括清除与正在监视的对象相关联的消息流状态的消息流状态清除器,其中消息流状态在发送停止消息后清除,其中消息流状态包括消息流所特有的信息,其中消息流是用于与正在监视的对象相关的消息的逻辑通信信道。
29.如权利要求28所述的系统,其中消息流所特有的信息包括第一数据消息阶段号。
30.如权利要求28所述的系统,其中清除消息流状态包括从计算设备的存储器解除分配消息流状态。
31.一种消息发送系统,包括:
阶段号生成器,其提供消息的阶段号;
序列号生成器,其提供消息的序列号;
第一数据消息发送器,其发送第一数据消息,其中第一数据消息包括由序列号生成器提供的具有预定义的初始序列号的值的第一数据消息序列号,其中第一数据消息包括由阶段号生成器提供的第一数据消息阶段号;
第一停止消息发送器,其发送第一停止消息,其中第一停止消息包括由阶段号生成器提供的停止消息阶段号,其中停止消息阶段号与第一数据消息阶段号相同,并且第一停止消息指示在发送第一停止消息之后以及发送另一数据消息之前将不发送心跳消息;以及
第二数据消息发送器,其发送第二数据消息,其中第二数据消息在第一停止消息后发送,其中第二数据消息包括由序列号生成器提供的具有预定义的初始序列号的值的第二数据消息序列号,其中第二数据消息包括由阶段号生成器提供的第二数据消息阶段号,其中第二数据消息阶段号与第一数据消息阶段号不同。
32.如权利要求31所述的系统,其中第一数据消息包括与服务器的状态相关的数据。
33.如权利要求32所述的系统,其中服务器包括阶段号生成器、序列号生成器、第一数据消息发送器、第一停止消息发送器和第二数据消息发送器。
34.如权利要求31所述的系统,其中第一停止消息在第一数据消息后发送。
35.如权利要求31所述的系统,其中第一数据消息包括指示第一数据消息也是第一停止消息的标志。
36.如权利要求31所述的系统,进一步包括发送第一心跳消息的第一心跳消息发送器,其中第一心跳消息在发送第一数据消息后以第一时间间隔发送,其中第一心跳消息包括由阶段号生成器提供的第一心跳消息阶段号,其中第一心跳消息阶段号与第一数据消息阶段号相同。
37.如权利要求36所述的系统,其中第一心跳消息包括由序列号生成器提供的第一心跳消息序列号,其中第一心跳消息序列号与第一数据消息序列号相同。
38.如权利要求36所述的系统,其中第一心跳消息在发送第一停止消息之前发送。
39.如权利要求36所述的系统,其中第一心跳消息包括指示第一心跳消息也是第一停止消息的标志。
40.如权利要求36所述的系统,进一步包括发送第二心跳消息的第二心跳消息发送器,其中第二心跳消息在发送第一心跳消息后以第二时间间隔发送,其中第二心跳消息包括由阶段号生成器提供的第二心跳消息阶段号,其中第二心跳消息阶段号与第一数据消息阶段号相同。
41.如权利要求40所述的系统,其中第二时间间隔从第一时间间隔增加固定量。
42.如权利要求40所述的系统,其中第二时间间隔根据第一时间间隔的倍数、第一时间间隔的指数、素数序列和斐波那契序列之一从第一时间间隔增加。
43.如权利要求31到42的任一项所述的系统,进一步包括清除与正在监视的对象相关联的消息流状态的消息流状态清除器,其中消息流状态在发送停止消息后清除,其中消息流状态包括消息流所特有的信息,其中消息流是用于与正在监视的对象相关的消息的逻辑通信信道。
44.如权利要求43所述的系统,其中消息流所特有的信息包括第一数据消息阶段号。
45.如权利要求43所述的系统,其中清除消息流状态包括从计算设备的存储器解除分配消息流状态。
46.如权利要求31到42的任一项所述的系统,其中第一数据消息发送器、第一停止消息发送器和第二数据消息发送器是相同的消息发送器的一部分。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810004683.6A CN108055169A (zh) | 2011-09-02 | 2012-08-30 | 消息流完整性 |
CN201810004381.9A CN108055113A (zh) | 2011-09-02 | 2012-08-30 | 消息流完整性 |
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/225,047 | 2011-09-02 | ||
US13/225,047 US8745157B2 (en) | 2011-09-02 | 2011-09-02 | Order feed message stream integrity |
PCT/US2012/053169 WO2013033416A1 (en) | 2011-09-02 | 2012-08-30 | Message stream integrity |
Related Child Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810004381.9A Division CN108055113A (zh) | 2011-09-02 | 2012-08-30 | 消息流完整性 |
CN201810004683.6A Division CN108055169A (zh) | 2011-09-02 | 2012-08-30 | 消息流完整性 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103907306A CN103907306A (zh) | 2014-07-02 |
CN103907306B true CN103907306B (zh) | 2018-06-05 |
Family
ID=46832626
Family Applications (3)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201280053349.0A Expired - Fee Related CN103907306B (zh) | 2011-09-02 | 2012-08-30 | 消息流完整性 |
CN201810004683.6A Pending CN108055169A (zh) | 2011-09-02 | 2012-08-30 | 消息流完整性 |
CN201810004381.9A Pending CN108055113A (zh) | 2011-09-02 | 2012-08-30 | 消息流完整性 |
Family Applications After (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810004683.6A Pending CN108055169A (zh) | 2011-09-02 | 2012-08-30 | 消息流完整性 |
CN201810004381.9A Pending CN108055113A (zh) | 2011-09-02 | 2012-08-30 | 消息流完整性 |
Country Status (14)
Country | Link |
---|---|
US (5) | US8745157B2 (zh) |
EP (3) | EP2793417B1 (zh) |
JP (4) | JP5840782B2 (zh) |
KR (4) | KR101644996B1 (zh) |
CN (3) | CN103907306B (zh) |
AU (1) | AU2012301829B2 (zh) |
BR (4) | BR122015015223A2 (zh) |
CA (2) | CA2847350C (zh) |
ES (1) | ES2488672T3 (zh) |
HK (4) | HK1188520A1 (zh) |
IL (1) | IL230900A0 (zh) |
MX (3) | MX346140B (zh) |
SG (2) | SG10201607252VA (zh) |
WO (1) | WO2013033416A1 (zh) |
Families Citing this family (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8232962B2 (en) | 2004-06-21 | 2012-07-31 | Trading Technologies International, Inc. | System and method for display management based on user attention inputs |
US7725764B2 (en) * | 2006-08-04 | 2010-05-25 | Tsx Inc. | Failover system and method |
US8745157B2 (en) | 2011-09-02 | 2014-06-03 | Trading Technologies International, Inc. | Order feed message stream integrity |
US9021109B1 (en) * | 2012-01-23 | 2015-04-28 | Amazon Technologies, Inc. | Controlling requests through message headers |
US10755351B2 (en) * | 2012-03-29 | 2020-08-25 | Trading Technologies International, Inc. | Controlling operation of a trading algorithm based on operating condition rules |
US9756089B2 (en) * | 2012-08-28 | 2017-09-05 | Facebook, Inc. | Maintain persistent connections between servers and mobile clients |
US10467691B2 (en) * | 2012-12-31 | 2019-11-05 | Trading Technologies International, Inc. | User definable prioritization of market information |
EP3008879A4 (en) * | 2013-06-13 | 2017-01-04 | TSX Inc. | Failover system and method |
US10664548B2 (en) | 2013-07-12 | 2020-05-26 | Trading Technologies International, Inc. | Tailored messaging |
CN104703146B (zh) * | 2013-12-09 | 2019-03-08 | 腾讯科技(深圳)有限公司 | 信息推送方法、客户端及系统 |
US10142202B2 (en) * | 2014-01-30 | 2018-11-27 | Qualcomm Incorporated | Determination of end-to-end transport quality |
JP6514165B2 (ja) * | 2016-09-16 | 2019-05-15 | 株式会社東芝 | 通信装置および通信方法 |
CA2984275A1 (en) * | 2016-11-01 | 2018-05-01 | Tsx Inc. | Electronic trading system and method for mutual funds and exchange traded funds |
US10776428B2 (en) * | 2017-02-16 | 2020-09-15 | Nasdaq Technology Ab | Systems and methods of retrospectively determining how submitted data transaction requests operate against a dynamic data structure |
FR3074396A1 (fr) * | 2017-11-30 | 2019-05-31 | Orange | Procedes de detection, de gestion et de relais d'un probleme de communication multimedia, entites d'execution, de controle et de gestion de regles et programme d'ordinateur correspondants. |
CN111107509B (zh) * | 2018-10-26 | 2023-04-14 | 深圳市理邦精密仪器股份有限公司 | 一种监护数据传输方法、系统及探头 |
JP7288662B2 (ja) * | 2019-04-15 | 2023-06-08 | 明京電機株式会社 | 障害監視復旧システム、その方法、およびそのプログラム |
CN110806993B (zh) * | 2019-11-05 | 2021-06-01 | 积成电子股份有限公司 | 一种定制的modbus通信方法及利用该方法的低耦合远动装置 |
CN112511368A (zh) * | 2020-10-16 | 2021-03-16 | 深圳市科漫达智能管理科技有限公司 | 一种服务心跳监控方法及相关装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6389016B1 (en) * | 1998-10-14 | 2002-05-14 | Nortel Networks Limited | Data communication system and method for transporting data |
CN1997984A (zh) * | 2004-05-04 | 2007-07-11 | 诺基亚公司 | 面向用户的惩罚计数随机拒绝 |
CN1753391B (zh) * | 2004-09-21 | 2010-09-01 | 微软公司 | 使用具有同步频率的时钟的可靠的消息通信 |
Family Cites Families (99)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3268875B2 (ja) * | 1993-02-26 | 2002-03-25 | 株式会社野村総合研究所 | 同報ファイル転送方法およびシステム |
JPH0832531A (ja) * | 1994-07-20 | 1996-02-02 | Hitachi Ltd | 同報通信方式 |
JP3833746B2 (ja) * | 1996-07-31 | 2006-10-18 | 株式会社東芝 | チェックポイント通信処理システム、及びチェックポイント通信処理方法 |
US6072857A (en) * | 1996-12-19 | 2000-06-06 | Bellsouth Intellectual Property Management Corporation | Methods and system for monitoring the operational status of a network component in an advanced intelligent network |
US6574234B1 (en) | 1997-09-05 | 2003-06-03 | Amx Corporation | Method and apparatus for controlling network devices |
US6144669A (en) | 1997-12-12 | 2000-11-07 | Newbridge Networks Corporation | Prioritized PVC management queues for improved frame processing capabilities |
US6178439B1 (en) * | 1997-12-23 | 2001-01-23 | British Telecommunications Public Limited Company | HTTP session control |
US8862507B2 (en) * | 1999-06-14 | 2014-10-14 | Integral Development Corporation | System and method for conducting web-based financial transactions in capital markets |
WO2001010090A1 (en) * | 1999-07-28 | 2001-02-08 | Tomkow Terrance A | System and method for verifying delivery and integrity of electronic messages |
US6631431B1 (en) * | 1999-09-15 | 2003-10-07 | Koninklijke Philips Electronics N.V. | Semaphore coding method to ensure data integrity in a can microcontroller and a can microcontroller that implements this method |
US7107240B1 (en) * | 1999-10-06 | 2006-09-12 | Goldman Sachs & Co. | Order centric tracking system and protocol for communications with handheld trading units |
JP3509847B2 (ja) * | 2000-01-20 | 2004-03-22 | 日本電気株式会社 | Nmsシステムにおける通信の信頼性向上方法及びnmsシステム |
US7133407B2 (en) * | 2000-01-25 | 2006-11-07 | Fujitsu Limited | Data communications system |
US6983317B1 (en) * | 2000-02-28 | 2006-01-03 | Microsoft Corporation | Enterprise management system |
US6904593B1 (en) | 2000-03-24 | 2005-06-07 | Hewlett-Packard Development Company, L.P. | Method of administering software components using asynchronous messaging in a multi-platform, multi-programming language environment |
US8249975B1 (en) * | 2000-04-10 | 2012-08-21 | Stikine Technology, Llc | Automated first look at market events |
US7539638B1 (en) * | 2000-04-10 | 2009-05-26 | Stikine Technology, Llc | Representation of order in multiple markets |
US6907044B1 (en) * | 2000-08-04 | 2005-06-14 | Intellon Corporation | Method and protocol to support contention-free intervals and QoS in a CSMA network |
US6744765B1 (en) | 2000-08-24 | 2004-06-01 | Sun Microsystems, Inc. | Mechanism for completing messages in memory |
US8692695B2 (en) * | 2000-10-03 | 2014-04-08 | Realtime Data, Llc | Methods for encoding and decoding data |
JP2002135350A (ja) * | 2000-10-30 | 2002-05-10 | Sony Corp | データ配信方法、データ受信方法、端末状態通知サービス提供方法および通信端末 |
US6615221B2 (en) * | 2001-03-09 | 2003-09-02 | Hewlett-Packard Development Company, Lp. | Scalable transport layer protocol for multiprocessor interconnection networks that tolerates interconnection component failure |
US6782496B2 (en) | 2001-04-13 | 2004-08-24 | Hewlett-Packard Development Company, L.P. | Adaptive heartbeats |
WO2003017175A1 (en) * | 2001-08-14 | 2003-02-27 | Bloomberg Lp | Distribution and mapping of financial records from data stream |
JP2003067264A (ja) * | 2001-08-23 | 2003-03-07 | Hitachi Ltd | ネットワークシステムの監視間隔制御方法 |
US7747506B2 (en) * | 2002-06-05 | 2010-06-29 | The Nasdaq Omx Group, Inc. | Recipient status indicator system and method |
US8090640B2 (en) * | 2002-06-05 | 2012-01-03 | The Nasdaq Omx Group, Inc. | Order delivery in a securities market |
US8176186B2 (en) * | 2002-10-30 | 2012-05-08 | Riverbed Technology, Inc. | Transaction accelerator for client-server communications systems |
US7720043B2 (en) * | 2002-11-20 | 2010-05-18 | Qualcomm Incorporated | Use of idle frames for early transmission of negative acknowledgement of frame receipt |
JP4167511B2 (ja) * | 2003-02-25 | 2008-10-15 | 株式会社東芝 | 伝送路二重化判定処理方法 |
US20050021836A1 (en) * | 2003-05-01 | 2005-01-27 | Reed Carl J. | System and method for message processing and routing |
US20040236829A1 (en) * | 2003-05-13 | 2004-11-25 | Yikang Xu | Reliable delivery of multi-cast conferencing data |
JP2004364168A (ja) * | 2003-06-06 | 2004-12-24 | Daikin Ind Ltd | 通信制御装置、通信制御システム及び通信制御方法 |
CN1820262A (zh) * | 2003-06-09 | 2006-08-16 | 范拉诺公司 | 事件监控及管理 |
JP2005109849A (ja) * | 2003-09-30 | 2005-04-21 | Fujitsu Ltd | 送信サーバ用データ交換処理プログラムおよび受信サーバ用データ交換処理プログラム |
US7778915B2 (en) * | 2003-10-14 | 2010-08-17 | Ften, Inc. | Financial data processing system |
US9350565B1 (en) * | 2003-10-14 | 2016-05-24 | Amazon Technologies, Inc. | Method and system for reliable distribution of messages |
US7355975B2 (en) | 2004-04-30 | 2008-04-08 | International Business Machines Corporation | Method and apparatus for group communication with end-to-end reliability |
US7477749B2 (en) * | 2004-05-12 | 2009-01-13 | Nokia Corporation | Integrity protection of streamed content |
US8949395B2 (en) * | 2004-06-01 | 2015-02-03 | Inmage Systems, Inc. | Systems and methods of event driven recovery management |
GB0414057D0 (en) | 2004-06-23 | 2004-07-28 | Koninkl Philips Electronics Nv | Method of,and system for,communicating data, and a station for transmitting data |
US20060056403A1 (en) * | 2004-09-13 | 2006-03-16 | Pleasant Daniel L | System and method for robust communication via a non-reliable protocol |
US8095601B2 (en) * | 2004-10-22 | 2012-01-10 | Microsoft Corporation | Inter-proximity communication within a rendezvous federation |
US8458467B2 (en) * | 2005-06-21 | 2013-06-04 | Cisco Technology, Inc. | Method and apparatus for adaptive application message payload content transformation in a network infrastructure element |
US8082304B2 (en) * | 2004-12-10 | 2011-12-20 | Cisco Technology, Inc. | Guaranteed delivery of application layer messages by a network element |
US7292665B2 (en) * | 2004-12-16 | 2007-11-06 | Genesis Microchip Inc. | Method and apparatus for reception of data over digital transmission link |
US8700738B2 (en) * | 2005-02-01 | 2014-04-15 | Newsilike Media Group, Inc. | Dynamic feed generation |
US8239449B2 (en) | 2005-07-20 | 2012-08-07 | Wms Gaming Inc. | Transmission protocol for a gaming system |
US9471925B2 (en) * | 2005-09-14 | 2016-10-18 | Millennial Media Llc | Increasing mobile interactivity |
US8200563B2 (en) * | 2005-09-23 | 2012-06-12 | Chicago Mercantile Exchange Inc. | Publish and subscribe system including buffer |
US20070174429A1 (en) * | 2006-01-24 | 2007-07-26 | Citrix Systems, Inc. | Methods and servers for establishing a connection between a client system and a virtual machine hosting a requested computing environment |
CN101060424A (zh) * | 2006-04-21 | 2007-10-24 | 英业达股份有限公司 | 一种实现负载平衡与高可用性的系统及其方法 |
US7752123B2 (en) * | 2006-04-28 | 2010-07-06 | Townsend Analytics Ltd. | Order management system and method for electronic securities trading |
US7725764B2 (en) * | 2006-08-04 | 2010-05-25 | Tsx Inc. | Failover system and method |
US7434096B2 (en) * | 2006-08-11 | 2008-10-07 | Chicago Mercantile Exchange | Match server for a financial exchange having fault tolerant operation |
US8041985B2 (en) * | 2006-08-11 | 2011-10-18 | Chicago Mercantile Exchange, Inc. | Match server for a financial exchange having fault tolerant operation |
US9479341B2 (en) * | 2006-08-22 | 2016-10-25 | Centurylink Intellectual Property Llc | System and method for initiating diagnostics on a packet network node |
US8015294B2 (en) * | 2006-08-22 | 2011-09-06 | Embarq Holdings Company, LP | Pin-hole firewall for communicating data packets on a packet network |
US9026575B2 (en) | 2006-09-28 | 2015-05-05 | Alcatel Lucent | Technique for automatically configuring a communication network element |
US20160277261A9 (en) * | 2006-12-29 | 2016-09-22 | Prodea Systems, Inc. | Multi-services application gateway and system employing the same |
US9648147B2 (en) * | 2006-12-29 | 2017-05-09 | Futurewei Technologies, Inc. | System and method for TCP high availability |
WO2009100444A1 (en) * | 2008-02-08 | 2009-08-13 | Verbal World, Inc. | Methods and apparatus for exhange of electronic communications |
KR20090000228A (ko) * | 2007-02-05 | 2009-01-07 | 삼성전자주식회사 | 무결성 검증이 가능한 컨텐츠 제공 방법 및 컨텐츠 이용방법과 그 장치 |
JP4808645B2 (ja) * | 2007-02-15 | 2011-11-02 | 富士通株式会社 | 装置監視ネットワークシステム及びsnmpのトラップ管理方法 |
US7809841B1 (en) | 2007-03-29 | 2010-10-05 | Trading Technologies International, Inc. | System and method for communicating with an electronic exchange in an electronic trading environment |
US7916741B2 (en) * | 2007-04-02 | 2011-03-29 | William Marsh Rice University | System and method for preventing count-to-infinity problems in ethernet networks |
US8275905B2 (en) * | 2007-04-17 | 2012-09-25 | Oracle International Corporation | System and method for store-and-forward for highly available message production |
US8307114B2 (en) * | 2007-05-22 | 2012-11-06 | International Business Machines Corporation | High availability message transmission |
US7782851B2 (en) * | 2007-06-26 | 2010-08-24 | At&T Intellectual Property I, L.P. | System and method of detecting lost video data packets |
US20090018944A1 (en) * | 2007-07-13 | 2009-01-15 | Omx Technology Ab | Method and system for trading |
US8782274B2 (en) * | 2007-10-19 | 2014-07-15 | Voxer Ip Llc | Method and system for progressively transmitting a voice message from sender to recipients across a distributed services communication network |
US7907533B2 (en) | 2007-11-28 | 2011-03-15 | Tekelec | Methods, systems, and computer program products for performing IP link proving using heartbeat messages |
CN101188527B (zh) * | 2007-12-24 | 2012-03-14 | 杭州华三通信技术有限公司 | 一种心跳检测方法和装置 |
FR2926939A1 (fr) * | 2008-01-30 | 2009-07-31 | Canon Kk | Procede de transmission de donnees avec anticipation des acquittements, dispositif d'entree, produit programme d'ordinateur et moyen de stockage correspondants |
JP4964164B2 (ja) * | 2008-02-15 | 2012-06-27 | 三菱電機株式会社 | 通信装置の冗長構成制御方法 |
US7983622B1 (en) * | 2008-03-12 | 2011-07-19 | Sprint Spectrum L.P. | Using phase difference to determine valid neighbors |
US8958460B2 (en) * | 2008-03-18 | 2015-02-17 | On-Ramp Wireless, Inc. | Forward error correction media access control system |
JP4557028B2 (ja) * | 2008-03-19 | 2010-10-06 | ソニー株式会社 | 情報処理装置、情報処理方法、クライアント機器、情報処理システム |
US8022822B2 (en) | 2008-06-27 | 2011-09-20 | Microsoft Corporation | Data collection protocol for wireless sensor networks |
US8165080B2 (en) | 2008-08-22 | 2012-04-24 | Qualcomm Incorporated | Addressing schemes for wireless communication |
US9119165B2 (en) * | 2009-09-10 | 2015-08-25 | Nextnav, Llc | Coding in a wide area positioning system (WAPS) |
EP2254046B1 (en) * | 2009-05-18 | 2014-07-30 | Amadeus S.A.S. | A method and system for managing the order of messages |
US8880524B2 (en) | 2009-07-17 | 2014-11-04 | Apple Inc. | Scalable real time event stream processing |
US20110040668A1 (en) * | 2009-08-17 | 2011-02-17 | Darren Lee | Automated spread trading system |
US8417618B2 (en) * | 2009-09-03 | 2013-04-09 | Chicago Mercantile Exchange Inc. | Utilizing a trigger order with multiple counterparties in implied market trading |
US9979589B2 (en) * | 2009-12-10 | 2018-05-22 | Royal Bank Of Canada | Coordinated processing of data by networked computing resources |
US20110178915A1 (en) * | 2010-01-15 | 2011-07-21 | Lime Brokerage Holding Llc | Trading Order Validation System and Method and High-Performance Trading Data Interface |
US8595134B2 (en) * | 2010-02-12 | 2013-11-26 | Mastercard International Incorporated | Apparatus and method for bill presentment and payment |
US8595234B2 (en) * | 2010-05-17 | 2013-11-26 | Wal-Mart Stores, Inc. | Processing data feeds |
US8732324B2 (en) * | 2010-05-25 | 2014-05-20 | Cisco Technology, Inc. | Keep-alive hiatus declaration |
US9373102B2 (en) * | 2010-07-30 | 2016-06-21 | Mcgraw Hill Financial, Inc. | System and method using a simplified XML format for real-time content publication |
US9160806B1 (en) * | 2010-08-04 | 2015-10-13 | Open Invention Network, Llc | Method and apparatus of organizing and delivering data to intended recipients |
CN102014416B (zh) * | 2010-12-03 | 2014-07-16 | 中兴通讯股份有限公司 | 一种对连接进行双向检测的方法及系统 |
US10453131B2 (en) * | 2011-02-28 | 2019-10-22 | Nyse Group, Inc. | Apparatuses, methods and systems for a locked-in trade facilitation engine |
US8676937B2 (en) * | 2011-05-12 | 2014-03-18 | Jeffrey Alan Rapaport | Social-topical adaptive networking (STAN) system allowing for group based contextual transaction offers and acceptances and hot topic watchdogging |
US8799135B2 (en) * | 2011-06-13 | 2014-08-05 | Trading Technologies International, Inc | Generating market information based on causally linked events |
US8812708B2 (en) * | 2011-07-22 | 2014-08-19 | Cisco Technology, Inc. | Transient unpruning for faster layer-two convergence |
US8745157B2 (en) | 2011-09-02 | 2014-06-03 | Trading Technologies International, Inc. | Order feed message stream integrity |
US9461876B2 (en) * | 2012-08-29 | 2016-10-04 | Loci | System and method for fuzzy concept mapping, voting ontology crowd sourcing, and technology prediction |
-
2011
- 2011-09-02 US US13/225,047 patent/US8745157B2/en not_active Expired - Fee Related
-
2012
- 2012-08-30 BR BR122015015223A patent/BR122015015223A2/pt not_active IP Right Cessation
- 2012-08-30 CN CN201280053349.0A patent/CN103907306B/zh not_active Expired - Fee Related
- 2012-08-30 CA CA2847350A patent/CA2847350C/en not_active Expired - Fee Related
- 2012-08-30 CA CA3027550A patent/CA3027550A1/en not_active Abandoned
- 2012-08-30 CN CN201810004683.6A patent/CN108055169A/zh active Pending
- 2012-08-30 EP EP14164824.6A patent/EP2793417B1/en not_active Not-in-force
- 2012-08-30 BR BR122015015215A patent/BR122015015215A2/pt not_active Application Discontinuation
- 2012-08-30 BR BR112014004455A patent/BR112014004455A2/pt not_active Application Discontinuation
- 2012-08-30 WO PCT/US2012/053169 patent/WO2013033416A1/en active Application Filing
- 2012-08-30 BR BR122015015211A patent/BR122015015211A2/pt not_active IP Right Cessation
- 2012-08-30 SG SG10201607252VA patent/SG10201607252VA/en unknown
- 2012-08-30 JP JP2014528605A patent/JP5840782B2/ja not_active Expired - Fee Related
- 2012-08-30 MX MX2015017479A patent/MX346140B/es unknown
- 2012-08-30 SG SG2014011753A patent/SG2014011753A/en unknown
- 2012-08-30 EP EP18199171.2A patent/EP3496315A1/en not_active Withdrawn
- 2012-08-30 EP EP12758719.4A patent/EP2652895B1/en not_active Not-in-force
- 2012-08-30 KR KR1020147008784A patent/KR101644996B1/ko active IP Right Grant
- 2012-08-30 AU AU2012301829A patent/AU2012301829B2/en not_active Ceased
- 2012-08-30 KR KR1020197018370A patent/KR20190076077A/ko not_active Application Discontinuation
- 2012-08-30 ES ES12758719.4T patent/ES2488672T3/es active Active
- 2012-08-30 KR KR1020167020626A patent/KR101875915B1/ko active IP Right Grant
- 2012-08-30 MX MX2014002222A patent/MX2014002222A/es active IP Right Grant
- 2012-08-30 KR KR1020187018908A patent/KR101995058B1/ko active IP Right Grant
- 2012-08-30 CN CN201810004381.9A patent/CN108055113A/zh active Pending
-
2014
- 2014-02-10 IL IL230900A patent/IL230900A0/en unknown
- 2014-02-12 HK HK14101287.4A patent/HK1188520A1/zh not_active IP Right Cessation
- 2014-02-25 MX MX2015006107A patent/MX337872B/es unknown
- 2014-04-24 US US14/260,768 patent/US9154393B2/en not_active Expired - Fee Related
-
2015
- 2015-03-26 HK HK15103070.0A patent/HK1202725A1/zh not_active IP Right Cessation
- 2015-05-22 JP JP2015104809A patent/JP6091545B2/ja not_active Expired - Fee Related
- 2015-08-31 US US14/840,787 patent/US10152751B2/en not_active Expired - Fee Related
-
2016
- 2016-12-16 JP JP2016244575A patent/JP6313842B2/ja active Active
-
2018
- 2018-01-18 JP JP2018006579A patent/JP2018077905A/ja active Pending
- 2018-10-25 US US16/170,354 patent/US10311518B2/en not_active Expired - Fee Related
- 2018-11-13 HK HK18114468.4A patent/HK1255332A1/zh unknown
- 2018-11-13 HK HK18114469.3A patent/HK1255333A1/zh unknown
-
2019
- 2019-04-09 US US16/379,296 patent/US20190236707A1/en not_active Abandoned
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6389016B1 (en) * | 1998-10-14 | 2002-05-14 | Nortel Networks Limited | Data communication system and method for transporting data |
CN1997984A (zh) * | 2004-05-04 | 2007-07-11 | 诺基亚公司 | 面向用户的惩罚计数随机拒绝 |
CN1753391B (zh) * | 2004-09-21 | 2010-09-01 | 微软公司 | 使用具有同步频率的时钟的可靠的消息通信 |
Also Published As
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103907306B (zh) | 消息流完整性 | |
US20230108335A1 (en) | Trade Action Confirmation Tool | |
US11551299B2 (en) | Trade action confirmation tool | |
US7536343B2 (en) | Protocol-independent asset trading system and methods | |
AU2016269451B2 (en) | Message stream integrity | |
AU2014265010B2 (en) | Message stream integrity |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20180605 Termination date: 20190830 |
|
CF01 | Termination of patent right due to non-payment of annual fee |