CN118176495A - 处理并发消息序列 - Google Patents
处理并发消息序列 Download PDFInfo
- Publication number
- CN118176495A CN118176495A CN202280068396.6A CN202280068396A CN118176495A CN 118176495 A CN118176495 A CN 118176495A CN 202280068396 A CN202280068396 A CN 202280068396A CN 118176495 A CN118176495 A CN 118176495A
- Authority
- CN
- China
- Prior art keywords
- messages
- instance
- parallel task
- processors
- message
- 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.)
- Pending
Links
- 238000012545 processing Methods 0.000 title claims abstract description 21
- 238000005192 partition Methods 0.000 claims abstract description 107
- 238000000034 method Methods 0.000 claims abstract description 58
- 238000004590 computer program Methods 0.000 claims abstract description 17
- 230000001174 ascending effect Effects 0.000 claims abstract description 6
- 230000015654 memory Effects 0.000 claims description 13
- 239000004744 fabric Substances 0.000 claims description 7
- 230000002123 temporal effect Effects 0.000 claims description 4
- 230000004044 response Effects 0.000 claims 3
- 230000008569 process Effects 0.000 description 19
- 239000003795 chemical substances by application Substances 0.000 description 17
- 230000006870 function Effects 0.000 description 13
- 238000010586 diagram Methods 0.000 description 10
- 230000003287 optical effect Effects 0.000 description 6
- 230000005540 biological transmission Effects 0.000 description 5
- 238000007726 management method Methods 0.000 description 5
- 238000012549 training Methods 0.000 description 5
- 238000005516 engineering process Methods 0.000 description 3
- 230000008520 organization Effects 0.000 description 3
- 230000003068 static effect Effects 0.000 description 3
- 238000003491 array Methods 0.000 description 2
- 239000000835 fiber Substances 0.000 description 2
- 238000001914 filtration Methods 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 230000006855 networking Effects 0.000 description 2
- 230000001902 propagating effect Effects 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 238000012384 transportation and delivery Methods 0.000 description 2
- RYGMFSIKBFXOCR-UHFFFAOYSA-N Copper Chemical compound [Cu] RYGMFSIKBFXOCR-UHFFFAOYSA-N 0.000 description 1
- 230000003466 anti-cipated effect Effects 0.000 description 1
- 230000009172 bursting Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 229910052802 copper Inorganic materials 0.000 description 1
- 239000010949 copper Substances 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 238000007405 data analysis Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 239000000284 extract Substances 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 238000005259 measurement Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000004806 packaging method and process Methods 0.000 description 1
- 238000013439 planning Methods 0.000 description 1
- 238000011176 pooling Methods 0.000 description 1
- 238000013468 resource allocation Methods 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
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/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/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multimedia (AREA)
- Debugging And Monitoring (AREA)
- Multi Processors (AREA)
Abstract
一种用于处理消息序列的实例的方法、计算机程序产品和计算机系统。接收两个或更多个实例。每个实例具有实例号和相关联的实例Id。每个实例包括一个或多个消息的流。每个流中的每个消息与相应的任务相关联。其相应的任务已经被完成的两个或更多个实例中的所有消息被分布到代理中的分区中。至少一个实例中的每个实例中的不同消息被分布到不同分区中。分布在分区中的消息包括并行任务消息。并行任务消息通过按实例号或实例Id分组来排序,并且在每个组中以每个并行任务消息到达代理的时间戳的升序顺序地排序。每个实例中的并行任务消息被分派给服务。
Description
背景技术
Knative eventing是被设计成解决云本地(native)开发的常见需求并提供可组合原语(primitive)以实现后期绑定事件源和事件消费者的系统。
图1描述了根据现有技术的Knative eventing中的事件流程。
代理120从一个或多个事件发送者110(也称为“发布者”或“生产者”)接收多个事件140(也称为“消息”)作为事件流。事件发送者110可以通过将事件140发布(POSTing)到代理的status.address.url来将事件140提交到代理120。
词语“事件”和“消息”具有相同的含义并且是可互换的。
代理120可以向订户130(也称为“消费者”或“宿(sink)”)分派事件140或经由过滤所确定的事件140的子集。订户130可以是服务。
由代理120所接收的事件140可以经由一个或多个触发器150由事件属性选择性地过滤。每个触发器150描述关于事件140的一个或多个事件属性的过滤器,以确定事件140中的哪些事件应当被移除,留下所选事件(即,剩余事件)被分派到订户130。
代理120可以经由直接路径160将事件140直接递送或分派到可寻址订户130,而无需过滤。
图2描绘了根据现有技术的用于Knative eventing的架构200。
架构200包括管理员(“Admin”)205、K8s主控器210、Knative eventing结构220、以及服务230。“K8s”是用数字8替换“Kubernates”中的“ubernete”的八个字母的结果。
管理员205与K8s主控器210交互206以部署过程。
K8s主控器210包括应用编程接口(API)212、控制器管理器214、和etcd 216。
Knative eventing结构220包括代理240。
代理240包括接收机250、Kafka事件流平台260、分派器270和控制器280。
Kafka事件流平台260包括被组织成分区的主题(topic)261。虽然在图2中仅仅明确示出了两个分区(分区1和分区2),但是分区1和分区2共同表示多个分区(例如,2个分区、3个分区、4个分区等)。
在代理240中,接收机250接收事件流并将事件分派291到由分区1和2表示的多个分区中,其中每个事件仅放置在多个分区中的一个分区中。对于每个事件,Kafka协议确定每个事件被放置在哪个分区中。分派器270与多个分区交互292并从多个分区提取事件,然后在控制器280的控制下将事件分派293到服务230。
服务230可以包括容器231,容器231打包用于处理从代理240的分派器270接收293的事件的运行时代码。
在服务230中,容器231中的运行时代码处理从分派器270接收的事件。
在K8s主控器210中:(i)etcd 216存储与KnativeEventing结构220相关的参数(例如,配置数据、状态数据、元数据等),其中可以由etcd216从控制器280接收295参数;(ii)控制器管理器214管理和协调K8s主控器,并且向控制器280提供294关于将事件分派给服务230的约束;以及(iii)API 212提供K8s主控器210和工作节点或外部节点(例如,服务器、虚拟机等)之间的编程接口。
以下候选者提名过程的实例说明Kafka事件技术的当前状态的问题。
在该示例中,3个管理器将2名雇员提名为待训练的候选者,并且所提名的候选者中的总共5名候选者将被训练,留下将不被训练的一个所提名的候选者。给定先进先出(FIFO)的提名规则,发生以下事件序列:(i)提名请求(例如,由系统)发送到每个管理器;(ii)每个管理器提名2个候选者;并且(iii)该系统生成将被训练的所提名的候选者的训练列表。
前面的提名序列影响要训练的候选者的训练列表的生成。如果不根据FIFO规则实施前述事件序列,则将导致所提名的候选者的不正确训练列表。
在由Kafka实现的代理中,存在表1中描绘的两个分区(即,分区1和分区2)。
表1
每个管理器(M1,M2,M3)提名2名候选者并向Kafka事件流传输平台260发送提名消息(S_2_2_1;S_2_2_2;和S_2_2_3)。三个提名消息进入如表1所示的两个不同的分区。
分区2比分区1更快地传递消息,使得在管理器M1和M2的提名的候选者将被考虑用于训练之前,管理器M3的2个提名的候选者将被错误地接受用于训练。
因此,考虑表1中所示的时间戳,基于FIFO规则,待训练的5个候选者是管理器M3的2个提名的候选者、管理者M1的2个提名的候选者和管理器M2的2个提名的候选者中的不正确的一个提名的候选者。
未实现的正确结果是,应当训练的5个候选者是管理器M1的2个提名的候选者、管理器M2的2个提名的候选者、以及管理器M3的2个提名的候选者中的一个提名的候选者。
因此,如果仅使用一个分区,但是没有高可用性和低处理能力,现有技术可以保证FIFO规则的实施,而如果使用多个分区,现有技术不能保证FIFO规则的正确实施。
发明内容
本发明的实施例提供了一种用于处理消息序列的实例的方法、计算机程序产品和计算机系统。
Knative eventing结构内的代理的一个或多个处理器接收多个消息,其中消息属于不同的实例,每个实例具有实例号和相关联的实例Id,其中每个实例包括一个或多个消息的流,其中,每个流中的每个消息与相应的任务相关联,其中一些实例包括其相应的任务已被完成和被并行执行的多个消息,并且其中,所述代理包括Kafka事件流传输平台,所述Kafka事件流传输平台包括多个分区。
所述一个或多个处理器将其相应任务已完成的所述多个实例中的所有消息分布到所述多个分区中,其中,所述至少两个实例中的至少一个实例中的每个实例中的不同消息被分布到所述多个分区中的不同分区中,并且其中,被分布在所述多个分区中的所述消息包括多个并行任务消息。
所述一个或多个处理器通过以下操作来对所述并行任务消息进行排序:通过所述实例号或实例Id来分组所述并行任务消息,并且按照每个并行任务消息到达所述代理的时间戳的升序在每个组中顺序地排序。
所述一个或多个处理器按照时间顺序将每个实例中的所述并行任务消息分派到服务,所述时间顺序由每个组中的所述并行任务消息的顺序排列来控制,所述一个或多个处理器根据先进先出(FIFO)要求来分派所述并行任务消息。
附图说明
图1描绘了根据现有技术的Knative eventing中的事件流程。
图2描绘了根据现有技术的用于Knative eventing的架构。
图3描绘了根据本发明的实施例的用于Knative eventing的架构。
图4是描述根据本发明的实施例的用于处理消息流的方法的流程图。
图5A是描述根据本发明的实施例的图4中的步骤的第一实施例的流程图,该步骤通过实例或实例Id对消息进行分组,通过时间戳对每个实例的重组的消息重新排序,并将每个重新排序的消息发送到服务。
图5B是描述根据本发明的实施例的图4中的步骤的第二实施例的流程图,该步骤通过时间戳重新排序消息,通过实例或实例Id分组重新排序的消息,并且将每个组的重新排序的消息发送至服务。
图6描绘了根据本发明的实施例的用于说明性示例的任务和相关消息的三个实例。
图7描绘了根据本发明的实施例的与图6中描述的三个实例有关的运行时拓扑。
图8示出了根据本发明的实施例的计算机系统。
图9描绘了根据本发明的实施例的云计算环境。
图10描绘了根据本发明的实施例的抽象模型层。
具体实施方式
图3描绘了根据本发明的实施例的用于Knative eventing的架构300。
架构300包括管理员(“Admin”)305、K8s主控器310、Knative eventing结构320和服务330。
管理员305与K8s主控器310交互306以部署进程。
K8s主控器310包括应用编程接口(API)312、控制器管理器314和etcd 316。控制器管理器314包括并行任务标识符(Id)315。
Knative eventing结构320包括代理340。
代理340包括事件跟踪分析器345、接收机350、Kafka事件流传输平台360、分派器370、以及控制器380。
Kafka事件流传输平台360包括被组织成分区的主题361。虽然在图3中仅仅明确示出了两个分区(分区1和分区2),但是分区1和分区2共同表示多个分区(例如,2个分区、3个分区、4个分区等)。
分派器370包括事件过滤器371和事件顺序管理器(EOM)372。
服务330可以包括容器331,该容器331打包用于处理从代理340的分派器370接收到的事件(消息)的运行时代码。
词语“事件”和“消息”具有相同的含义并且是可互换的。
在一个实施例中,由容器331所接收的消息中的一个或多个消息基于一个或多个消息中的内容和/或取决于与一个或多个任务相关联的执行任务来触发容器331对服务的执行,执行任务先前已由代理340接收并放置在多个分区中。
在代理340中,接收机350接收事件流并将事件(消息)分派391到由分区1和2表示的多个分区中,其中每个消息仅被放置在多个分区中的一个分区中。对于每个消息,Kafka协议确定每个消息被放置到哪个分区中。分派器370从多个分区提取事件,然后在控制器380的控制下将消息分派393到服务330。
在服务330中,容器331中的运行时代码处理从分派器370接收的消息。
在K8s主控器310中:(i)etcd 316存储与KnativeEventing结构320相关的参数(例如,配置数据、状态数据、元数据等),其中可以由etcd316从控制器380接收395参数;(ii)控制器管理器314管理和协调K8s主控器,并且向控制器380提供394关于将事件分派给服务330的约束;以及(iii)API 312在K8s主控器310和工作节点或外部节点(例如,服务器、虚拟机等)之间提供编程接口。
图4是描述根据本发明的实施例的用于处理消息流的方法的流程图。图4的方法实现处理与任务相关联的消息序列的实例的过程。对于每一个实例,执行一个任务或并行执行多个任务。在每个任务已经完成之后,根据并行任务消息的FIFO要求,与完成的任务有关的消息被发送至代理并且最终被分派给容器。
图4的方法包括利用图3的架构300的步骤410至490。
在步骤410中,管理员305部署对流传输消息的多个实例所执行的过程。在每个实例中,执行一个任务或并行执行多个任务。在每个任务已经完成之后,与完成的任务有关的消息被发送到代理。
在步骤420中,并行任务识别符315扫描过程的过程定义,识别并行任务,添加重新排序规则,以及将过程定义、并行任务的识别和记录器规则传输398到etcd 316以供etcd316存储在数据存储中。
在步骤430中,代理340接收包括与任务有关的消息的多个实例,其中任务可以包括服务。
由代理340接收的每个实例具有实例号和相关联的实例Id。每个实例包括一个或多个消息的流,其中每个流中的每个消息与相应的任务相关联。多个实例中的至少两个实例中的每个实例中的流中的一个或多个消息包括其相应的任务已被完成和被并行执行的多个消息。
在步骤440中,事件跟踪分析器345分析与由代理340所接收的消息的传入实例有关的跟踪日志以生成运行时拓扑并将所生成的运行时拓扑提供396到etcd 316。
在步骤450中,在已经从消息流获取每个消息之后,事件过滤器371从etcd 316接收运行时拓扑。
在步骤460中,其相应的任务已经被完成的所有消息被分派391到多个分区中。Kafka协议确定每个消息被放置到哪个分区中。
在步骤460中,至少两个实例中的至少一个实例中的每个实例中的不同消息被分布到多个分区中的不同分区中。分布在多个分区中的消息包括多个并行任务消息。
并行任务消息被定义为单独的消息,其相应的任务与至少一个其他任务并行执行,该其他任务的关联消息与单独的消息处于相同的实例中。例如,在图7和图8的实例2中,其相应的任务为B1、B2和B3的三个消息均是并行任务消息,因为在同一实例2中的相应的任务B1、B2和B3被并行执行。
虽然图4示出在执行运行时拓扑步骤440和450之后执行步骤460,但是步骤460可以可替代地在执行步骤440和450之前以及在执行步骤430之后执行。
在步骤470中,事件过滤器371确定该消息是否是并行任务消息。
如果步骤470确定该消息不是并行任务消息(来自步骤470的“否”分支),则在步骤480,分派器370从多个分区获取392消息并且将该消息直接分派393至服务330。
如果步骤470确定该消息是并行任务消息(来自步骤470的“是”分支),则将并行任务消息发送到事件顺序管理器372以执行步骤490。
在集中处理所有并行任务消息的步骤490中,并行任务消息按实例和时间戳排序,使得并行任务消息按实例号或实例Id分组,并且按照每个并行任务消息到达代理的时间戳的升序,在每个组中顺序地排序。
在步骤490的一个实施例中,事件顺序管理器372对多个分区392内的并行任务消息进行分组和重新排序,该分组是按实例进行的,并且重新排序是按时间戳进行的,并且然后从多个分区获取经重新排序的并行任务消息。
在步骤490的第二实施例中,事件顺序管理器372从多个分区获取并行任务消息,然后对并行任务消息进行分组和重新排序,分组是按实例或实例Id进行的,重新排序是按时间戳进行的。
在步骤490中,分派器370按照由每个组中的并行任务消息的顺序排序所管理的时间顺序,向服务330分派393重新排序的消息,其根据FIFO要求分派消息。
图5A是描述根据本发明的实施例的图4中的步骤490的第一实施例的流程图,步骤490通过实例或实例Id对并行任务消息进行分组,通过时间戳对每个实例的重新分组的并行任务消息进行重新排序,并将每个组的重新排序的并行任务消息发送到服务330。图5A的流程图包括步骤510至550。
在步骤510,事件顺序管理器372按实例或实例Id对并行任务消息进行分组。分组步骤510不尝试以任何指定的顺序对每个实例内的并行任务消息排序,并且在一个实施例中,对每个实例内的并行任务消息随机排序。
在步骤520中,对于每个实例,事件顺序管理器372确定实例的所有并行任务消息是否已经到达多个分区中。尚未完成的任务的并行任务消息尚未到达多个分区中。
如果步骤520确定实例的所有并行任务消息已经到达多个分区(来自步骤520的“是”分支),则在步骤540中,事件顺序管理器372通过时间戳将实例的并行任务消息重新排序,然后在步骤550中,分派器370以与重新排序的并行任务消息相对应的时间序列将实例的重新排序的并行任务消息分派到服务330。
如果步骤520确定实例的所有并行任务消息尚未到达多个分区(来自步骤520的“否”分支),则在步骤530中,事件顺序管理器372在执行重新排序步骤540和分派步骤550之前等待所有并行任务消息到达。
图5B是描述根据本发明的实施例的图4中的步骤490的第二实施例的流程图,步骤490通过时间戳对并行任务消息进行重新排序,通过实例或实例Id对并行任务重新排序的消息进行分组,并且将每个组的重新排序的并行任务消息发送至服务330。图5B的流程图包括步骤510-550。
在图5A的第一实施例中,在执行分组步骤510之后,执行重新排序步骤540。
在图5B的第二实施例中,在执行分组步骤510之前,执行重新排序步骤540。
在步骤540中,事件顺序管理器372通过时间戳对所有并行任务消息进行重新排序。
在步骤510中,事件顺序管理器372按实例或实例Id将重新排序的并行任务消息分组,同时保持在步骤540中执行的时间戳重新排序。
在步骤520中,对于每个实例,事件顺序管理器372确定实例的所有并行任务消息是否已经到达多个分区中。尚未完成的任务的并行任务消息尚未到达多个分区中。
如果步骤520确定实例的所有并行任务消息已经到达多个分区(来自步骤520的“是”分支),则在步骤550中,分派器370以与重新排序的并行任务消息相对应的时间序列将每个实例的重新排序的并行任务消息分派到服务330。
如果步骤520确定实例的所有并行任务消息尚未到达多个分区(来自步骤520的“否”分支),则在步骤530中,事件顺序管理器372在执行分派步骤550之前等待所有并行任务消息到达。
以下实例借助于图6和7以及表2-6示出了由图4和5A描述的方法。
图6描绘了根据本发明实施例的用于说明性实例的任务和相关消息的三个实例。
在图6中,实例Id具有形式Ii,其中i表示实例号。例如,I1为实例1的实例Id,且I2为实例2的实例Id。
图6示出了根据本发明的实施例的任务和相关消息600的三个实例(即,分别具有实例Id为I1、I2、I3的实例1、2、3)。在图4的步骤410中部署的过程在三个实例1和2和3上执行。
消息600中的时间戳具有T_i_j_k的形式,其中i表示实例号,如果任务在实例i中并行运行,则j为2,否则为1,并且k是时间顺序时间索引,使得如果k2>k1,则T_i_j_k2在时间上晚于T_i_j_k1。
实例1是父任务A和先前完成并分派给服务的父任务A的4个子任务(B1、B2、B3、B4)的序列。实例1的4个子任务并行执行。实例1的任务B1和B2已完成,因此关于实例1的任务B1和B2的相应消息由代理340发送到多个分区。实例1的任务B3和B4尚未完成,因此与实例1的任务B3和B4相关联的消息将不会由代理340发送到多个分区,直到实例1的任务B3和B4已完成,这就是为什么与实例1的实例B3和B4有关的消息未在图6中示出的原因。
实例2是先前完成并分派到服务的父任务A的3个子任务(B1、B2、B3)和父任务A的序列。实例2的3个子任务并行执行。实例2的任务B1、B2和B3已经完成,因此关于实例2的任务B1和B2的相应消息由代理340发送到多个分区。
实例3是已经完成的单个任务A,因此关于实例3的任务A的消息由代理340发送到多个分区。
图7描绘了根据本发明的实施例的与图6中描述的三个实例有关的运行时拓扑。图7中所描绘的运行时拓扑是由图4中的步骤440的执行产生的,在步骤440中生成运行时拓扑。
注意,任务Id在图7中表现为实例Id和任务名称的组合。例如,I2_B1的任务Id表示实例2中的任务名称B1和实例Id I2的组合。
运行时拓扑指定实例1中的B任务(B1,B2,B3,B4)被并行执行,实例2中的B任务(B1,B2,B3)被并行执行,并且实例3中的A任务是单个任务。
表2示出了在图4的步骤460中消息如何分布在分区1和2中。
表2.分区中的消息
消息Id | 实例Id | 任务名称 | 时间戳 | 分区Id |
S_3_1_1 | I3 | A | T_3_1_1 | P1 |
S_2_2_1 | I2 | B1 | T_2_2_1 | P1 |
S_2_2_2 | I2 | B2 | T_2_2_2 | P1 |
S_1_2_1 | I1 | B1 | T_1_2_1 | P1 |
S_2_2_3 | I2 | B3 | T_2_2_3 | P2 |
S_1_2_2 | I1 | B2 | T_1_2_2 | P2 |
在表2中,分区Id具有形式Pp,其中p表示分区号。例如,P1是分区1的分区Id,P2是分区2的分区Id。Kafka协议确定每个消息被放置到哪个分区中。
由于消息S_3_1_1不是并行任务消息(图4的步骤470的“否”分支),因此,表3的结果来自任务A的消息S_3_1_1已从分区1中移除并被分派到服务330。
表3.待分组和重新排序的消息
消息Id | 实例Id | 任务名称 | 时间戳 | 分区Id |
S_2_2_1 | I2 | B1 | T_2_2_1 | P1 |
S_2_2_2 | I2 | B2 | T_2_2_2 | P1 |
S_1_2_1 | I1 | B1 | T_1_2_1 | P1 |
S_2_2_3 | I2 | B3 | T_2_2_3 | P2 |
S_1_2_2 | I1 | B2 | T_1_2_2 | P2 |
表3中的消息是将通过根据图4的步骤490分组和重新排序而被排序的并行任务消息,如根据图5A的流程图所实施的。
根据图5A的步骤510,表4通过实例或实例Id对表3中的消息进行分组。
表4.按实例或实例Id分组的消息
消息Id | 实例Id | 任务名称 | 时间戳 | 分区Id |
S_1_2_2 | I1 | B2 | T_1_2_2 | P2 |
S_1_2_1 | I1 | B1 | T_1_2_1 | P1 |
S_2_2_3 | I2 | B3 | T_2_2_3 | P2 |
S_2_2_1 | I2 | B1 | T_2_2_1 | P1 |
S_2_2_2 | I2 | B2 | T_2_2_2 | P1 |
分组步骤510不尝试以任何指定的顺序对每个实例内的消息进行排序,并且在一个实施例中,对每个实例内的消息进行随机排序。
表5是表4中的实例1中的消息被移除并置于“等待”状态的结果,因为实例1中的所有消息尚未到达多个分区中,这实现了图5的步骤520和530。如上文所论述,实例1的任务B3和B4尚未完成,且因此尚未到达多个分区中。
表5.在没有实例1的消息的情况下通过实例分组的消息
消息Id | 实例Id | 任务名称 | 时间戳 | 分区Id |
S_2_2_3 | I2 | B3 | T_2_2_3 | P2 |
S_2_2_1 | I2 | B1 | T_2_2_1 | P1 |
S_2_2_2 | I2 | B2 | T_2_2_2 | P1 |
表6通过时间戳对表5中的消息进行重新排序,这实现了图5A的步骤540。
表6.按时间戳重新排序的消息
消息Id | 实例Id | 任务名称 | 时间戳 | 分区Id |
S_2_2_1 | I2 | B1 | T_2_2_1 | P1 |
S_2_2_2 | I2 | B2 | T_2_2_2 | P1 |
S_2_2_3 | I2 | B3 | T_2_2_3 | P2 |
表6中的实例2中的三个消息接下来由分配器370以对应于重新排序的消息的时间顺序分派到服务330,其实现图5A的步骤550。
图8示出了根据本发明的实施例的计算机系统90。
计算机系统90包括处理器91、耦合到处理器91的输入设备92、耦合到处理器91的输出设备93和各自耦合到处理器91的存储器设备94和95。处理器91表示一个或多个处理器,并且可以表示单个处理器或多个处理器。输入设备92尤其可以是键盘、鼠标、相机、触摸屏等或其组合。输出设备93可以是打印机、绘图仪、计算机屏幕、磁带、可移动硬盘、软盘等,或其组合。存储器设备94和95各自可以是硬盘、软盘、磁带、诸如致密盘(CD)或数字视频盘(DVD)之类的光学存储、动态随机存取存储器(DRAM)、只读存储器(ROM)等、或其组合。存储器设备95包括计算机代码97。计算机代码97包括用于执行本发明的实施例的算法。处理器91执行计算机代码97。存储器设备94包括输入数据96。输入数据96包括计算机代码97所需的输入。输出设备93显示来自计算机代码97的输出。存储器设备94和95中的任一个或两者(或一个或多个附加存储器设备,诸如只读存储器设备96)可包括算法,并且可被用作计算机可用介质(或计算机可读介质或程序存储设备),其具有在其中体现的计算机可读程序代码和/或具有在其中存储的其他数据,其中计算机可读程序代码包括计算机代码97。通常,计算机系统90的计算机程序产品(或可替代地,制品)可以包括计算机可用介质(或程序存储设备)。
在一些实施例中,不是从硬盘驱动器、光盘或其他可写、可重写、或可移动硬件存储器设备95存储和访问,而是所存储的计算机程序代码98(例如,包括算法)可以存储在静态、不可移动、只读存储介质(诸如只读存储器(ROM)设备99)上,或者可以由处理器91直接从这种静态、不可移动、只读介质99访问。类似地,在一些实施例中,存储的计算机程序代码97可以存储为计算机可读固件99,或者可以由处理器91直接从这样的固件99访问,而不是从更动态或可移除的硬件数据存储设备95(诸如硬盘驱动器或光盘)访问。
此外,本发明的任何组件可由服务提供者创建、集成、托管、维护、部署、管理、服务等,该服务提供者提供改进与插件组件相关联的交叉引用度量相关联的软件技术,生成软件代码模块,并实现目标云组件的操作功能。由此,本发明公开了用于部署、创建、集成、托管、维护和/或集成计算基础设施的过程,包括将计算机可读代码集成到计算机系统90中,其中代码与计算机系统90组合能够执行这样的方法,该方法用于实现以下过程:用于改进与插件组件相关联的交叉引用度量相关联的软件技术,生成软件代码模块,以及实现目标云组件的操作功能。在另一实施例中,本发明提供了在订阅、广告和/或费用的基础上执行本发明的处理步骤的商业方法。即,诸如解决方案集成商之类的服务提供者可以提供使能用于改进与插件组件相关联的交叉引用度量相关联的软件技术、生成软件代码模块、以及实现目标云组件的操作功能的过程。在这种情况下,服务提供者可以为一个或多个客户创建、维护、支持等执行本发明的处理步骤的计算机基础设施。反过来,服务提供者可根据订阅和/或费用协议从客户接收付款,和/或服务提供者可从广告内容向一个或多个第三方的销售接收付款。
虽然图8将计算机系统90示出为硬件和软件的特定配置,但是本领域普通技术人员已知的硬件和软件的任何配置可以结合图8的特定计算机系统90用于上述目的。例如,存储器设备94和95可以是单个存储器设备的部分,而不是单独的存储器设备。
本发明可以是任何可能的技术细节集成度的系统、方法和/或计算机程序产品。计算机程序产品可包括其上具有用于使处理器执行本发明的各方面的计算机可读程序指令的计算机可读存储介质(或多个介质)。
计算机可读存储介质可为可保留和存储供指令执行设备使用的指令的有形设备。计算机可读存储介质可以是,例如,但不限于,电子存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备。计算机可读存储介质可以是能够保留和存储供指令执行设备使用的指令的有形设备。计算机可读存储介质可以是,例如但不限于,电子存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备、或者上述的任意合适的组合。计算机可读存储介质的更具体示例的非穷尽列表包括以下各项:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式紧凑盘只读存储器(CD-ROM)、数字通用盘(DVD)、记忆棒、软盘、诸如穿孔卡之类的机械编码设备或具有记录在其上的指令的槽中的凸出结构、以及上述各项的任何合适的组合。如本文所使用的计算机可读存储介质不应被解释为暂时性信号本身,例如无线电波或其他自由传播的电磁波、通过波导或其他传输介质传播的电磁波(例如,穿过光纤电缆的光脉冲)或通过电线发射的电信号。
本文中所描述的计算机可读程序指令可以经由网络(例如,互联网、局域网、广域网和/或无线网络)从计算机可读存储介质下载到相应的计算/处理设备,或者下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光传输光纤、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配器卡或网络接口接收来自网络的计算机可读程序指令,并转发计算机可读程序指令以存储在相应计算/处理设备内的计算机可读存储介质中。
用于执行本发明的操作的计算机可读程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、集成电路的配置数据、或以一种或多种程序设计语言的任何组合编写的源代码或目标代码,这些程序设计语言包括面向对象的程序设计语言(诸如Smalltalk、C++等)和过程程序设计语言(诸如“C”程序设计语言或类似程序设计语言)。计算机可读程序指令可以完全地在用户计算机上执行、部分在用户计算机上执行、作为独立软件包执行、部分在用户计算机上且部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在后一种情况下,远程计算机可通过任何类型的网络(包括局域网(LAN)或广域网(WAN))连接至用户计算机,或者可连接至外部计算机(例如,使用互联网服务提供商通过互联网)。在一些实施例中,包括例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA)的电子电路可以通过利用计算机可读程序指令的状态信息来使电子电路个性化来执行计算机可读程序指令,以便执行本发明的各方面。
下面将参照根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述本发明的方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。
这些计算机可读程序指令可被提供给计算机的处理器或其他可编程数据处理装置以产生机器,使得经由计算机的处理器或其他可编程数据处理装置执行的指令创建用于实现在流程图和/或框图框中指定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,其使得计算机、可编程数据处理装置、和/或其他设备以特定方式工作,从而,其中存储有指令的计算机可读存储介质包括包含实现流程图和/或框图框中指定的功能/动作的方面的指令的制造品。
也可以把计算机可读程序指令加载到计算机、其他可编程数据处理装置、或其他设备上,使得在计算机、其他可编程装置或其他设备上执行一系列操作步骤,以产生计算机实现的处理,使得在计算机、其他可编程装置或其他设备上执行的指令实现流程图和/或框图框中指定的功能/动作。
附图中的流程图和框图示出了根据本发明的不同实施例的系统、方法和计算机程序产品的可能实现方式的架构、功能和操作。对此,流程图或框图中的每个框可表示指令的模块、段或部分,其包括用于实现指定的逻辑功能的一个或多个可执行指令。在一些备选实现中,框中标注的功能可以不按照图中标注的顺序发生。例如,连续示出的两个框实际上可以作为一个步骤完成,同时、基本上同时、以部分或完全时间上重叠的方式执行,或者框有时可以以相反的顺序执行,这取决于所涉及的功能。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作或执行专用硬件与计算机指令的组合的专用的基于硬件的系统来实现。
本发明的计算机程序产品包括一个或多个计算机可读硬件存储设备,其中存储有计算机可读程序代码,所述程序代码包含可由计算机系统的一个或多个处理器执行以实现本发明的方法的指令。
本发明的计算机系统包括一个或多个处理器、一个或多个存储器、以及一个或多个计算机可读硬件存储设备,所述一个或多个硬件存储设备包含可由所述一个或多个处理器经由一个或多个存储器执行的程序代码以实现本发明的方法。
云计算环境
可理解,尽管本公开包括关于云计算的详细描述,但是本文所陈述的教导的实现不限于云计算环境。相反,本发明的实施例能够结合现在已知或以后开发的任何其它类型的计算环境来实现。
云计算是一种服务递送模型,用于实现对可配置计算资源(例如,网络、网络带宽、服务器、处理、存储器、存储、应用、虚拟机和服务)的共享池的方便的按需网络访问,该可配置计算资源可以以最小的管理努力或与服务的提供者的交互来快速供应和释放。该云模型可以包括至少五个特性、至少三个服务模型和至少四个部署模型。
特征如下:
按需自助:云消费者可以单方面地自动地根据需要提供计算能力,诸如服务器时间和网络存储,而不需要与服务的提供者进行人工交互。
广域网接入:能力在网络上可用,并且通过促进由异构的薄或厚客户端平台(例如,移动电话、膝上型计算机和PDA)使用的标准机制来访问。
资源池化:供应商的计算资源被集中以使用多租户模型来服务多个消费者,其中不同的物理和虚拟资源根据需求被动态地分配和重新分配。存在位置无关的意义,因为消费者通常不控制或不知道所提供的资源的确切位置,但是能够在较高抽象级别(例如国家、州或数据中心)指定位置。
快速弹性:在一些情况下,可以快速且弹性地提供快速向外扩展的能力和快速向内扩展的能力。对于消费者,可用于提供的能力通常看起来不受限制,并且可以在任何时间以任何数量购买。
测量服务:云系统通过利用在适合于服务类型(例如,存储、处理、带宽和活动用户账户)的某一抽象级别的计量能力来自动地控制和优化资源使用。可以监视、控制和报告资源使用,从而为所利用服务的提供者和消费者两者提供透明性。
服务模型如下:
软件即服务(SaaS):提供给消费者的能力是使用在云基础设施上运行的提供者的应用。应用可通过诸如web浏览器(例如,基于web的电子邮件)等瘦客户机界面从各种客户机设备访问。消费者不管理或控制包括网络、服务器、操作系统、存储、或甚至个别应用能力的底层云基础结构,可能的例外是有限的用户专用应用配置设置。
平台即服务(PaaS):提供给消费者的能力是将消费者创建或获取的应用部署到云基础设施上,该消费者创建或获取的应用是使用由提供商支持的编程语言和工具创建的。消费者不管理或控制包括网络、服务器、操作系统或存储的底层云基础设施,但具有对部署的应用和可能的应用托管环境配置的控制。
基础设施即服务(IaaS):提供给消费者的能力是提供处理、存储、网络和消费者能够部署和运行任意软件的其它基本计算资源,该软件可包括操作系统和应用。消费者不管理或控制底层云基础设施,但具有对操作系统、存储、部署的应用的控制,以及可能对选择的联网组件(例如,主机防火墙)的有限控制。
部署模型如下:
私有云:云基础设施仅为组织操作。它可以由组织或第三方管理,并且可以存在于场所内或场所外。
社区云:云基础设施由若干组织共享,并且支持具有共享关注(例如,任务、安全要求、策略和合规性考虑)的特定社区。它可以由组织或第三方管理,并且可以存在于场所内或场所外。
公有云:云基础设施可用于一般公众或大型工业群体,并且由销售云服务的组织拥有。
混合云:云基础设施是两个或更多云(私有、共同体或公共)的组合,所述云保持唯一实体,但是通过使数据和应用能够移植的标准化或私有技术(例如,用于云之间的负载平衡的云突发)绑定在一起。
云计算环境是面向服务的,其焦点在于无状态、低耦合、模块性和语义互操作性。在云计算的核心是包括互连节点的网络的基础设施。
现在参考图9,描述了说明性的云计算环境50。如图所示,云计算环境50包括云消费者使用的本地计算设备可以与其通信的一个或多个云计算节点10,本地计算设备例如个人数字助理(PDA)或蜂窝电话54A、台式计算机54B、膝上型计算机54C和/或汽车计算机系统54N。节点40可以彼此通信。它们可以被物理地或虚拟地分组(未示出)在一个或多个网络中,诸如如上文描述的私有云、社区云、公共云或混合云或其组合。这允许云计算环境50提供基础设施、平台和/或软件作为服务,云消费者不需要为其维护本地计算设备上的资源。可理解,图9中所示的计算设备54A-N的类型仅旨在说明,并且计算节点10和云计算环境50可以在任何类型的网络和/或网络可寻址连接上(例如,使用web浏览器)与任何类型的计算机化设备通信。
现在参考图10,示出了由云计算环境50(图9)提供的一组功能抽象层。可预先理解,图10中所示的组件、层和功能仅旨在说明,并且本发明的实施例不限于此。如所描绘的,提供了以下层和相应的功能:
硬件和软件层60包括硬件和软件组件。硬件组件的示例包括:主机61;基于RISC(精简指令集计算机)架构的服务器62;服务器63;刀片服务器64;存储装置65;以及网络和网络组件66。在一些实施例中,软件组件包括网络应用服务器软件67和数据库软件68。
虚拟化层70提供抽象层,从该抽象层可以提供虚拟实体的以下示例:虚拟服务器71;虚拟存储器72;虚拟网络73,包括虚拟专用网络;虚拟应用和操作系统74;以及虚拟客户机75。
在一个示例中,管理层80可以提供以下描述的功能。资源供应81提供用于在云计算环境内执行任务的计算资源和其它资源的动态采购。计量和定价82提供了在云计算环境中利用资源时的成本跟踪,以及用于消耗这些资源的计帐单或开发票。在一个示例中,这些资源可包括应用软件许可证。安全性为云消费者和任务提供身份验证,以及为数据和其它资源提供保护。用户门户83为消费者和系统管理员提供对云计算环境的访问。服务级别管理84提供云计算资源分配和管理,使得满足所需的服务级别。服务水平协议(SLA)规划和履行85提供对云计算资源的预安排和采购,其中根据SLA预期未来需求。
工作负载层30提供了可以利用云计算环境的功能的示例。可从该层提供的工作负载和功能的示例包括:绘图和导航31;软件开发和生命周期管理32;虚拟教室教育传送33;数据分析处理34;交易处理35;以及处理消息序列实例36。
已经出于说明性目的呈现了本文中所描述的本发明的示例和实施例,并且这些示例和实施例不应被解释为是详尽的。虽然本文为了说明的目的描述了本发明的实施例,但是对于本领域技术人员而言,许多修改和变化将变得显而易见。本发明的描述在此解释了这些示例和实施例的基础原理,以便展示本发明相对于已知技术、计算机系统和/或产品的实际应用和技术改进。
Claims (20)
1.一种用于处理消息序列的实例的方法,所述方法包括:
由Knative eventing结构内的代理的一个或多个处理器接收多个实例,其中,每个实例具有实例号和相关联的实例Id,其中,每个实例包括一个或多个消息的流,其中,每个流中的每个消息与相应的任务相关联,其中,所述多个实例中的至少两个实例中的每个实例中的所述流中的所述一个或多个消息包括其相应的任务已被完成且被并行执行的多个消息,并且其中,所述代理包括Kafka事件流传输平台,所述Kafka事件流传输平台包括多个分区;
由所述一个或多个处理器将其相应的任务已被完成的所述多个实例中的所有消息分布到所述多个分区中,其中,所述至少两个实例中的至少一个实例中的每个实例中的不同消息被分布到所述多个分区中的不同分区中,并且其中,被分布在所述多个分区中的所述消息包括多个并行任务消息;
由所述一个或多个处理器通过以下操作来对所述并行任务消息进行排序:通过所述实例号或实例Id来分组所述并行任务消息,并且按照每个并行任务消息到达所述代理的时间戳的升序在每个组中顺序地排序;以及
由所述一个或多个处理器按照时间顺序将每个实例中的所述并行任务消息分派到服务,所述时间顺序由每个组中的所述并行任务消息的顺序排序来控制,所述一个或多个处理器根据先进先出(FIFO)要求来分派所述并行任务消息。
2.根据权利要求1所述的方法,其中,所述排序包括:通过所述实例号或所述实例Id来分组所述并行任务消息,随后通过每个并行任务消息到达所述代理的所述时间戳来重新排序每个组中的所述并行任务消息。
3.根据权利要求1所述的方法,其中,所述排序包括:通过每个并行任务消息到达所述代理的所述时间戳来重新排序所述并行任务消息,随后通过实例或实例Id来分组经重新排序的消息,同时保持时间戳重新排序。
4.根据权利要求1所述的方法,其中,所述方法还包括:
由所述一个或多个处理器确定所述多个分区中的一个消息不是并行任务消息,并且作为响应,由所述一个或多个处理器将所述一个消息分派给所述服务。
5.根据权利要求1所述的方法,其中,所述多个实例包括一个实例,所述一个实例包括已经到达所述多个分区的两个或多个并行任务消息和尚未到达所述多个分区的至少一个并行任务消息,并且其中,所述方法还包括:
在执行针对所述一个实例的所述排序和所述分派之前,由所述一个或多个处理器等待所述至少一个并行任务消息完成并到达所述多个分区。
6.根据权利要求1所述的方法,其中,所述方法还包括:
由所述代理中的事件跟踪分析器使用所述一个或多个处理器分析与由所述代理所接收的所述多个实例有关的跟踪日志;
基于所述分析,由所述事件跟踪分析器使用所述一个或多个处理器生成与所述多个实例有关的运行时拓扑;以及
由所述事件跟踪分析器使用所述一个或多个处理器将所生成的运行时拓扑提供给K8s主控器中的etcd。
7.根据权利要求6所述的方法,其中,所述方法还包括:
在已经从消息的流中获取每个消息之后,由所述代理中的事件过滤器使用所述一个或多个处理器从所述etcd接收所述运行时拓扑,以确定所获取的消息是否是并行任务消息。
8.一种计算机程序产品,包括在其中存储有计算机可读程序代码的一个或多个计算机可读硬件存储设备,所述程序代码包含可由计算机系统的一个或多个处理器执行以实施用于处理消息序列的实例的方法的指令,所述方法包括:
由Knative eventing结构内的代理的所述一个或多个处理器接收多个实例,其中,每个实例具有实例号和相关联的实例Id,其中,每个实例包括一个或多个消息的流,其中,每个流中的每个消息与相应的任务相关联,其中,所述多个实例中的至少两个实例中的每个实例中的所述流中的所述一个或多个消息包括其相应的任务已被完成且被并行执行的多个消息,并且其中,所述代理包括Kafka事件流传输平台,所述Kafka事件流传输平台包括多个分区;
由所述一个或多个处理器将其相应的任务已被完成的所述多个实例中的所有消息分布到所述多个分区中,其中,所述至少两个实例中的至少一个实例中的每个实例中的不同消息被分布到所述多个分区中的不同分区中,并且其中,被分布在所述多个分区中的所述消息包括多个并行任务消息;
由所述一个或多个处理器通过以下操作来对所述并行任务消息进行排序:通过所述实例号或实例Id来分组所述并行任务消息,并且按照每个并行任务消息到达所述代理的时间戳的升序在每个组中顺序地排序;以及
由所述一个或多个处理器按照时间顺序将每个实例中的所述并行任务消息分派到服务,所述时间顺序由每个组中的所述并行任务消息的顺序排序来控制,所述一个或多个处理器根据先进先出(FIFO)要求来分派所述并行任务消息。
9.根据权利要求8所述的计算机程序产品,其中,所述排序包括:通过所述实例号或实例Id来分组所述并行任务消息,随后通过每个并行任务消息到达所述代理的所述时间戳来重新排序每个组中的所述并行任务消息。
10.根据权利要求8所述的计算机程序产品,其中,所述排序包括:通过每个并行任务消息到达所述代理的所述时间戳来重新排序所述并行任务消息,随后通过实例或实例Id来分组经重新排序的消息,同时保持时间戳重新排序。
11.根据权利要求8所述的计算机程序产品,其中,所述方法还包括:
由所述一个或多个处理器确定所述多个分区中的一个消息不是并行任务消息,并且作为响应,由所述一个或多个处理器将所述一个消息分派给所述服务。
12.根据权利要求8所述的计算机程序产品,其中,所述多个实例包括一个实例,所述一个实例包括已经到达所述多个分区的两个或多个并行任务消息和尚未到达所述多个分区的至少一个并行任务消息,并且其中,所述方法还包括:
在执行针对所述一个实例的所述排序和所述分派之前,由所述一个或多个处理器等待所述至少一个并行任务消息完成并到达所述多个分区。
13.根据权利要求8所述的计算机程序产品,其中,所述方法还包括:
由所述代理中的事件跟踪分析器使用所述一个或多个处理器分析与由所述代理所接收的所述多个实例有关的跟踪日志;
基于所述分析,由所述事件跟踪分析器使用所述一个或多个处理器生成与所述多个实例有关的运行时拓扑;以及
由所述事件跟踪分析器使用所述一个或多个处理器将所生成的运行时拓扑提供给K8s主控器中的etcd。
14.根据权利要求13所述的计算机程序产品,其中,所述方法还包括:
在已经从消息的流中获取每个消息之后,由所述代理中的事件过滤器使用所述一个或多个处理器从所述etcd接收所述运行时拓扑,以确定所获取的消息是否是并行任务消息。
15.一种计算机系统,包括一个或多个处理器、一个或多个存储器、以及一个或多个计算机可读硬件存储设备,所述一个或多个硬件存储设备包含可由所述一个或多个处理器经由所述一个或多个存储器执行的程序代码,以实施用于处理消息序列的实例的方法,所述方法包括:
由Knative eventing结构内的代理的所述一个或多个处理器接收多个实例,其中,每个实例具有实例号和相关联的实例Id,其中,每个实例包括一个或多个消息的流,其中,每个流中的每个消息与相应的任务相关联,其中,所述多个实例中的至少两个实例中的每个实例中的所述流中的所述一个或多个消息包括其相应的任务已被完成且被并行执行的多个消息,并且其中,所述代理包括Kafka事件流传输平台,所述Kafka事件流传输平台包括多个分区;
由所述一个或多个处理器将其相应的任务已被完成的所述多个实例中的所有消息分布到所述多个分区中,其中,所述至少两个实例中的至少一个实例中的每个实例中的不同消息被分布到所述多个分区中的不同分区中,并且其中,被分布在所述多个分区中的所述消息包括多个并行任务消息;
由所述一个或多个处理器通过以下操作来对所述并行任务消息进行排序:通过所述实例号或实例Id来分组所述并行任务消息,并且按照每个并行任务消息到达所述代理的时间戳的升序在每个组中顺序地排序;以及
由所述一个或多个处理器按照时间顺序将每个实例中的所述并行任务消息分派到服务,所述时间顺序由每个组中的所述并行任务消息的顺序排序来控制,所述一个或多个处理器根据先进先出(FIFO)要求来分派所述并行任务消息。
16.根据权利要求15所述的计算机系统,其中,所述排序包括:通过所述实例号或实例Id来分组所述并行任务消息,随后通过每个并行任务消息到达所述代理的所述时间戳来重新排序每个组中的所述并行任务消息。
17.根据权利要求15所述的计算机系统,其中,所述排序包括:通过每个并行任务消息到达所述代理的所述时间戳来重新排序所述并行任务消息,随后通过实例或实例Id来分组经重新排序的消息,同时保持时间戳重新排序。
18.根据权利要求15所述的计算机系统,其中,所述方法还包括:
由所述一个或多个处理器确定所述多个分区中的一个消息不是并行任务消息,并且作为响应,由所述一个或多个处理器将所述一个消息分派给所述服务。
19.根据权利要求15所述的计算机系统,其中,所述多个实例包括一个实例,所述一个实例包括已经到达所述多个分区的两个或多个并行任务消息和尚未到达所述多个分区的至少一个并行任务消息,并且其中,所述方法还包括:
在执行针对所述一个实例的所述排序和所述分派之前,由所述一个或多个处理器等待所述至少一个并行任务消息完成并到达所述多个分区。
20.根据权利要求15所述的计算机系统,其中,所述方法还包括:
由所述代理中的事件跟踪分析器使用所述一个或多个处理器分析与由所述代理所接收的所述多个实例有关的跟踪日志;
基于所述分析,由所述事件跟踪分析器使用所述一个或多个处理器生成与所述多个实例有关的运行时拓扑;以及
由所述事件跟踪分析器使用所述一个或多个处理器将所生成的运行时拓扑提供给K8s主控器中的etcd。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/498,837 US11500703B1 (en) | 2021-10-12 | 2021-10-12 | Processing concurrent message sequences |
US17/498,837 | 2021-10-12 | ||
PCT/CN2022/118125 WO2023061125A1 (en) | 2021-10-12 | 2022-09-09 | Processing concurrent message sequences |
Publications (1)
Publication Number | Publication Date |
---|---|
CN118176495A true CN118176495A (zh) | 2024-06-11 |
Family
ID=84000784
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202280068396.6A Pending CN118176495A (zh) | 2021-10-12 | 2022-09-09 | 处理并发消息序列 |
Country Status (5)
Country | Link |
---|---|
US (1) | US11500703B1 (zh) |
CN (1) | CN118176495A (zh) |
DE (1) | DE112022004032T5 (zh) |
GB (1) | GB2626477A (zh) |
WO (1) | WO2023061125A1 (zh) |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10409650B2 (en) * | 2016-02-24 | 2019-09-10 | Salesforce.Com, Inc. | Efficient access scheduling for super scaled stream processing systems |
US9917913B2 (en) * | 2016-05-23 | 2018-03-13 | Microsoft Technology Licensing, Llc | Large message support for a publish-subscribe messaging system |
US10831619B2 (en) * | 2017-09-29 | 2020-11-10 | Oracle International Corporation | Fault-tolerant stream processing |
US11153405B2 (en) * | 2019-04-08 | 2021-10-19 | Red Hat, Inc. | Transparent pattern processing in a service mesh |
US11082207B2 (en) * | 2019-11-13 | 2021-08-03 | First Genesis, Inc. | Blockchain platform as a service (BPaaS) |
WO2021121550A1 (en) * | 2019-12-16 | 2021-06-24 | Telefonaktiebolaget Lm Ericsson (Publ) | Methods and apparatus for multihoming sctp communication between a network entity and a remote host |
CN111158931A (zh) | 2019-12-30 | 2020-05-15 | 联想(北京)有限公司 | 一种针对Kafka分区的数据动态均衡方法、装置及存储介质 |
US11755608B2 (en) * | 2020-01-13 | 2023-09-12 | Salesforce, Inc. | Interactive dataflow preview |
-
2021
- 2021-10-12 US US17/498,837 patent/US11500703B1/en active Active
-
2022
- 2022-09-09 DE DE112022004032.7T patent/DE112022004032T5/de active Pending
- 2022-09-09 GB GB2405478.5A patent/GB2626477A/en active Pending
- 2022-09-09 CN CN202280068396.6A patent/CN118176495A/zh active Pending
- 2022-09-09 WO PCT/CN2022/118125 patent/WO2023061125A1/en active Application Filing
Also Published As
Publication number | Publication date |
---|---|
WO2023061125A1 (en) | 2023-04-20 |
DE112022004032T5 (de) | 2024-07-04 |
GB202405478D0 (en) | 2024-06-05 |
US11500703B1 (en) | 2022-11-15 |
GB2626477A (en) | 2024-07-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11409568B2 (en) | Dynamically scaling out pods using a recursive way | |
US10929490B2 (en) | Network search query | |
US20220066813A1 (en) | Dynamically generating an optimized processing pipeline for tasks | |
US11321121B2 (en) | Smart reduce task scheduler | |
US10891547B2 (en) | Virtual resource t-shirt size generation and recommendation based on crowd sourcing | |
US11089000B1 (en) | Automated source code log generation | |
US11514381B2 (en) | Providing customized integration flow templates | |
US20180107988A1 (en) | Estimating the Number of Attendees in a Meeting | |
WO2023050956A1 (en) | Automatic selection of nodes on which to perform tasks | |
US20220050728A1 (en) | Dynamic data driven orchestration of workloads | |
US20230222004A1 (en) | Data locality for big data on kubernetes | |
US10908969B2 (en) | Model driven dynamic management of enterprise workloads through adaptive tiering | |
US11861397B2 (en) | Container scheduler with multiple queues for special workloads | |
US10168999B2 (en) | Software object definition and integration | |
US9917809B2 (en) | Email quota management system | |
US20230110602A1 (en) | Federated learning model lineage | |
US11500703B1 (en) | Processing concurrent message sequences | |
CN114514730B (zh) | 过滤群组消息的方法和系统 | |
CN116601607A (zh) | 通过动态任务迁移跨集群进行边缘时间共享 | |
US20190139053A1 (en) | Engineering change announcement management system | |
US11658864B1 (en) | Adaptive message retention | |
US11586422B2 (en) | Automated system capacity optimization | |
US20210142234A1 (en) | Transforming parallel process models into statecharts | |
US20210158644A1 (en) | Peer partitioning to reduce strategy-driven bias in automated peer-selection 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 |