CN112602063B - 用于应用执行的发布-订阅框架 - Google Patents
用于应用执行的发布-订阅框架 Download PDFInfo
- Publication number
- CN112602063B CN112602063B CN201980043110.7A CN201980043110A CN112602063B CN 112602063 B CN112602063 B CN 112602063B CN 201980043110 A CN201980043110 A CN 201980043110A CN 112602063 B CN112602063 B CN 112602063B
- Authority
- CN
- China
- Prior art keywords
- processing
- pipeline
- message
- session
- pipeline stages
- 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
Classifications
-
- 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
-
- 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/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
- G06F9/5066—Algorithms for mapping a plurality of inter-dependent sub-tasks onto a plurality of physical CPUs
-
- 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/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- 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/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/5038—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
-
- 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/544—Buffers; Shared memory; Pipes
-
- 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
- G06Q10/00—Administration; Management
- G06Q10/06—Resources, workflows, human or project management; Enterprise or organisation planning; Enterprise or organisation modelling
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5017—Task decomposition
-
- 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
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/548—Queue
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Business, Economics & Management (AREA)
- Accounting & Taxation (AREA)
- Finance (AREA)
- Economics (AREA)
- Strategic Management (AREA)
- Marketing (AREA)
- General Business, Economics & Management (AREA)
- Development Economics (AREA)
- Technology Law (AREA)
- Multimedia (AREA)
- Human Resources & Organizations (AREA)
- Entrepreneurship & Innovation (AREA)
- Game Theory and Decision Science (AREA)
- Educational Administration (AREA)
- Operations Research (AREA)
- Quality & Reliability (AREA)
- Tourism & Hospitality (AREA)
- Computer And Data Communications (AREA)
- Multi Processors (AREA)
Abstract
所描述的技术涉及发布‑订阅消息框架,在该发布‑订阅消息框架中,通过彼此异步地且同时地执行应用的相应处理级来运行被分解成多个处理级的应用。相应处理级之间的通信可以排他地根据发布‑订阅执行模型。所描述的发布‑订阅框架规定了要以多进程和/或多线程方式执行的处理级,同时还使得能够将处理级分发到多处理器/多核处理环境中的相应处理资源。描述了示例电子交易应用和对应的示例交换网关应用。
Description
相关申请的交叉引用
本申请要求于2018年4月27日提交的美国临时专利申请62/663,422的优先权,其全部内容通过引用并入本文。
技术领域
所描述的技术涉及促进应用的部件的异步同时执行的发布-订阅框架,诸如例如,用于股票和其他可进行贸易的票据的电子交易应用。
背景技术
加速应用是应用架构师、程序员和硬件工程师一直存在的目标。应用可以从开始到结束越快地完成其执行,应用的和硬件资源的效率被提高。出于使指令在计算机上更快地执行的明确目的,已经进行了许多硬件改进。软件设计、编译和执行也都已经进展到加速执行。已知许多技术用于设计应用,以便实现某种水平的加速。
在一些针对应用程序的架构软件的众所周知的技术中,应用被分解成多个处理级,其中每一个级接收消息(入口消息)的集合作为输入,使用所接收的输入消息执行一些处理,并且产生另一消息(出口消息)的集合作为输出。这种类型的处理类似于事件或消息驱动系统中的方法,其中应用被设计成具有“主循环”,该“主循环”具有“事件”的相关联队列,该“事件”的相关联队列通常以它们排队的顺序被处理。然而,在一些情况下,“主循环”可能不提供最佳加速向上。
因此,寻求用于加速应用执行的更多新的和有用的技术。
EP3128423公开了适用于事件处理的数据处理系统和方法。所公开的示例规定了服务器计算设备之间的数据处理操作的分发。在一种情况下,多个处理级使用服务器计算设备上的计算实例来实现。在这种情况下,计算实例被分配到服务器计算设备以便于并行地执行至少一个数据处理操作。
版权公告
本专利文档的公开的一部分包含受版权保护管制的材料。版权所有者不拒绝由任何人对专利文件或专利公开进行精确复制(如其出现在专利商标局的专利文档或记录中那样),但是在别的方面无论如何都保留所有版权。
发明内容
所描述的技术涉及发布-订阅消息框架,在该发布-订阅消息框架中,通过彼此异步地且同时地执行应用的相应处理级来运行被分解成多个处理级的应用。相应处理级之间的通信可以排他地根据发布-订阅执行模型。所描述的发布-订阅框架规定了要以多进程和/或多线程方式执行的处理级,同时还使得能够将处理级分发到多处理器/多核处理环境中的相应处理资源。
根据一方面,提供有如权利要求1中所定义的电子交易系统。根据另一方面,提供有如权利要求12中所定义的在电子交易系统上处理数据消息的方法。根据仍有的另一方面,提供有如权利要求14中所定义的非暂时性计算机可读存储介质。
根据一示例,提供了一种电子交易系统。电子交易系统包括共享存储器、通信基础设施和处理系统,处理系统包括通过通信基础设施耦合到共享存储器的多个处理资源。处理系统被配置成在处理资源中的每一个上执行应用的处理流水线的多个流水线级中的至少一个流水线处理级;使用共享存储器经由发布-订阅消息规定多个流水线级中的任何两个之间的通信;响应于接收到的数据消息,通过异步地且同时地执行多个流水线级来处理数据消息来完成对应用中的数据消息的处理以生成输出消息;以及传输输出消息。
根据另一示例,提供了一种在电子交易系统上处理数据消息的方法。电子交易系统具有共享存储器、通信基础设施和处理系统,处理系统包括通过通信基础设施耦合到共享存储器的多个处理资源。该方法包括:在处理资源中的每一个上执行应用的处理流水线的多个流水线级中的至少一个流水线处理级;使用共享存储器经由发布-订阅消息规定多个流水线级中的任何两个之间的通信;响应于接收到的数据消息,通过异步地且同时地执行多个流水线级来处理数据消息来完成对应用中的数据消息的处理以生成输出消息;以及传输输出消息。
根据另一示例,提供了一种非暂时性计算机可读存储介质。存储介质存储指令,指令在通过包括由通信基础设施耦合到共享存储器的多个处理资源的处理系统执行时使得电子交易系统的处理系统执行操作,操作包括:在处理资源中的每一个上执行应用的处理流水线的多个流水线级中的至少一个流水线处理级;使用共享存储器经由发布-订阅消息规定多个流水线级中的任何两个之间的通信;响应于接收到的数据消息,通过异步地且同时地执行多个流水线级来处理数据消息来完成对应用中的数据消息的处理以生成输出消息;以及传输输出消息。
提供该概述来以简化的形式介绍下面在具体实施例中进一步描述的概念的选择。该发明内容既不旨在标识所要求保护的主题的关键特征或必要特征,也不旨在用于限制所要求保护的主题的范围;而是,该发明内容旨在提供本文档中描述的主题的概要。因此,应当理解,上述特征仅仅是示例,并且本文所描述的主题的其他特征、方面和优点将从以下具体实施例、附图和权利要求中变得显而易见。
附图说明
图1图示了根据一些示例实施例的示例计算环境,其中发布-订阅框架用于应用部件的异步和同时执行;
图2图示了根据一些示例实施例的应用的高级视图,将应用分解成供在诸如图1所示的环境的环境中使用的多个级,并且这些级被部署在多核和/或多处理器处理环境中;
图3图示了根据一些示例实施例的用于执行示例应用的级的对象或实体的一些数据结构以及数据结构之间的一些关系的示意性表示;
图4图示了根据一些示例实施例的表示发布和订阅的示例活动流程;
图5图示了根据一些示例实施例的表示添加新发布者的示例活动流程;
图6图示了根据一些示例实施例的部署在发布-订阅框架中的示例应用,诸如图1中所示的网关应用;
图7图示了根据一些示例实施例的用于会话的初始连接和授权的示例操作序列;
图8图示了根据一些示例实施例的用于图6中所示的网关应用中的用户会话建立的示例操作序列;
图9图示了根据一些示例实施例的用于图6中所示的网关应用中的网关业务入口流水线的示例操作序列;
图10图示了根据一些示例实施例的用于图6中所示的网关应用中的网关业务出口流水线的示例操作序列;
图11图示了根据一些示例实施例的部署在发布-订阅框架中的示例应用,诸如图1中所示的电子交易应用;
图12图示了根据一些示例实施例的用于图11的电子交易应用中的匹配引擎流水线的示例操作序列;
图13图示了根据一些示例实施例的用于图11的电子交易应用中的动态匹配引擎流水线的示例操作序列;以及
图14示意性地图示了根据一些示例实施例的可用于实现发布-订阅框架的计算机。
具体实施方式
在下面的描述中,出于解释和非限制的目的,阐述了具体细节,诸如特定节点、功能实体、技术、协议等,以便提供对所描述的技术的理解。将对于本领域技术人员显而易见的是,除了下面描述的具体细节之外,可以实践其他实施例。在其他实例中,省略了对众所周知的方法、设备、技术等的详细描述,以免用不必要的细节而使描述模糊不清。
在本具体实施例中单独使用各部分以便使读者熟悉关于每一个部分的一般主题;如下面将看到的,对许多特征的描述跨越多个部分,并且标题不应被解读为影响包括在任何部分中的描述的含义。
概述
除了其他主题之外,本文中描述的技术涉及发布-订阅消息框架(在本文中有时被称为“发布-订阅框架”),其中可以通过彼此异步地和同时地执行应用的相应处理级来运行被分解成多个处理级的应用。在许多情况下,与在另一种类型的框架(诸如例如,纯过程框架)中执行的相同应用相比,处理级的异步和同时执行导致缩短用来完成应用的时间。相应处理级之间的通信可以排他地根据发布-订阅执行模型。所描述的发布-订阅框架规定了要以多进程和/或多线程方式执行的处理级,同时还使得能够将处理级分发到多处理器/多核处理环境中的相应处理资源。
这里描述的系统和技术可以特别好地适合于业务速度具有高重要性的高业务量应用,诸如用于从事股票和/或其他可进行贸易的票据的贸易的电子交易。响应于可以同时从许多用户接收的请求,这样的应用需要实时或接近实时的大量处理。在示例实施例中,这种应用中所需的处理可以被表征为可以被分解成多个流水线处理级的处理流水线。流水线处理级(每一个级具有用于一个或多个功能区域的处理逻辑)然后可以相对于彼此以异步和同时的方式执行,其中发布-订阅框架规定流水线级的组之间的相互通信,从而产生贸易活动的显著加速。将理解的是,这里所描述的电子交易应用和相关联的网关应用是作为示例提供的,并且该实施例不限于电子交易和/或网关应用。
图1图示了示例实施例中的计算机环境,其中根据发布-订阅框架实现的电子交易应用服务客户端请求,诸如例如,包括从用户接收的订单的数据消息。用户可以向网关(其也可以根据实施例的发布-订阅框架实现)提供数据消息流,例如,用于在电子交易引擎上进行处理的订单。网关可以在将请求转发到电子交易应用(有时称为“交易引擎”)之前聚合和/或预处理客户端请求。图2示意性地图示了将诸如图1的电子交易应用或网关应用的应用程序示例分解成多个处理级,每一个处理级具有其自己的入口/出口消息接口的集合。图2还图示了将分解的处理级示例分发到相应处理核中,以便以同时和异步的方式执行处理级。图3示出了可以用于执行应用(诸如图1中的应用)的发布-订阅框架中的一些对象以及对象之间的关系。图4和图5图示了发布者、订阅者和发布-订阅框架中的会话部件之间的示例发布-订阅消息交换。图6图示了诸如图1中所示的网关应用的示例网关应用中的示例消息流。图7-10示出了图6的网关应用的分解的处理级之中的各种消息交换序列。图11图示了诸如图1的应用的示例电子交易应用中的示例消息流。图12-13示出了电子交易应用的分解的处理级之中的各种示例消息交换序列。图14图示了可以用于实现图1的客户端设备、网关或服务器中的任一个的计算机。
图1的描述
图1图示了根据某些示例实施例的计算环境。非限制性计算环境100包括服务器基础设施102中的一个或多个服务器、通过网络106连接到服务器基础设施的一个或多个网关系统104、以及包括客户端设备108和110的客户端系统。服务器基础设施102中的服务器可以与网关系统104以及客户端设备108和110通信,使得客户端设备108和110上的用户可以与在服务器基础设施102中执行的电子交易应用116交互。
示例计算环境100通过在服务器基础设施102中执行电子交易应用116来提供用于股票、衍生物或其他金融或商品票据的电子贸易的电子交易。至少在一些实施例中,电子交易应用116可以规定电子连续贸易,其中在正在进行的实时基础上尝试至少一些类型的可进行贸易的票据的贸易。例如,包含来自客户端设备108和110和/或网关系统104的传入客户端请求流中的订单(例如,买入订单或卖出订单)的每一个数据消息在接收时立即(例如,实时地或接近实时地,而没有任何介入的非必要处理和/或存储器/存储访问活动)与订单簿进行比较以确定匹配。示例实施例被配置成使用数据结构和匹配技术等,其可以高效地处理可进行贸易的票据记录,该可进行贸易的票据记录包括大量的多个同类和/或异类属性(例如,每秒数百或数千个订单;每秒几十万个订单)和实时时间约束(例如,在1秒内处理大部分传入订单;利用不超过第一预定数量的微/纳秒的平均处理时间来处理订单,并且使得没有订单超过第二预定数量的微/纳秒处理时间;在一秒的预定部分内处理特定类型的所有订单等)。服务器基础设施102还可以操作以执行其他相关联的任务,诸如更新库存记录,并且通知其他系统关于所执行的订单,使得可以跟踪递送等。订单簿服务器、订单匹配引擎(简称为“匹配引擎”)、订单管理服务器、,位置管理服务器和履行管理服务器中的一个或多个可以被包括在电子交易应用116中或者可以与电子交易应用116交互,从而在服务器基础设施102上提供电子交易功能性。
电子交易应用116或作为应用116的一部分的匹配引擎(未单独示出)可以操作以将每一个传入订单与来自订单簿数据库(也称为“固定订单数据库”)的订单进行匹配。例如,匹配引擎可以操作以将传入的买入订单与存储在订单簿数据库中的一个或多个卖出订单进行匹配,或者将传入的卖出订单与存储在订单簿数据库中的一个或多个买入订单进行匹配。可以根据来自匹配规则数据库的一个或多个预定或动态确定的匹配规则来执行匹配。在一些示例实施例中,服务器中的一个或多个可以提供接口(例如,应用编程接口——API),该接口可以由服务器基础设施102中的其他服务器和/或外部计算机用来与其交互。例如,在实时订单匹配进程中使用的订单匹配引擎和订单簿服务器中的一个或两个可以经由API与服务器基础设施102中的其他服务器和/或外部计算机中的每一个进行通信。
服务器基础设施102以高速处理(例如,一秒几千次或几十万次匹配)传入订单的能力(这使得可以依赖于匹配进程来严格承兑以其接收相应订单的时间排序并且在订单已经由用户传输之后的最小时间间隔内处理订单)是非常重要的,并且可能支持在系统上进行的贸易的准确性和有效性。
服务器基础设施102可以包括通过网络和/或点对点连接彼此通信地连接的一个或多个物理服务器计算机(例如,计算机112和114)。物理服务器计算机可以在地理上共同定位或分发。服务器基础设施102中的服务器之间的互连可以是彼此间经由互联网或通过诸如局域网、广域网或点对点连接(例如,连接125)之类的一些其他网络。在一些实施例中,多个服务器与高速点对点连接和/或高速广播总线互连。
计算机112和114中的每一个包括具有至少一个单核或多核处理器(例如,处理器118和122)的处理系统,并且包括系统软件(例如,系统软件120和124)。在一些实施例中,计算机112和114可以是对称多处理器(SMP)中的相应处理单元。在一些实施例中,计算机112和114可以是用高速连接互连的独立计算机。
系统软件120可以包括用于计算机112的操作系统,并且可以提供系统调用等,通过该系统调用,诸如应用116之类的应用可以从操作系统请求服务以控制(一个或多个)处理器118和/或外围设备。系统软件120还可以规定在相同或不同处理器/处理器核上执行的进程和/或线程之间的进程间通信,并且还可以规定通过一个或多个网络接口在单独的计算机之间的通信。因此,系统软件120规定执行内核(例如,执行应用116的执行内核)以访问系统资源(例如,处理器、处理器核、存储器、存储装置、通信接口等),以便根据需要执行进程内、进程间、线程间和/或主机间通信。系统软件124可以类似于系统软件120,并且还可以具有系统软件120的上述能力。
根据实施例,应用116包括或操作为基于发布-订阅消息交换框架的发布-订阅执行内核。应用116可以使用系统软件120(和/或124)来访问或控制系统资源,诸如存储器(图1中未单独示出)以及处理器118和122,使得应用116的各个部件可以以为最佳(或改进的)并发性、速度和/或可靠性作准备的方式位于特定处理资源上。
执行内核(有时简称为“内核”)形成根据实施例的流水线化数据驱动应用架构的基础。执行内核旨在用于类似的范例,诸如事件/消息驱动系统中的方法,其中应用被设计成具有“主循环”(该“主循环”具有“事件”的相关联的队列,所述“事件”的相关联的队列通常以使它们入队(enqueue)的顺序处理),但是具有异步地和同时地处理不同应用级的多个线程。为了实现这一点,由执行内核采用基于消息的范例来实现线程、进程和主机之间的执行和消息传送(messaging)的传递。不同处理级之间的通信路径被表达为发布和订阅可以由应用设计者或分解程序逻辑选择的“主题”。至少在一些实施例中,两个或更多个处理级之间的所有通信被表达为发布和订阅主题。也就是说,在某些示例实施例中,其中信息从一个处理级交换到另一个处理级的唯一方式是通过发布-订阅框架,并且不存在可以通过其获得这样的信息的副信道。
示例实施例的执行内核中的消息传送拓扑结构在逻辑上是广播架构,其中多个订阅者可以订阅相同的消息。这实现了类似逻辑总线的架构,其中消息可以根据需要分叉到多个端点或到单个端点。由于拓扑结构被表达为发布和订阅端点,所以应用可能仅需要间接地表达期望的通信路径,并且订阅端点不具有关于发布端点的直接知识。
框架中的发布者和订阅者可能已经对其施加了部分排序要求和无损通信要求两者。也就是说,至少在一些实施例中,由发布者以其发布消息的顺序是它们必须在订阅者处被接收的顺序。这是实现对订阅端点处的消息的确定性处理所需要的。
为了实现消息传送拓扑结构的动态创建,需要某些保证。因此,会话、发布者等的创建可以导致执行内核内的信号的生成。也就是说,当创建新的发布者时,参与相同会话的所有订阅者将接收存在新主题的通知(例如,每一个发布者与主题相关联),并且可以响应于该通知,根据特定订阅者的要求订阅该主题。在一些实施例中,发布者能够仅在至少一个订阅者已经订阅该主题之后发布该主题的消息。
在某些示例实施例中,通过利用基于SMP的系统中的无锁数据传递来在一些实施例中实现用来使用发布-订阅消息传送的方法,包括在单个进程内使用这样的消息传送,基于SMP的系统允许利用要用来作为高效点对点传输的硬件的存储器子系统。利用适当的无锁队列的点对点通信将消息从一个CPU核传送到另一个CPU核可以在将指针传递到存储器块时利用几条流水线化CPU指令来完成。这然后可以被扩展以表示广播总线,例如,通过将相同指针推送到多个CPU核队列。接收方CPU核读取指针并访问发起所发送的CPU的存储器块。
利用这种基本通信模式,发布-订阅消息传送可以以高效的方式表达,以用于进程内通信并且还用于使用共享存储器映射的主机-本地通信。发布-订阅框架被实现为受管理的CPU核内的队列的集合(其具有存储器块交换)的事实对于应用逻辑是隐藏的。另外,存储器块的管理对于使用发布订阅的应用是透明的。
通过创建发布和订阅端点(即,发布者和订阅者)两者的动作,应用间接地表达到框架和底层基础设施的所需连接性。通信基础设施然后创建形成物理通信路径的所需线程内队列。在低级传输级上的结果是连接了所有订阅和发布端点的连接网格。
使用附加队列和控制执行内核的信令可以用于实现通信域(诸如,例如进程、主机或网络通信域)的动态创建。在某些实施例中,需要消息发布的信令和排序保证,以实现确定性创建和提出可以用于对数据流进行建模的新的通信会话。
网关104可以位于在地理上远离服务器基础设施102的位置,或者位于服务器基础设施102的本地。网关104可以包括至少一个单核或多核处理器128和系统软件130。至少在一些实施例中,处理器128和系统软件130可以分别类似于关于计算机112描述的处理器118和系统软件120。网关104可以运行网关应用126,该网关应用126操作以在客户端请求被传输到服务器基础设施102之前聚合和/或初步处理客户端请求。聚合可以包括在一个消息中将两个或更多个用户发起的订单捆绑到服务器基础设施。预处理可以包括改变报头、认证和/或加密。根据一些实施例,网关应用126被实现为发布-订阅执行内核。
上面提及的应用中的任一个可以与企业服务应用(未单独示出)交互以用于管理用户认证,与客户端108和110交互以用于从订单/贸易确认接收传入订单并用于传输订单/交易确认,以及与数据库管理系统和/或外部服务器交互以用于获得要在处理中使用的信息或报告关于订单、贸易和位置的信息以及市场统计。诸如服务器102上的任何应用之类的应用可以包括一个或多个客户端侧部件和一个或多个服务器侧部件。应用的客户端侧部件可以操作以通过在用户界面设备上执行信息的呈现(例如,显示)来规定处置用户界面;接收用户输入等。服务器侧部件可以根据接收到的用户输入来规定认证、服务计量、生成或获得要呈现给用户的信息。
示例客户端设备108和110可以被配置成分别执行相同或不同的客户端应用132和134。客户端设备应用可以包括电子交易应用的客户端侧部分。在图1的所图示的示例中,客户端设备108正在执行贸易应用(例如,客户端应用132是用于与电子交易对接的客户端侧贸易应用),并且通过该贸易应用传输买入订单。客户端设备110可以执行相同或不同的贸易应用,并且可以向服务器102传输卖出订单。客户端设备108和110可以包括个人计算机、移动计算机、平板电脑、智能电话和其他电子设备中的任何一个。在一些示例实施例中,至少包括显示器、用于用户输入的输入设备和用于与服务器设备通信的通信接口的任何电子计算设备可以操作为客户端设备。虽然示出了两个客户端系统,但是任何数量的客户端系统可以与服务器基础设施102交互。客户端请求可以由人类用户交互和/或计算机程序生成。
应当理解,图1中所示的软件模块存储在硬件部件(诸如处理器和存储器)中并由硬件部件(诸如处理器和存储器)执行,并且应当进一步理解,每当在本文档中描述软件模块执行任何动作时,该描述仅仅是为了易于描述进行的并且该动作实际上由底层硬件根据包括软件模块的指令和数据来执行。以下参考图14以及在本文档中的其它地方中提供关于可用于实现本文中所描述的特征的示例硬件部件的另外的细节。
在本文档中的许多地方中,包括但不限于在图1的以上描述中,描述了软件模块和由软件模块执行的动作。这是为了易于描述而进行的;应当理解,每当在本文档中描述软件模块执行任何动作时,该动作实际上由底层硬件元件(诸如处理器和存储器设备)根据包括软件模块的指令来执行。除了其它地方之外,下面在图14的描述中提供了关于这一点的另外的细节。
图2的描述
图2图示了根据一些实施例的高级流程,其图示了应用的程序代码、将应用程序代码分解成供在处理环境(诸如图1中所示的处理环境)中使用的多个处理级,并且处理级被部署在多核和/或多处理器处理环境中。
针对特定应用的执行内核框架的使用包括首先找到可以异步地和同时地执行的可分离处理级的集合。这可以在其中每一个功能是潜在候选的功能基础上执行,但是为了实现更高效率,分解可以关于功能区域而定向。功能区域可以是诸如针对参考数据的静态验证、逻辑处理、输出生成等的事物。用于将应用分解成多个处理级的示例指导原则可以是可以重复使用或不与其他重叠的功能性应当优选地被分离到其自己的处理级中。
当多个处理级被标识成要被分解时,可以定义这些级中的每一个的消息API,入口和出口两者。然后,当在通过分解获得的各个部件中创建发布者和订阅者时,消息的名称可以用作主题。这种方法创建隔离的和自声明的部件,并且可以被认为是作为采用经典的垂直过程调用并将它们转换成形成水平流水线的消息。
在示例实施例中,诸如例如图1中所示的网关应用126或电子交易应用116之类的应用的程序代码202可以被分解成多个部件或模块204(例如,模块-1 204a、模块-2204b、……、模块-n 204n)。程序代码202可以使用来自集合的一种或多种编程语言或脚本语言来指定,并且可以指定一个或多个输入、处理逻辑指令和一个或多个输出。程序代码202中的处理逻辑指令可以被指定为包括具有过程调用的至少一些指令的指令的序列。至少根据一些实施例,分解采用诸如完全声明性地指定的程序代码202之类的程序代码作为输入,并且通过交换消息而完全在发布-订阅范例内彼此交互的处理级的集合作为输出。
程序代码202的分解可以自动地、手动地或通过其组合来执行。对于自动执行的分解的任何部分(例如,通过分解程序218),可以根据一个或多个用户可配置的配置参数220来控制分解进程。例如,部分分解可以基于高级域特定语言(DSL),其中描述了更多处理的元级描述。这然后可以是对该DSL的编译器的输入,DSL然后可以生成所得到的发布-订阅模块的组合。编译器可以基于每一个函数的复杂度描述做出决定,并且在函数简单的情况下选择创建过程调用,并且在复杂度高的情况下选择创建发布-订阅链接。当一个函数的输出被用作到多个其它函数中的输入以便利用异步处理时,它还可以使得决定基于所需的拓扑结构。
根据一些实施例,分解包括标识程序代码202中的单独功能性(例如,由程序代码的若干部分使用的模块等),从程序代码202提取该所标识的单独功能性的所有(或基本上所有)实例,以及定义所提取的部分与程序代码202的其余部分之间的消息接口。代码202中的各种功能性可以根据如函数/类名称、类属性名称、从函数/类内进行的调用等的这样的特性来分组。
可以控制自动分解进程的用户可配置配置参数可以包括要提取的模块的一个或多个标识符(例如,函数、过程或类的名称)、允许的分解模块的最大数量、可以向其分发模块的处理器的数量、可以向其分发模块的处理器核的数量等。
模块204然后被分发到多个处理器和/或处理核,使得一个或多个性能特性和/或性能度量被改进。在图2中所图示的示例实施例中,模块204在计算机208的处理核210(210a、210b和210c)之中进行分发。在一些实施例中,分发可以包括将基本上相等数量的模块(或以尝试实现工作负载的基本上均匀分发的方式)分发到每一个处理器或处理核。在分发模块时,当两个或更多个模块具有共享数据和/或频繁交互的某种可能性时,它们可以位于特定处理核上。限定要被并置的模块的共享数据的级别或频繁交互的级别的阈值(例如,基于两个模块的出口/入口API之间的匹配、消息的预期数量/频率)可以是可配置的。
在所图示的实施例中,计算机208可以是SMP计算机,其中每一个核具有其自己的本地存储器,并且所有核2l0a-2l0c连接到具有对共享存储器214(并且可选地存储装置216)的访问的通信总线复合体(通信基础设施)212。位于相应核上的模块204可以经由共享存储器214和/或经由总线复合体212的消息交换彼此通信。位于相同核上的模块204还可以经由该核的本地存储器(或本地高速缓存)进行交互。例如,如上所述,共享存储器中(例如,用于在不同核上的处理级之间交换信息的共享存储器214中和/或用于在相同核上执行的处理级或相关线程之间交换信息的核的本地存储器中)的无锁队列可以是在相应处理级之间的使用的信息。在所图示的实施例中,分解的模块1-n被分发到计算机208的处理核,使得模块1、2和n位于核210a中,模块4和n-2位于核210b中,并且模块3和n-1位于核210c中。存储装置216可以具有存储在其上的分解器218、用于分解程序代码202的逻辑以及还有配置参数220。
图3的描述
图3图示了根据一些示例实施例的与用于实现发布-订阅框架的某些原语相对应的对象的示意性表示,以及根据发布-订阅框架执行应用的执行内核中的对象之间的关系。
图3描绘了根据某些实施例的执行内核中的对象的等级关系。“内核”或“内核对象”302是具有关于所有其他原语的知识的中心部分,并且是用于创建其他原语的根。执行内核对象302可以例示促进多线程、多核、多进程和多主机应用的构建的发布-订阅框架。执行内核促进多处理应用的同步的实现方式。
会话对象304描述消息流并规定用来控制相关消息的分组的应用。会话对象规定特定应用的处理级流水线(例如,如上所述,基于功能区域的处理级流水线)的例示。当发布者和订阅者被联系到特定会话时,创建新会话并在新会话上创建发布者和订阅者的相同集合将导致具有与其他实例隔离的消息流的相同流水线的新实例。可以存在用于消息传输的不同域(例如,进程域、主机域和网络域)的会话对象的不同实现方式。尽管图2的描述是根据由进程域中的用户会话促进的相同进程通信域内的多个处理核,但是用来例示主机域和网络域中的用户信道的能力使得能够将流水线处理级分发到多个处理器并通过网络分发到多个主机。在主机本地域的情况下,可以使用相同或类似的共享存储器模型来配制消息传送原语,该消息传送原语使用主机存储器子系统来实现相同主机上的不同进程之间的通信。主要差异可以在于执行内核的编排和信令可能需要被实现为进程端口监督程序(process daemon)以外以促进多个进程之间的这种交互。在网络域中,在一些实施例中,可以使用与美国专利No. 9,712,606(其内容特此以其整体而被并入)中描述的实现方式(其中可靠的有序流被用于每一个会话)类似的实现方式。会话对象可以由名称属性346标识。会话对象可以包括方法348,以用于向会话参与者发信号以通知诸如加入会话的新发布者和/或新订阅者之类的事件。
上下文对象(例如,执行上下文306和308)规定用来控制消息的接收和传输的应用,并且通过扩展来控制应用的执行。上下文对象306和308描述执行的线程。每一个上下文对象也是多路复用器对象(选择器),利用所述多路复用器对象可以为各个对象监测可读和可写状态。由于每一个客户端被绑定到特定上下文并且发布和订阅被绑定到特定客户端时,所以客户端的消息的接收和传输在应用定义的上下文内。由于每一个上下文可以映射到相应的执行线程,所以应用可以选择哪个上下文来用于特定客户端,并且因此控制处理级的线程,而不需要各个处理级具有关于其执行的是哪个线程以及如何与其他部件通信的具体知识。
“客户端”或“客户端对象”,诸如例如客户端对象310和316中的任一个,描述了对会话的参与。客户端用于发布和订阅消息两者。每一个客户端对象可以例示发布者对象和订阅者对象。诸如创建发布者322和创建订阅者324之类的方法可以分别用于创建发布者和订阅者。为每一个客户端保留消息的顺序,这意味着一个或多个订阅客户端将以与它们由对应的发布了客户端发布的顺序相同的顺序接收消息。然而,两个不同的发布客户端的顺序可能是未定义的。消息排序可以使用诸如msg排序326之类的方法来处置。可以通过使已发布消息入队并仅根据已发布消息的队列中的顺序将消息分发到每一个订阅者来处置排序。可以通过诸如无损传输328之类的方法来为客户端处置消息的无损传输。可以通过实现与每一个发布的消息相关联的确认和/或重试机制来执行无损传输。
“发布者”或“发布者对象”,诸如例如发布者对象312和318,描述了正在发送的消息的类型。也就是说,创建具有名称的发布者,该名称于是为该特定发布者的“主题”。每当利用发布者发送消息(例如,使用发送方法330)时,将其作为该特定主题发送。
“订阅者”或“订阅者对象”,诸如例如订阅者对象314和320中的任一个,描述了正在接收的消息的类型。也就是说,创建具有名称的订阅者,该名称是该特定订阅者的“主题”。每当为订阅者接收消息(例如,使用接收方法340)时,该消息具有该特定主题。
根据实施例,电子交易应用执行内核116可以是内核对象302的例示,并且可以对应于进程。会话对象304可以被例示为用于协调发布-订阅框架的线程。在示例实施例中,可以针对从用户接收的每一个订单请求来例示会话对象。应用116的分解处理级中的每一个可以是客户端对象(例如,诸如客户端对象310或316)的单独例示,并且可以对应于与对应于电子交易应用116的进程的其他线程异步地且同时地执行的相应线程。每一个客户端对象通过例示对应的订阅者对象(例如,客户端对象310的订阅者对象314)来例示其入口消息API,并且通过例示对应的发布者对象(例如,客户端对象310的发布者对象312)来例示其出口消息API。如上所述,每一个发布者和订阅者与至少一个主题相关联,该主题标识要发布或订阅的(一个或多个)特定消息。对特定主题的发布和订阅定义了用于处理级之间的通信的逻辑拓扑结构。在某些实施例中,执行内核确定了处理级在可用处理资源上的布置,并且建立了逻辑通信基础设施以高效地促进不同处理级之间的通信。分发和逻辑通信基础设施可以被配置成改进预定性能度量(例如,应用速度,诸如用来处理订单的平均时间,或者并发量,诸如能够在预定时间约束内被处理的并发订单的数量)。根据所确定的分发和逻辑通信基础设施,内核可以请求系统软件(例如,系统软件120或124)来在所标识的处理资源上运行特定线程并且来在共享存储器中创建一个或多个消息队列。
图4的描述
图4图示了根据一些示例实施例的表示执行内核中的发布和订阅的示例活动流程400。
如会话线程404、发布者线程402以及订阅者线程406和408之间的活动流程400所示,期望接收特定“主题”的消息的订阅者订阅该“主题”。订阅者(或对应的订阅者-客户端对象)406和408通过向会话对象404发送指定“主题”的订阅消息410和412来注册它们相应的订阅。
发布者-客户端402通过向会话对象404传输消息414来在“主题”中发布消息。然后由会话对象404通过消息416和418将所发布的消息提供给订阅客户端。
图5的描述
图5图示了根据一些示例实施例的表示将新发布者添加到会话的示例活动流程500。
新发布者由发布者或对应的客户端对象502(该发布者或对应的客户端对象502传输消息508来通知会话对象504具有“主题”的新发布者已经加入会话)添加。然后,会话对象504将作为可用于订阅的新的“主题”通知给它的客户端中的每一个。会话对象504可以向其客户端506中的每一个传输相应的消息510,以向它们通知“主题”。
客户端中的一个或多个然后可以例示订阅者并且通过向会话对象传输消息512来通知其订阅“主题”。然后,会话对象通过消息516通知发布者它能够发布“主题”。在“主题”被至少一个客户端订阅之后,发布者然后可以发布“主题”,如图4中所示。
更具体地,订阅是在客户端的上下文中创建的。客户端表示会话的附件。当创建订阅时,客户端向会话对象发送消息以通知对主题的兴趣。会话然后将向发布客户端实现方式发送接收者端点对将被发布的消息感兴趣的消息。当客户端(或更准确地——应用逻辑)已经创建了必要的订阅时,其将向会话发送其已经完成所有所需订阅(和发布者创建等)的确认。当参与特定会话的所有客户端已经确认了主题(发布者)创建时,使得客户端能够发布对于特定主题的消息——例如516将从会话对象接收。总之,在客户端上创建发布者可以触发510,其又触发512中的一个或多个,这取决于应用要求可以导致多个514,并且所有512可能需要被确认(例如,通过到会话对象的消息(图中未示出)),并且当所有消息512已经被确认时,消息516将被发送。
如关于图4所描述的,发布者(和/或对应的客户端)、会话和订阅者(和/或对应的客户端)可以被实现为相应的线程。
图6的描述
图6图示了根据一些示例实施例的在发布-订阅框架中实现的示例应用,诸如例如,图1中所示的网关应用126。
网关应用116(例如,Nasdaq的OUCH 网关™)可以被分解成要在执行内核602中执行的若干流水线处理级。示例分解可以导致包括用于功能区域(诸如客户端连接、客户端消息成帧、入站消息逻辑、出站消息逻辑、后端消息成帧、后端连接、用户认证和授权之类)的相应处理级的处理级。图6图示了不同处理核中的相应处理级的示例布置。
由分解产生的处理级中的每一个可以被例示为相应的客户端对象,诸如对象310(或对象316)。每一个客户端可以具有其自己的上下文(例如,或者执行上下文对象306或308),并且可以被例示为执行内核(例如,对象302)内的单独线程。
因此,客户端I/O TCP/UDP服务634、SOUP™服务器服务632、OUCH™入口服务636、OUCH™ Genium入口服务638、模式US核服务640、Genium Inet™协议服务642、OUCH™出口服务646、OUCH™ Genium™出口服务648和RegNMS US服务650各自在其自己的上下文内被例示为相应的客户端对象。
用户650、652和654中的每一个的处理流水线中所涉及的消息交换可以由处理级之间的发布-订阅交换的序列来表示。为每一个用户650、652和654创建单独的会话,并且每一个用户的会话以发布-订阅序列将该用户的不同流水线处理级联系在一起。用户650的发布-订阅序列可以由消息交换604-606-608(入口)和610-612-614(出口)表示;用户652的发布-订阅序列可以由消息交换616-618-620(入口)和626-628-630(出口)表示;以及用户654的发布-订阅序列可以由消息交换616-618-622-624(入口)和626-628-630(出口)表示。
尽管图6中所示的所有其它处理级与用户会话相关联,但是级640和642还另外订阅表示到后端贸易服务器的连接的会话。因此,级640和642将例示用于用户会话的客户端和用于后端会话的客户端,其中订阅者和发布者在每一个客户端上。然后,级640和642执行用户会话和后端会话之间的路由选择。
关于网关应用126的一个重要方面是,当新用户建立连接时,网关通常已经使用户被连接(并且因此会话被建立)。这可能造成具有挑战性的同步问题,因为处理流水线中的所有处理级可能需要能够接受和处理与新用户相关联的消息,并且还能够将新用户与其他用户区分开。
因此,新用户连接的建立可以通过使用执行内核通告(信令)机制来完成,执行内核通告(信令)机制允许分布式流水线发现和注册适当订阅。通告机制可以在多个级别使用以建立用户特定的流水线。
在接收到来自用户的请求时,诸如包括订单的数据消息、客户端I/O服务634为用户创建新的执行内核会话。这导致向所有执行内核上下文的通告,所述执行内核上下文然后可以打开新创建的会话上的客户端。客户端I/O服务634然后可以在新的执行内核会话上创建新的执行客户端,并且还为执行内核客户端创建新的执行内核发布者。这导致向在执行内核会话上注册的所有执行内核客户端的通告。流水线中的服务中的每一个使用关于新创建的发布者的知识来创建匹配执行内核订阅者以监听发布的消息。
当所有执行内核客户端已经确认发布者的创建时,客户端I/O 634中的发布者可以用于发布消息。
图7的描述
图7图示了根据一些示例实施例的用于会话的初始连接和授权的操作的示例序列700。用于用户会话的初始创建的操作被示出为流水线处理级之间的发布-订阅消息交换的序列。
当网关(例如,网关104)启动时,可以开始若干新会话。控制会话被创建,所有处理级订阅该控制会话。当用户(例如,例如用户650、652或654中的任一个)通过例如向网关提交702订单来发起连接时,客户端I/O服务634可以初始地接收请求。流水线处理级634可以包括用于I/O连接服务704和I/O套接口服务706的相应线程。I/O连接服务704在控制会话上接收连接请求和关于新用户请求的信号。然后,I/O套接口服务执行与用户的握手,并且发起创建用户的新会话。在由I/O服务704-706处理请求之后,由SOUP成帧服务708通过创建新会话的订阅者来处理请求。成帧服务708可以在认证处理级710中提交要认证的请求。如果授权在授权流水线级710中成功,则通知成帧服务708,并且在操作712中创建用户会话,并且执行内核中的对应会话通告继续进行。
图8的描述
图8图示了根据一些示例实施例的用于图6中所示的网关应用中的用户会话建立的示例操作序列800。操作800示出了响应于图7中所示的用户会话通告的流水线的其余部分中的会话附件和信令。流水线处理级监听指示新会话被创建的信令。流水线级对入口消息建立适当的订阅者、为出口消息建立发布者,并且当这样做时,元件确认用户会话的创建。例如,在建立712会话时,可以通过根据需要例示对应的客户端对象和/或对应的订阅者和发布者来建立OUCH™解码802、入口业务逻辑804、后端流出口806、后端流入口808、出口业务逻辑810和OUCH™编码812处理级。当流水线被完全建立时,与用户相关的消息的处理可以由I/O服务发送。
图9的描述
图9图示了根据一些示例实施例的用于图6中所示的网关应用中的网关业务入口流水线的示例操作序列900。在流程900和图6中详细描述了根据一些示例实施例的完整入站(并且还有图10中的出站)流水线。流水线示出了取决于特定用户特定性和后端特定性的多个变型。对于任何给定的配置和用户,可以仅使用直线流程。例如,对于第一用户,直线流程可以包括流水线处理级I/O套接口服务902、SOUP™成帧服务904、OUCH™协议解码服务906、业务逻辑入口服务908以及流服务910-914中的任何一个的序列。对于第二用户,直线流程可以包括I/O套接口服务902、FIX™会话服务916、FIX™协议解码服务918、业务逻辑入口服务908和流服务910-914中的任何一个。SOUP成帧服务904维持每用户的状态。入口业务逻辑可以涉及减少某些风险等,并且可以取决于特定顺序而变化。在过程级上,流水线的所有组合可以同时活动,因为不同的用户特定和后端协议可以同时处于使用中。
图10的描述
图10图示了根据一些示例实施例的用于图6中所示的网关应用中的网关业务出口流水线的示例操作序列1000。任何流程1000可以具有与流程900共同的一个或多个处理级例示。上面关于图9描述的第一用户的出口直线流程可以包括流服务1002-1006、业务逻辑出口服务1008、OUCH™协议解码服务1010、SOUP™成帧服务1012和I/O套接口服务1014中的任何一个的流水线处理级的序列。对于第二用户,出口直线流程可以包括流服务1002-1006、业务逻辑出口服务1008,FIX™协议编码服务1016、FIX™会话服务1018和I/O套接口服务1014中的任何一个。由于网关可以仅具有到后端服务器基础设施的单个连接,所以可以存在I/O套接口服务1014的单个实例,该I/O套接口服务1014为所有用户处置到后端的输出用户业务。SOUP成帧服务1012执行每用户的缓冲和成帧,并且可以是每用户的与SOUP成帧服务904相同的实例(由于维持每用户的入口和出口之间的状态)。
图11的描述
图11图示了根据一些示例实施例的在发布-订阅框架中执行的示例应用,诸如图1中所示的电子交易应用116。
图11中示出了电子交易应用的匹配引擎。匹配引擎可以被建模为流水线,其中不同的处理级被分离以用于在执行内核1102上运行,并且其中流水线的部分被并行化,从而实现异步和同时执行流水线处理级。特别地,订单簿处理级可以与流水线的其余部分解耦,并且可以被并行化,使得多个用户和/或网关可以在该级中被同时服务。
匹配引擎可以被分解成流I/O处理级(其接受业务并发送响应)、消息解码级、静态验证和逻辑级、分区订单簿逻辑级和消息编码级。与图6中的网关应用形成对照(图6中的网关应用多路复用用户并且因此可以在用户连接的级别处被并行化),匹配引擎处理多个订单簿或订单簿部分,并且可以在订单簿处理级并行化。对应于这些分解级,用于流I/O服务1150、消息解码器服务1152和消息编码器服务1154的客户端线程可以位于CPU核1中;静态验证服务1156和静态逻辑服务1158可以位于CPU核2中;订单簿逻辑服务的实例1160-1166可以在CPU核4、5、6、……和N上被例示。图11示出了匹配引擎流水线级的分配,其中,公共和隔离数据流两者映射到执行资源。
用于用户(例如,诸如图6中所示的用户650、652和654)中的每一个的处理流水线中涉及的消息交换可以由处理级之间的发布-订阅交换的序列来表示。用户650的发布-订阅序列可以是1104-1106-1108-1132-1112-1134(和/或1116-1136、1120-1138、1124-1140中的任何一个或多个)-1142-1130;用户652的发布-订阅序列可以是1104-1106-1108-1110-1112-1114(和/或1116-1118、1120-1122、1124-1126中的任何一个或多个)-1128-1130。
在不需要执行资源的动态供应的简单情况下,可以以静态方式执行诸如会话、客户端、发布者和订阅者之类的执行内核对象的流水线构造和相关联的建立。另一方面,订单簿逻辑被分区,并且订单簿组的处理被并行地完成。
重叠处理带来至少两个重要的益处:当订单簿逻辑具有高度的计算复杂度时,如果订单簿可以被分割成独立的组(这是典型的情况),则可以利用线性缩放来增加吞吐量;并且当存在具有不同计算复杂度的不同类型的订单簿时,“简单”订单簿的处理等待时间变得与“复杂”订单簿的处理等待时间解耦。可以在具有不同类型的资产类别的市场中观察到复杂性的这种差异,其中针对一个类别的资产而不是针对另一类别的资产来实现复杂的策略订单。
图12的描述
图12图示了根据一些示例实施例的用于图11的电子交易应用中的匹配引擎流水线的示例操作序列1200。
模型照此导致“跳行”模型,其使得能够以重叠的方式异步处理输入消息,其中并行的流水线级可以以任何顺序完成。图12详细描述了基本静态配置的匹配引擎中的流水线级(流I/O处理级1202、消息解码处理级1204、静态验证级1206、静态逻辑处理级1208、订单簿逻辑级1210-1214中的任何一个或多个、以及消息编码处理级1216),其中箭头中的一些示出了由于验证级而导致业务未穿过整个流水线的决定。
图13的描述
图13图示了根据一些示例实施例的用于图11的电子交易应用中的动态匹配引擎流水线的示例操作序列1300。
流水线可以被进一步扩展以实现订单簿分区的动态缩放。这通过添加调节器1318来实现,该调节器1318同步订单簿逻辑组1310-1314的添加和移除。除了调节器之外,序列1300的其他处理级(流I/O处理级1302、消息解码处理级1304、静态验证级1306、静态逻辑处理级1308、订单簿逻辑级1310-1314中的任何一个或多个以及消息编码处理级1316)可以与图12中所示的对应级相同。图13示出订单簿逻辑组1310-1314如何连接到调节器1318。
当需要对处理拓扑结构的改变并且调节器1318和订单逻辑组1310-1314之间的交互和消息在不同的会话上时,调节器1318是同步点,所述不同的会话实现与正常流水线业务相关的隔离和解耦的消息传送域。
当添加或移除订单簿逻辑组时,调节器向所需组发送暂停消息,所需组然后在接收到该消息时停止正常流水线处理,并向调节器发送它们现在处于保持模式中的确认。当所有所需的组确认屏障(例如,由暂停消息表示的)时,调节器重新配置订单簿组拓扑结构,并且当这完成时,调节器向暂停的组发送恢复消息,所述暂停的组在接收时继续处理业务流水线。
在流水线的重新配置期间,只有在操作中涉及的组需要被暂停,这意味着其它订单簿组的业务的处理可以不间断地继续进行。
图14的描述
图14是根据一些实施例的示例计算设备1400(其也可以被称为例如“计算设备”、“计算机系统”或“计算系统”)的框图。在一些实施例中,计算设备1400包括以下项中的一个或多个:一个或多个处理器1402;一个或多个存储器设备1404;一个或多个网络接口设备1406;一个或多个显示接口1408;以及一个或多个用户输入适配器1410。另外,在一些实施例中,计算设备1400连接到或包括显示设备1412。如下面将解释的,这些元件(例如,处理器1402、存储器设备1404、网络接口设备1406、显示接口1408、用户输入适配器1410、显示设备1412)是被配置成执行计算设备1400的各种不同功能的硬件设备(例如,电子电路或电路的组合)。
在一些实施例中,处理器1402中的每一个或任一个是或包括例如单核或多核处理器、微处理器(例如,其可以被称为中央处理单元或CPU)、数字信号处理器(DSP)、与DSP核相关联的微处理器、专用集成电路(ASIC)、现场可编程门阵列(FPGA)电路或片上系统(SOC)(例如,包括CPU和诸如存储器、联网接口等的其它硬件部件的集成电路)。以及/或者,在一些实施例中,处理器1402中的每一个或任一个使用指令集架构,诸如x86或高级RISC机器(ARM)。
在一些实施例中,存储器设备1404中的每一个或任一个是或包括随机存取存储器(RAM)(诸如动态RAM(DRAM)或静态RAM(SRAM))、闪速存储器(基于,例如NAND或NOR技术)、硬盘、磁光介质、光介质、高速缓冲存储器、寄存器(例如,其保存指令)、或执行数据和/或指令的易失性或非易失性存储的其他类型的设备(例如,在处理器1402上或由处理器1402执行的软件)。存储器设备1404是非易失性计算机可读存储介质的示例。
在一些实施例中,网络接口设备1406中的每一个或任一个包括一个或多个电路(诸如基带处理器和/或有线或无线收发器),并且实现用于一个或多个有线通信技术(诸如以太网(IEEE 802.3))和/或无线通信技术(诸如蓝牙、WiFi(IEEE 802.11)、GSM、CDMA2000、UMTS、LTE、高级LTE(LTE-A)和/或其它短程、中程和/或远程无线通信技术)的层一、层二和/或更高的层。收发器可以包括用于发射器和接收器的电路。发射器和接收器可以共享公共外壳,并且可以共享外壳中的电路中一些或全部以执行传输和接收。在一些实施例中,收发器的发射器和接收器可以不共享任何公共电路和/或可以在相同或单独的外壳中。
在一些实施例中,显示接口1408中的每一个或任一个是或包括一个或多个电路,所述一个或多个电路从处理器1402接收数据,基于所接收的数据生成(例如,经由离散GPU、集成GPU、执行图形处理的CPU等)对应的图像数据,和/或向显示设备1412输出(例如,高清晰度多媒体接口(HDMI)、显示端口接口、视频图形阵列(VGA)接口、数字视频接口(DVI)等)所生成的图像数据,该显示设备1412显示图像数据。可替代地或附加地,在一些实施例中,显示接口1408中的每一个或任一个是或包括例如,视频卡、视频适配器或图形处理单元(GPU)。
在一些实施例中,用户输入适配器1410中的每一个或任一个是或包括一个或多个电路,所述一个或多个电路从一个或多个用户输入设备(图14中未示出)接收和处理用户输入数据,所述一个或多个用户输入设备包括在计算设备1400中、附接到计算设备1400或以其他方式与计算设备1400通信,并且基于所接收的输入数据将数据输出到处理器1402。可替代地或附加地,在一些实施例中,用户输入适配器1410中的每一个或任一个是或包括例如,PS/2接口、USB接口、触摸屏控制器等;和/或用户输入适配器1410促进来自用户输入设备(图14中未示出)的输入,所述用户输入设备诸如例如是键盘、鼠标、触控板(trackpad)、触摸屏等。
在一些实施例中,显示设备1412可以是液晶显示(LCD)显示器、发光二极管(LED)显示器或其它类型的显示设备。在其中显示设备1412是计算设备1400的部件(例如,计算设备和显示设备被包括在统一的外壳中)的实施例中,显示设备1412可以是触摸屏显示器或非触摸屏显示器。在其中显示设备1412连接到计算设备1400(例如,在计算设备1400外部并且经由有线和/或经由无线通信技术与计算设备1400通信)的实施例中,显示设备1412是例如外部监视器、投影仪、电视、显示屏等。
在各种实施例中,计算设备1400包括上述元件(例如,处理器1402、存储器设备1404、网络接口设备1406、显示接口1408和用户输入适配器1410)中的每一个或任一个中的一个或两个或三个、四个或更多个。可替代地或附加地,在一些实施例中,计算设备1400包括以下项中的一个或多个:包括处理器1402的处理系统;包括存储器设备1404的存储器或存储系统;以及包括网络接口设备1406的网络接口系统。
在各种实施例中,计算设备1400可以以许多不同的方式布置。仅作为一个示例,计算设备1400可以被布置成使得处理器1402包括:多(或单)核处理器;第一网络接口设备(其实现例如,WiFi、蓝牙、NFC等……);实现一种或多种蜂窝通信技术(例如,3G、4G LTE、CDMA等)的第二网络接口设备;存储器或存储设备(例如,RAM、闪速存储器或硬盘)。处理器、第一网络接口设备、第二网络接口设备和存储器设备可以被集成为相同SOC(例如,一个集成电路芯片)的一部分。作为另一示例,计算设备1400可以被布置成使得:处理器1402包括两个、三个、四个、五个或更多个多核处理器;网络接口设备1406包括实现以太网的第一网络接口设备和实现WiFi和/或蓝牙的第二网络接口设备;并且存储器设备1404包括RAM和闪速存储器或硬盘。
如先前所注意的,每当在本文档中描述了软件模块或软件过程执行任何动作时,该动作实际上由底层硬件元件根据包括软件模块的指令来执行。与前述一致,在各种实施例中,服务器基础设施102、客户端设备108和110、网关104、计算机112和114、电子交易应用116、网关应用126、系统软件120和124、系统软件130、客户端应用132和134、计算机208、分解器218、配置220、处理级632-650和处理级1152-1166中的每一个或任何组合(为了清楚起见,其中的每一个将在本段的其余部分被单独地称为“部件”)使用图14的计算设备1400的示例来实现。在这样的实施例中,以下适用于每一个部件:(a)图14中所示的1400计算设备1400的元件(即,一个或多个处理器1402、一个或多个存储器设备1404、一个或多个网络接口设备1406、一个或多个显示接口1408和一个或多个用户输入适配器1410),或前述的适当组合或子集)被配置成、适于和/或被编程以实现如由如包括在该部件内的本文中所述的任何软件模块和/或由部件执行的本文中所述的动作、活动或特征中的每一个或任何组合;(b)可替代地或附加地,在本文描述的一个或多个软件模块存在于部件内的程度上,在一些实施例中,这样的软件模块(以及本文描述为由软件模块处置和/或使用的任何数据)被存储在存储器设备1404中(例如,在各种实施例中,在诸如RAM或指令寄存器的易失性存储器设备中和/或在诸如闪速存储器或硬盘的非易失性存储器设备中)以及如由软件模块执行的本文描述的所有动作由处理器1402视情况而定地结合计算设备1400中的和/或连接到计算设备1400的其他元件(即,网络接口设备1406、显示接口1408、用户输入适配器1410和/或显示设备1412)执行;(c)可替代地或附加地,在本文描述的部件处理和/或以其他方式处置数据的程度上,在一些实施例中,这样的数据被存储在存储器设备1404中(例如,在一些实施例中,在诸如RAM的易失性存储器设备中和/或在诸如闪速存储器或硬盘的非易失性存储器设备中)和/或由处理器1402视情况而定地结合地计算设备1400中的和/或连接到计算设备1400的其他元件(即,网络接口设备1406、显示接口1408、用户输入适配器1410和/或显示设备1412)处理/处置;(d)可替代地或附加地,在一些实施例中,存储器设备1402存储指令,该指令在由处理器1402执行时使处理器1402视情况而定地结合计算设备1400中的和/或连接到计算设备1400的其他元件(即,存储器设备1404、网络接口设备1406、显示接口1408、用户输入适配器1410和/或显示设备1412)来执行,如由如包括在该部件内的本文中所述的任何软件模块和/或由部件执行的本文中所述的动作的每一个或任何组合。
图14中所示和以上所描述的硬件配置被提供作为示例,并且本文所描述的主题可以结合各种不同的硬件架构和元件来利用。例如:在本文档中的许多图中,示出了各个功能/动作块;在各种实施例中,可以使用(a)各个硬件电路、(b)使用被具体配置成执行所描述的功能/动作的专用集成电路(ASIC)、(c)使用被具体配置成执行所描述的功能/动作的一个或多个数字信号处理器(DSP)、(d)使用上面参考图14描述的硬件配置、(e)经由其它硬件布置、架构和配置和/或经由(a)至(e)中描述的技术的组合来实现那些块的功能。
所述主题的技术优点
某些示例实施例可以为某些应用(诸如但不限于电子交易平台)提供改进的应用执行时间和更好的吞吐量。根据实施例,提供了用于通过异步地和同时地执行应用的流水线处理级来在单处理器平台或多处理器平台上执行多进程和/或多线程应用的系统和方法,以便通过减少流水线处理中的瓶颈来实现应用任务的更快完成和更高吞吐量。以这种方式,与处理业务的常规技术形成对照,实施例可以实现超标量性能。
某些示例实施例还减少内部通信基础设施上的数据和消息传送业务的量,从而进一步改进应用执行和任务完成时间。实际上,在实验中观察到了,对于示例电子交易应用使用一些常规的发布-订阅框架是不可行的,这是由于在网络和定序器级别两者上的共享介质上的所得到的数据带宽要求,并且还从开销的角度。还观察到了,当使用常规发布-订阅框架时,所得到的传播延迟和吞吐量是不够的,且当添加多个进程和主机时将不会缩放。相比之下,除了其他方面之外,在一些示例实施例中,使用用于消息的无锁队列以及将指针传递到对于多个处理器或处理器核的共享存储器位置极大地减少了用于内部消息传送的拥塞。
还观察到,尽管当前订单网关应用和匹配引擎实现方式在实现方式中是单片的,因为其中输入的完整处理作为针对任何给定输入的单个调用链来执行的传统强制方法是满足所需性能级别的实现方式的唯一方式,但是某些示例实施例实质上更快(例如,买入/卖出订单的更快的平均业务完成时间)。这种改进可以至少部分地由于以下特性:与示例实施例不同,常规单片实现方式禁止在网关或匹配引擎内同时处理不同的数据流,因为不同的流确实具有在它们之间共享的处理级,并且因此不能被并行化。
所述的主题的附加应用
虽然可以以特定次序的顺序描述或要求保护过程步骤、算法等,但是这样的过程可以被配置成以不同的顺序工作。换句话说,可以明确描述或要求保护的步骤的任何序列或顺序不一定指示步骤以该顺序执行的要求。本文所述的过程的步骤可以以任何可能的顺序执行。此外,一些步骤可以同时执行,尽管被描述或暗示为非同时发生(例如,因为一个步骤在另一个步骤之后被描述)。此外,通过其在附图中的描绘的过程的说明并不意味着所说明的过程不包括对其的其他变型和修改,并不意味着所说明的过程或其步骤中的任一个对该技术是必需的,并且并不意味着所说明的过程是优选的。
各种形式的计算机可读介质/传输可以涉及将数据(例如,指令序列)承载到处理器。例如,数据可以(i)从存储器递送到处理器;(ii)在任何类型的传输介质(例如,有线、无线、光学等)上承载;(iii)根据许多格式、标准或协议(诸如以太网(或IEEE 802.3)、ATP、蓝牙和TCP/IP、TDMA、CDMA、3G等)来格式化和/或传输;和/或(iv)以本领域公知的各种方式中的任一种加密以确保隐私或防止欺诈。
选择的术语
每当在本文档中描述给定项目存在于“一些实施例”、“各种实施例”、“某些实施例”、“某些示例实施例”、“一些示例实施例”、“示例性实施例”中时,或者每当使用任何其他类似语言时,应当理解,给定项目存在于至少一个实施例中,但不一定存在于所有实施例中。当在本文档中描述动作“可以”、“能够”或“可能”被执行时,特征或部件“可以”、“能够”或“可能”被包括在给定的上下文中或适用于给定的上下文,给定的项目“可以”、“能够”或“可能”具有给定的属性,或者每当使用涉及术语“可以”、“能够”或“可能”的任何类似短语时,应当理解,给定的动作、特征、属性等存在于至少一个实施例中,但不一定存在于所有实施例中。除非另有明确说明,否则本文档中使用的术语和短语及其变型应被解释为开放式的而不是限制性的。作为前述内容的示例:“和/或”包括相关联的所列项目中的一个或多个的任何和所有组合(例如,a和/或b意指a、b、或a和b);单数形式“一”、“一个”和“所述”应解读为意指“至少一个”、“一个或多个”等;术语“示例”用于提供讨论中的主题的示例,而不是其穷尽性或限制性列举;术语“包括”和“包含”(及其其他变化形式和其他变型)指定相关联的所列项目的存在,但不排除一个或多个其他项目的存在或添加;并且如果项目被描述为“可选的”,则这样的描述不应被理解为指示其他项目也不是可选的。
如本文所使用的,术语“非暂时性计算机可读存储介质”包括寄存器、高速缓冲存储器、ROM、半导体存储器设备(诸如D-RAM、S-RAM或其他RAM)、磁介质(诸如闪速存储器)、硬盘、磁光介质、光介质(诸如CD-ROM、DVD或蓝光盘)或用于非暂时性电子数据存储的其他类型的设备。术语“非暂时性计算机可读存储介质”不包括暂时性、传播的电磁信号。
Claims (13)
1.一种电子交易系统,包括:
共享存储器;
通信基础设施;以及
处理系统,所述处理系统包括通过所述通信基础设施耦合到所述共享存储器的多个处理资源,其中所述处理系统被配置成执行包括以下各项的操作:
在所述处理资源中的每个上执行网关应用的处理流水线的多个流水线级中的至少一个流水线处理级;
使用所述共享存储器经由发布-订阅消息规定所述多个流水线级中的任何两个之间的通信;
响应于接收到的数据消息,所述数据消息包括从用户接收的订单,创建会话以用于处理所述网关应用中的所述数据消息;
响应于创建所述会话:
在所述会话中将所述应用的所述处理流水线的所述多个流水线级中的每一个注册为发布者和/或订阅者;以及
通过在所述网关应用的所述处理流水线的所述多个流水线级中的每一个中处理所述数据消息来完成对所述网关应用中的所述数据消息的处理以生成输出消息,其中,在所述处理所述数据消息期间,在所述多个流水线级之间的通信根据所述会话中的所述发布者和/或订阅者注册而发生;以及
将所述输出消息传输到匹配引擎;
执行所述多个流水线级中的每一个作为线程;
针对所述流水线级中的每一个与所述会话、订阅者和/或发布者相关联;以及
通过使消息在相关联的发布者和相关联的订阅者之中的发布者和订阅者的相应对之间交换来执行所述处理所述数据消息。
2.根据权利要求1所述的电子交易系统,其中,所述处理系统还被配置成:
例示控制会话;
使所述流水线级中的每一个订阅所述控制会话;以及
规定通过发布所述控制会话来向所述多个流水线级发信号通知一个或多个预定事件。
3.根据权利要求1所述的电子交易系统,其中,所述处理系统还被配置成通过将所述消息中的一个存储到所述共享存储器中的区域,并且将对所述区域的指针提供给所述订阅者中的至少一个,来使消息在发布者和订阅者的相应对之间交换。
4.根据权利要求3所述的电子交易系统,其中,所述处理系统还被配置成将所述区域配置成无锁队列。
5.根据权利要求1所述的电子交易系统,其中,所述处理系统还被配置成:
接收程序代码;以及
分解所述程序代码以获得所述多个流水线级,每个流水线级包括入口消息接口和出口消息接口。
6.根据权利要求5所述的电子交易系统,其中,所述处理系统还被配置成根据一个或多个配置参数执行所述分解。
7.根据权利要求5所述的电子交易系统,其中,所述处理系统还被配置成确定所述多个流水线级到所述多个处理资源的布置。
8.根据权利要求7所述的电子交易系统,其中,所述处理系统还被配置成基于所述流水线级的所述入口消息接口和所述出口消息接口来确定所述布置。
9.根据权利要求1所述的电子交易系统,其中,所述处理系统还被配置成通过访问关于所述数据消息的匹配引擎来执行所述处理所述数据消息。
10.根据权利要求9所述的电子交易系统,其中,所述处理系统还被配置成通过并行地所述访问所述匹配引擎以用于贸易请求和另一贸易请求来在多个所述流水线级中执行所述处理所述数据消息。
11.根据权利要求10所述的电子交易系统,其中,所述处理系统还被配置成动态地确定用于所述访问所述匹配引擎的流水线级的实例的数量。
12.一种在电子交易系统上处理数据消息的方法,所述电子交易系统具有共享存储器、通信基础设施和处理系统,所述处理系统包括通过所述通信基础设施耦合到所述共享存储器的多个处理资源,所述方法包括:
在所述处理资源中的每个上执行网关应用的处理流水线的多个流水线级中的至少一个流水线处理级;
使用所述共享存储器经由发布-订阅消息规定所述多个流水线级中的任何两个之间的通信;响应于接收到的数据消息,所述数据消息包括从用户接收的订单,创建会话以用于处理所述网关应用中的所述数据消息;
响应于创建所述会话:
在所述会话中将所述网关应用的所述处理流水线的所述多个流水线级中的每一个注册为发布者和/或订阅者;以及
通过在所述网关应用的所述处理流水线的所述多个流水线级中的每一个中处理所述数据消息来完成对所述网关应用中的所述数据消息的处理以生成输出消息,其中,在所述处理所述数据消息期间,在所述多个流水线级之间的通信根据所述会话中的所述发布者和/或订阅者注册而发生;以及
将所述输出消息传输到匹配引擎;
执行所述多个流水线级中的每一个作为线程;
针对所述流水线级中的每一个与所述会话、订阅者和/或发布者相关联;以及
通过使消息在相关联的发布者和相关联的订阅者之中的发布者和订阅者的相应对之间交换来执行所述处理所述数据消息。
13.根据权利要求12所述的方法,还包括:通过将所述消息中的一个存储到所述共享存储器中的区域,并且将对所述区域的指针提供给所述订阅者中的至少一个,来使消息在发布者和订阅者的相应对之间交换。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201862663422P | 2018-04-27 | 2018-04-27 | |
US62/663422 | 2018-04-27 | ||
US16/394,109 US10810064B2 (en) | 2018-04-27 | 2019-04-25 | Publish-subscribe framework for application execution |
US16/394109 | 2019-04-25 | ||
PCT/EP2019/060728 WO2019207104A1 (en) | 2018-04-27 | 2019-04-26 | Publish-subscribe framework for application execution |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112602063A CN112602063A (zh) | 2021-04-02 |
CN112602063B true CN112602063B (zh) | 2023-07-25 |
Family
ID=68292565
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201980043110.7A Active CN112602063B (zh) | 2018-04-27 | 2019-04-26 | 用于应用执行的发布-订阅框架 |
Country Status (5)
Country | Link |
---|---|
US (5) | US10810064B2 (zh) |
EP (1) | EP3785118A1 (zh) |
JP (1) | JP6906771B1 (zh) |
CN (1) | CN112602063B (zh) |
WO (1) | WO2019207104A1 (zh) |
Families Citing this family (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8667249B2 (en) * | 2004-12-22 | 2014-03-04 | Intel Corporation | Systems and methods exchanging data between processors through concurrent shared memory |
US10963323B2 (en) * | 2018-10-25 | 2021-03-30 | Sangyung University Industry-Academy Cooperation Foundation | Method and apparatus for transformation of MPI programs for memory centric computers |
US10885186B2 (en) | 2018-11-13 | 2021-01-05 | Forcepoint, LLC | System and method for operating a protected endpoint device |
US11586303B2 (en) * | 2019-01-06 | 2023-02-21 | Semiconductor Components Industries, Llc | Software framework and development platform for Wi-Fi chipsets |
CN111311403B (zh) * | 2019-12-03 | 2024-01-26 | 上海金融期货信息技术有限公司 | 一种策略交易引擎系统 |
EP3846058B1 (en) | 2019-12-30 | 2024-10-16 | TMRW Foundation IP SARL | Multi-dimensional 3d engine computing and virtualization-based dynamic load balancing of virtual or real worlds |
US11848980B2 (en) * | 2020-07-09 | 2023-12-19 | Boray Data Technology Co. Ltd. | Distributed pipeline configuration in a distributed computing system |
CN112527522B (zh) * | 2020-12-04 | 2024-07-23 | 中国航空工业集团公司成都飞机设计研究所 | 一种基于两级数据池的分区消息订阅、发布方法 |
CN112506684A (zh) * | 2021-02-05 | 2021-03-16 | 全时云商务服务股份有限公司 | 一种跨进程快速传送大数据的方法、系统及存储介质 |
CN112882987A (zh) * | 2021-03-12 | 2021-06-01 | 北京小米移动软件有限公司 | 多核通信方法、装置、电子设备及存储介质 |
CN112965839B (zh) * | 2021-03-29 | 2024-01-05 | 远景智能国际私人投资有限公司 | 消息传输方法、装置、设备及存储介质 |
CN113641139B (zh) * | 2021-08-05 | 2022-11-25 | 珠海格力电器股份有限公司 | 可实现异步编程的系统、控制器、控制系统、存储介质 |
CN113835909B (zh) * | 2021-09-30 | 2023-10-24 | 中国电子科技集团公司第二十八研究所 | 一种基于消息框架的应用集成方法 |
US20230393892A1 (en) * | 2022-06-06 | 2023-12-07 | International Business Machines Corporation | Configurable orchestration for data pipelines |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101848236A (zh) * | 2010-05-06 | 2010-09-29 | 北京邮电大学 | 具有分布式网络架构的实时数据分发系统及其工作方法 |
EP3128423A1 (en) * | 2015-08-06 | 2017-02-08 | Hewlett-Packard Enterprise Development LP | Distributed event processing |
Family Cites Families (26)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2010030978A2 (en) * | 2008-09-15 | 2010-03-18 | Aman James A | Session automated recording together with rules based indexing, analysis and expression of content |
US6606704B1 (en) * | 1999-08-31 | 2003-08-12 | Intel Corporation | Parallel multithreaded processor with plural microengines executing multiple threads each microengine having loadable microcode |
US6668317B1 (en) * | 1999-08-31 | 2003-12-23 | Intel Corporation | Microengine for parallel processor architecture |
US6490674B1 (en) * | 2000-01-28 | 2002-12-03 | Hewlett-Packard Company | System and method for coalescing data utilized to detect data hazards |
US7484079B2 (en) * | 2002-10-31 | 2009-01-27 | Hewlett-Packard Development Company, L.P. | Pipeline stage initialization via task frame accessed by a memory pointer propagated among the pipeline stages |
US20060146999A1 (en) * | 2005-01-06 | 2006-07-06 | Tervela, Inc. | Caching engine in a messaging system |
US20060206744A1 (en) * | 2005-03-08 | 2006-09-14 | Nec Laboratories America, Inc. | Low-power high-throughput streaming computations |
US7822728B1 (en) * | 2006-11-08 | 2010-10-26 | Emc Corporation | Metadata pipelining and optimization in a file server |
US8200836B2 (en) * | 2007-11-16 | 2012-06-12 | Microsoft Corporation | Durable exactly once message delivery at scale |
US20120284331A1 (en) * | 2011-05-03 | 2012-11-08 | Karthik Shashank Kambatla | Processing Notifications |
US9256915B2 (en) * | 2012-01-27 | 2016-02-09 | Qualcomm Incorporated | Graphics processing unit buffer management |
WO2013158968A1 (en) * | 2012-04-19 | 2013-10-24 | Siemens Corporation | Time slack application pipeline balancing for multi/many-core plcs |
US9514094B2 (en) * | 2012-07-10 | 2016-12-06 | Maxeler Technologies Ltd | Processing data sets using dedicated logic units to prevent data collision in a pipelined stream processor |
US20140129805A1 (en) * | 2012-11-08 | 2014-05-08 | Nvidia Corporation | Execution pipeline power reduction |
US9250954B2 (en) * | 2013-01-17 | 2016-02-02 | Xockets, Inc. | Offload processor modules for connection to system memory, and corresponding methods and systems |
US9338193B2 (en) | 2013-05-31 | 2016-05-10 | International Business Machines Corporation | Remote procedure call with call-by-reference semantics using remote direct memory access |
US9348602B1 (en) * | 2013-09-03 | 2016-05-24 | Amazon Technologies, Inc. | Resource allocation for staged execution pipelining |
US9712606B2 (en) | 2014-05-21 | 2017-07-18 | Nasdaq Technology Ab | Efficient and reliable host distribution of totally ordered global state |
US9256477B2 (en) * | 2014-05-29 | 2016-02-09 | Netapp, Inc. | Lockless waterfall thread communication |
US10756991B2 (en) * | 2015-09-17 | 2020-08-25 | Salesforce.Com, Inc. | Simplified entity engagement automation |
US9946593B2 (en) * | 2015-09-18 | 2018-04-17 | Salesforce.Com, Inc. | Recovery strategy for a stream processing system |
US10877901B2 (en) * | 2015-09-25 | 2020-12-29 | Arm Limited | Method and apparatus for utilizing proxy identifiers for merging of store operations |
WO2017070540A1 (en) * | 2015-10-23 | 2017-04-27 | Kodiak Networks, Inc. | System and method for implementing call session quality indicator |
US11216378B2 (en) * | 2016-09-19 | 2022-01-04 | Advanced Micro Devices, Inc. | Techniques for handling cache coherency traffic for contended semaphores |
US10672175B2 (en) * | 2017-04-17 | 2020-06-02 | Intel Corporation | Order independent asynchronous compute and streaming for graphics |
US10862809B2 (en) * | 2017-05-19 | 2020-12-08 | Advanced Micro Devices, Inc. | Modifying carrier packets based on information in tunneled packets |
-
2019
- 2019-04-25 US US16/394,109 patent/US10810064B2/en active Active
- 2019-04-26 JP JP2020560169A patent/JP6906771B1/ja active Active
- 2019-04-26 EP EP19720546.1A patent/EP3785118A1/en active Pending
- 2019-04-26 WO PCT/EP2019/060728 patent/WO2019207104A1/en active Application Filing
- 2019-04-26 CN CN201980043110.7A patent/CN112602063B/zh active Active
-
2020
- 2020-10-14 US US17/070,390 patent/US11243826B2/en active Active
-
2021
- 2021-12-23 US US17/560,879 patent/US11567815B2/en active Active
-
2023
- 2023-01-19 US US18/098,988 patent/US11775361B2/en active Active
- 2023-08-18 US US18/452,201 patent/US12093756B2/en active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101848236A (zh) * | 2010-05-06 | 2010-09-29 | 北京邮电大学 | 具有分布式网络架构的实时数据分发系统及其工作方法 |
EP3128423A1 (en) * | 2015-08-06 | 2017-02-08 | Hewlett-Packard Enterprise Development LP | Distributed event processing |
Also Published As
Publication number | Publication date |
---|---|
US11567815B2 (en) | 2023-01-31 |
US11775361B2 (en) | 2023-10-03 |
US20220114038A1 (en) | 2022-04-14 |
US10810064B2 (en) | 2020-10-20 |
EP3785118A1 (en) | 2021-03-03 |
US20210049058A1 (en) | 2021-02-18 |
US20230153183A1 (en) | 2023-05-18 |
US20190332449A1 (en) | 2019-10-31 |
US20230393915A1 (en) | 2023-12-07 |
US12093756B2 (en) | 2024-09-17 |
WO2019207104A1 (en) | 2019-10-31 |
US11243826B2 (en) | 2022-02-08 |
CN112602063A (zh) | 2021-04-02 |
JP2021519993A (ja) | 2021-08-12 |
JP6906771B1 (ja) | 2021-07-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112602063B (zh) | 用于应用执行的发布-订阅框架 | |
US11316690B2 (en) | Blockchain token-based cloud orchestration architecture for discrete virtual network instances | |
US11057313B2 (en) | Event processing with enhanced throughput | |
US11528147B2 (en) | Verifying integrity and secure operations of cloud-based software services | |
US20210075876A1 (en) | Push notification delivery system | |
US20210352139A1 (en) | Service meshes and smart contracts for zero-trust systems | |
US11763332B2 (en) | Edge computing platform supported by smart contract enabled blockchain network | |
CN107659546A (zh) | 一种基于事件的流程处理方法及装置和服务器 | |
CN101202642B (zh) | 在多播消息传送环境中订阅应用消息的方法和系统 | |
US11316933B2 (en) | Service meshes and smart contracts for zero-trust systems | |
US9077750B2 (en) | Using forums as a message transport in an enterprise service bus | |
EP4142206A1 (en) | Verifying integrity and secure operations of cloud-based software services | |
US10445153B2 (en) | Technologies for managing web notifications in client-server systems | |
CN113989046A (zh) | 交易处理方法、装置、电子设备、存储介质和程序产品 | |
Heikkinen et al. | UbiBroker: event-based communication architecture for pervasive display networks | |
CN112883337A (zh) | 交易数据的核算方法、装置、电子设备和存储介质 | |
US12040980B2 (en) | Network optimization and state synchronization | |
White et al. | A network communication speedup model using multiple fungible and non-fungible paths | |
WO2022217267A1 (en) | Service meshes and smart contracts for zero-trust systems |
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 | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 40049045 Country of ref document: HK |
|
GR01 | Patent grant | ||
GR01 | Patent grant |