CN110427217B - 基于内容的发布订阅***匹配算法轻量级并行方法和*** - Google Patents
基于内容的发布订阅***匹配算法轻量级并行方法和*** Download PDFInfo
- Publication number
- CN110427217B CN110427217B CN201910672885.2A CN201910672885A CN110427217B CN 110427217 B CN110427217 B CN 110427217B CN 201910672885 A CN201910672885 A CN 201910672885A CN 110427217 B CN110427217 B CN 110427217B
- Authority
- CN
- China
- Prior art keywords
- matching
- parallelism
- threads
- cur
- module
- 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
- 238000004422 calculation algorithm Methods 0.000 title claims abstract description 56
- 238000000034 method Methods 0.000 title claims abstract description 32
- 238000012545 processing Methods 0.000 claims abstract description 15
- 230000001360 synchronised effect Effects 0.000 claims abstract description 7
- 238000012544 monitoring process Methods 0.000 claims description 7
- 230000008859 change Effects 0.000 claims description 6
- 238000012163 sequencing technique Methods 0.000 claims description 3
- 238000005457 optimization Methods 0.000 abstract description 4
- 230000006870 function Effects 0.000 description 5
- 238000010586 diagram Methods 0.000 description 3
- 230000003044 adaptive effect Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000011478 gradient descent method Methods 0.000 description 1
- 238000007620 mathematical function Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 230000000087 stabilizing effect Effects 0.000 description 1
Images
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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3854—Instruction completion, e.g. retiring, committing or graduating
- G06F9/3856—Reordering of instructions, e.g. using queues or age tags
-
- 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/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/505—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 load
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multi Processors (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
本发明提供了一种基于内容的发布订阅***匹配算法轻量级并行方法和***,令存储数据结构的索引结构进行分层,形成多个层级,每个层级与存储数据结构的存储单元集合相对应,将多个层级分组,每个层级分组同时包含层级和与层级对应的存储单元集合;对每个层级分组设定匹配线程,将匹配事件独立分配给单个匹配线程进行处理,多个匹配线程同时更新一个指示器,所述指示器在更新时执行同步操作。提升匹配性能,根据性能需求动态地调整并行度,从而保证事件快速可靠地分发。使用迭代优化方法来确定最佳并行度,提升线程的任务分配,使得时间开销上非常高效。
Description
技术领域
本发明涉及事件分发网络中的匹配算法领域,提出一种基于内容的发布订阅***匹配算法轻量级并行方法和***,尤其是提出一种发布/订阅***中匹配算法的并行化方法。
背景技术
发布/订阅***提供了一种中间件,用于实现数据从发布者向订阅者的分发,广泛应用于灾害监测、股票更新、社交媒体消息、在线游戏和紧急事件响应等领域。发布/订阅***在时间、空间和同步方面实现了通信双方的完全解耦,对于大规模的分布式数据分发***而言具有非常大的吸引力。特别是,基于内容的发布/订阅***为订阅者提供了表达其兴趣(订阅)的能力,可以支持细粒度的选择性信息分发。
对于基于内容的发布/订阅***,匹配算法是其关键模块,因为它对整个***的性能有着非常大的影响。为了提供快速稳定的事件分发服务,在不同数据结构的支持下,研究人员提出了许多高效的匹配算法。此外,利用多核CPU、GPU和FPGA等硬件,研究人员提出了多个并行匹配算法。但是,这些并行匹配算法无法根据动态工作负载的变化情况和性能要求自适应地调整并行度。
与本申请相关的现有技术是专利文献CN101295311B,公开了大规模发布订阅***的语义匹配算法,包括如下步骤:1)为订阅图建立索引;2)转化事件到特定的数据结构;3)把事件图的数据结构提交给事件匹配器;4)事件匹配器进行事件图同订阅图模式的匹配运算,找出匹配的订阅,由***把事件分发给匹配的订阅者。降低事件与订阅匹配的时间,提高事件匹配效率,使得随着订阅和发布事件数目的增加,事件匹配效率不会受到严重的影响,***性能不会恶化。同时,根据匹配服务器的内核体系结构自适应调整匹配算法,充分利用多核技术提高匹配效率。
发明内容
针对现有技术中的缺陷,本发明的目的是提供一种基于内容的发布订阅***匹配算法轻量级并行方法和***。
根据本发明提供的一种基于内容的发布订阅***匹配算法轻量级并行方法,包括:
分组并行步骤:令存储数据结构的索引结构进行分层,形成多个层级,每个层级与存储数据结构的存储单元集合相对应,将多个层级分组,每个层级分组同时包含层级和与层级对应的存储单元集合;
匹配分配步骤:对每个层级分组设定匹配线程,将匹配事件独立分配给单个匹配线程进行处理,多个匹配线程同时更新一个指示器,所述指示器在更新时执行同步操作。
优选地,所述的基于内容的发布订阅***匹配算法轻量级并行方法,还包括匹配调整步骤:动态识别订阅数量,根据订阅数量的变化,使用迭代自适应地调整匹配线程的并行度,使得匹配线程的匹配时间小于设定阈值。
优选地,所述匹配分配步骤包括:
监视步骤:通过监视器收集事件信息,并发送至决策器,所述事件信息包括事件的匹配时间和每个属性索引的谓词数量;
决策步骤:根据当前匹配时间、预期匹配时间的性能要求和可用线程个数做出调整决策,根据调整决策形成匹配线程的并行度;
调节步骤:接收匹配线程的并行度,根据所述并行度进行分配形成多个匹配任务,执行匹配线程的初始化,并启动并行执行匹配任务。
优选地,所述决策步骤包括:
步骤S1:设定一个包含s个事件的时间窗口,计算当前时间窗口中s个事件的平均匹配时间Tcur,并与预期的匹配时间Texp比较;
步骤S2:如果Tcur=Texp,不修改并行度d;
步骤S3:如果Tcur<(1-r)Texp,减少并行度d释放多余的计算资源,r表示匹配算法性能波动幅度(百分比%);
步骤S4:如果Tcur>(1-r)Texp,并且dcur>1,通过以下公式计算下一个窗口内的并行度dnext:
满足条件:dnext≤t
其中t表示当前可用的线程个数,dnext、dcur和dlast分别表示下一个窗口、当前窗口和前一个窗口内的并行度,Tcur和Tlast分别表示当前窗口和前一个窗口内s个事件的平均匹配时间,α用于确定并行度调整的方向,即增多或者减少。
优选地,所述调节步骤包括:
任务排序步骤:令形成的多个匹配任务依照工作量进行降序排序,形成降序排序列表;
贪婪分配步骤:依次处理降序排序列表中的每个匹配任务,贪婪地将所述匹配任务分配给当前总负担最小的匹配线程。
根据本发明提供的一种基于内容的发布订阅***匹配算法轻量级并行***,包括:
分组并行模块:令存储数据结构的索引结构进行分层,形成多个层级,每个层级与存储数据结构的存储单元集合相对应,将多个层级分组,每个层级分组同时包含层级和与层级对应的存储单元集合;
匹配分配模块:对每个层级分组设定匹配线程,将匹配事件独立分配给单个匹配线程进行处理,多个匹配线程同时更新一个指示器,所述指示器在更新时执行同步操作。
优选地,所述的基于内容的发布订阅***匹配算法轻量级并行***,还包括匹配调整模块:动态识别订阅数量,根据订阅数量的变化,使用迭代自适应地调整匹配线程的并行度,使得匹配线程的匹配时间小于设定阈值。
优选地,所述匹配分配模块包括:
监视模块:通过监视器收集事件信息,并发送至决策器,所述事件信息包括事件的匹配时间和每个属性索引的谓词数量;
决策模块:根据当前匹配时间、预期匹配时间的性能要求和可用线程个数做出调整决策,根据调整决策形成匹配线程的并行度;
调节模块:接收匹配线程的并行度,根据所述并行度进行分配形成多个匹配任务,执行匹配线程的初始化,并启动并行执行匹配任务。
优选地,所述决策模块包括:
模块S1:设定一个包含s个事件的时间窗口,计算当前时间窗口中s个事件的平均匹配时间Tcur,并与预期的匹配时间Texp比较;
模块S2:如果Tcur=Texp,不修改并行度d;
模块S3:如果Tcur<(1-r)Texp,减少并行度d释放多余的计算资源,r表示匹配算法性能波动幅度(百分比%);
模块S4:如果Tcur>(1-r)Texp,并且dcur>1,通过以下公式计算下一个窗口内的并行度dnext:
满足条件:dnext≤t
其中t表示当前可用的线程个数,dnext、dcur和dlast分别表示下一个窗口、当前窗口和前一个窗口内的并行度,Tcur和Tlast分别表示当前窗口和前一个窗口内s个事件的平均匹配时间,α用于确定并行度调整的方向,即增多或者减少。
优选地,所述调节模块包括:
任务排序模块:令形成的多个匹配任务依照工作量进行降序排序,形成降序排序列表;
贪婪分配模块:依次处理降序排序列表中的每个匹配任务,贪婪地将所述匹配任务分配给当前总负担最小的匹配线程。
与现有技术相比,本发明具有如下的有益效果:
1、针对基于内容的发布/订阅***在事件匹配操作上的性能瓶颈,提升匹配性能,并且根据性能需求动态地调整并行度,从而保证事件快速可靠地分发。
2、使用迭代优化方法来确定最佳并行度,提升线程的任务分配,使得时间开销上比较高效。
3、针对发布/订阅***的波动,在并行运行中根据变化的工作负载自适应调整并行度,提升匹配性能并缩小性能波动范围,并同时使得基于内容的发布/订阅***可以部署在一些时间敏感的场景中。
附图说明
通过阅读参照以下附图对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显:
图1为本发明的数据结构抽象图;
图2为本发明的基于TAMA数据结构的线程并行化示意图;
图3为本发明的并行化匹配的模块框架图。
具体实施方式
下面结合具体实施例对本发明进行详细说明。以下实施例将有助于本领域的技术人员进一步理解本发明,但不以任何形式限制本发明。应当指出的是,对本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变化和改进。这些都属于本发明的保护范围。
根据本发明提供的一种基于内容的发布订阅***匹配算法轻量级并行方法,包括:
分组并行步骤:令存储数据结构的索引结构进行分层,形成多个层级,每个层级与存储数据结构的存储单元集合相对应,将多个层级分组,每个层级分组同时包含层级和与层级对应的存储单元集合;
匹配分配步骤:对每个层级分组设定匹配线程,将匹配事件独立分配给单个匹配线程进行处理,多个匹配线程同时更新一个指示器,所述指示器在更新时执行同步操作。
具体地,所述的基于内容的发布订阅***匹配算法轻量级并行方法,还包括匹配调整步骤:动态识别订阅数量,根据订阅数量的变化,使用迭代自适应地调整匹配线程的并行度,使得匹配线程的匹配时间小于设定阈值。
具体地,所述匹配分配步骤包括:
监视步骤:通过监视器收集事件信息,并发送至决策器,所述事件信息包括事件的匹配时间和每个属性索引的谓词数量;
决策步骤:根据当前匹配时间、预期匹配时间的性能要求和可用线程个数做出调整决策,根据调整决策形成匹配线程的并行度;
调节步骤:接收匹配线程的并行度,根据所述并行度进行分配形成多个匹配任务,执行匹配线程的初始化,并启动并行执行匹配任务。
具体地,所述决策步骤包括:
步骤S1:设定一个包含s个事件的时间窗口,计算当前时间窗口中s个事件的平均匹配时间Tcur,并与预期的匹配时间Texp比较;
步骤S2:如果Tcur=Texp,不修改并行度d;
步骤S3:如果Tcur<(1-r)Texp,减少并行度d释放多余的计算资源,r表示匹配算法性能波动幅度(百分比%);
步骤S4:如果Tcur>(1-r)Texp,并且dcur>1,通过以下公式计算下一个窗口内的并行度dnext:
满足条件:dnext≤t
其中t表示当前可用的线程个数,dnext、dcur和dlast分别表示下一个窗口、当前窗口和前一个窗口内的并行度,Tcur和Tlast分别表示当前窗口和前一个窗口内s个事件的平均匹配时间,α用于确定并行度调整的方向,即增多或者减少。
具体地,所述调节步骤包括:
任务排序步骤:令形成的多个匹配任务依照工作量进行降序排序,形成降序排序列表;
贪婪分配步骤:依次处理降序排序列表中的每个匹配任务,贪婪地将所述匹配任务分配给当前总负担最小的匹配线程。
根据本发明提供的一种基于内容的发布订阅***匹配算法轻量级并行***,包括:
分组并行模块:令存储数据结构的索引结构进行分层,形成多个层级,每个层级与存储数据结构的存储单元集合相对应,将多个层级分组,每个层级分组同时包含层级和与层级对应的存储单元集合;
匹配分配模块:对每个层级分组设定匹配线程,将匹配事件独立分配给单个匹配线程进行处理,多个匹配线程同时更新一个指示器,所述指示器在更新时执行同步操作。
具体地,所述的基于内容的发布订阅***匹配算法轻量级并行***,还包括匹配调整模块:动态识别订阅数量,根据订阅数量的变化,使用迭代自适应地调整匹配线程的并行度,使得匹配线程的匹配时间小于设定阈值。
具体地,所述匹配分配模块包括:
监视模块:通过监视器收集事件信息,并发送至决策器,所述事件信息包括事件的匹配时间和每个属性索引的谓词数量;
决策模块:根据当前匹配时间、预期匹配时间的性能要求和可用线程个数做出调整决策,根据调整决策形成匹配线程的并行度;
调节模块:接收匹配线程的并行度,根据所述并行度进行分配形成多个匹配任务,执行匹配线程的初始化,并启动并行执行匹配任务。
具体地,所述决策模块包括:
模块S1:设定一个包含s个事件的时间窗口,计算当前时间窗口中s个事件的平均匹配时间Tcur,并与预期的匹配时间Texp比较;
模块S2:如果Tcur=Texp,不修改并行度d;
模块S3:如果Tcur<(1-r)Texp,减少并行度d释放多余的计算资源,r表示匹配算法性能波动幅度(百分比%);
模块S4:如果Tcur>(1-r)Texp,并且dcur>1,通过以下公式计算下一个窗口内的并行度dnext:
满足条件:dnext≤t
其中t表示当前可用的线程个数,dnext、dcur和dlast分别表示下一个窗口、当前窗口和前一个窗口内的并行度,Tcur和Tlast分别表示当前窗口和前一个窗口内s个事件的平均匹配时间,α用于确定并行度调整的方向,即增多或者减少。
具体地,所述调节模块包括:
任务排序模块:令形成的多个匹配任务依照工作量进行降序排序,形成降序排序列表;
贪婪分配模块:依次处理降序排序列表中的每个匹配任务,贪婪地将所述匹配任务分配给当前总负担最小的匹配线程。
对于基于内容的发布/订阅***而言,匹配算法是***的核心功能,因为它对整个***的性能有着非常大的影响。为了提供快速稳定的事件分发服务,在不同数据结构的支持下,研究人员提出了许多高效的匹配算法。在现有工作的基础上,本发明提出了一种针对现有匹配算法的轻量级并行方法,可进一步提升和稳定匹配算法的性能。
通过对常见的匹配算法TAMA、OpIndex和REIN的数据结构进行深入分析,发现它们之间存在共性。抽象地说,这些数据结构主要由三个部分组成:一个分层的索引结构、一组存储单元集合和一组指标器。基于此抽象视图,通过水平分割分层的索引结构,可以有效地将顺序执行的匹配过程并行化为多个并行执行的子过程,从而实现匹配算法的并行化。抽象结构如图1所示,其中分层索引结构包含一个或多个层,每个层构建在某个关键字上,例如属性(TAMA、OpIndex和REIN)、离散化(TAMA)或运算符(OpIndex)。对于最高层的每个级别,都有一组单元来存储谓词。此外,由于订阅中包含的谓词是单独存储的,因此每个订阅都需要一个指示器,匹配算法基于指示器判断订阅是否匹配。指示器实际上维护了属于同一个订阅的谓词的包含关系。对于TAMA和OpIndex,计数器用作每个订阅的指示器,而REIN只使用一个比特位实现谓词与订阅的关联。
本发明中的并行化首先是基于数据结构的抽象视图,在执行事件匹配时,TAMA、OpIndex和REIN依次遍历第一层的每个级别,并评估存储在与级别对应的存储单元中的谓词。由于同一个层的各个级别之间不存在关联关系,匹配操作可以由多个线程并行执行。这样,每个线程负责第一层中的一个或多个级别。
第一层各级别之间存在的独立性为使用多个线程实现事件匹配的并行化成为可能。以图2中所示的TAMA的匹配并行化为例来说明并行化的基本思想。TAMA的索引结构分为两层,第一层是基于属性的,第二层是基于离散化的。对于离散化层中的每个级别,都有一个对应的存储单元集合。由于第一层中的各个级别相对独立,因此可以将它们水平分割为多个组,每组分配给一个线程。在图2所示的TAMA数据结构中,第一层的L个级别被划分为t组。匹配事件时,每个线程独立地执行分配给它的事件匹配任务。由于多个线程需要同时更新一个指示器,为了保证更新的一致性,在指示器更新时需要执行同步操作。
这样,匹配算法就可以根据不断变化的工作负载和性能要求动态调整执行匹配操作的线程个数,即并行度。此外,所有正在运行的线程都基于一个公共的数据结构来执行事件匹配,因此内存消耗较低。
为了量化事件匹配任务,本发明使用存储在每个级别对应存储单元中的谓词数量作为度量指标。例如,在图2所示的TAMA数据结构中,对于每个属性,存储在由该属性索引的存储单元中的谓词数量被用于量化匹配负担的指标。
因此,并行化需要确定并行度,尤其是在一些动态环境中,订阅数量所代表的工作负载会随时间而变化。在这种情况下,通过自适应地调整适当的并行度,可以保证匹配时间不大于给定的阈值,从而保证发布/订阅***提供稳定的事件分发服务。
这种自适应调整存在两个难点。首先,匹配算法的性能通常在一定范围内波动。换句话说,当对同一组订阅匹配不同的事件时,这些事件的匹配时间会有所不同。一般来说,波动幅度与匹配时间成正比。因此,提高匹配性能可以缩短波动幅度。其次,动态环境中不断变化的工作负载加剧了这个问题。因此,要求自适应调整应该非常有效,以快速响应不断变化的工作负载。
让d表示并行度,并将匹配时间标记为T。直观地,T可以表示为d的函数。因此,将确定并行度的问题转化为在匹配时间不大于阈值的约束下求函数的最小值。但是,匹配时间与并行度的关系受线程个数、计算与同步的成本比、订阅数量、属性个数、属性分布、硬件等诸多因素的影响。因此,即使可能,这个数学函数也是非常复杂的。最重要的是,匹配时间和并行度之间存在着相关性,即增加并行度会在达到极限之前在一定程度上减少匹配时间。
受梯度下降方法的启发,本发明使用迭代优化的方法来确定最优的并行度d。其过程如下:
(1)设定一个包含s个事件的时间窗口;
(2)计算当前时间窗口中s个事件的平均匹配时间Tcur,并与预期的匹配时间Texp比较;
(3)如果Tcur=Texp,不修改并行度d;
(4)如果Tcur<(1-r)Texp,减少并行度d释放多余的计算资源,r表示匹配算法性能波动幅度(百分比%);
(5)如果Tcur>(1-r)Texp,并且dcur>1,通过以下公式计算下一个窗口内的并行度dnext:
满足条件:dnext≤t
其中t表示当前可用的线程个数,dnext、dcur和dlast分别表示下一个窗口、当前窗口和前一个窗口内的并行度,Tcur和Tlast分别表示当前窗口和前一个窗口内s个事件的平均匹配时间,α用于确定并行度调整的方向,即增多还是减少。
在计算匹配任务分配方案时,确定并行度d,还需要实现对d个线程匹配任务的最佳分配,这意味着d个线程的匹配负担应该具有最小的标准偏差。这个任务分配问题等价于背包问题,它是NP困难问题。
在本发明所涉及的匹配算法并行化场景中,不需要付出高昂的时间代价来计算最优解。因此,本发明提出了一种贪婪算法(称为CTA)来获得任务分配解决方案,CTA算法流程为:
(1)对所有任务按工作量降序排序。
(2)依次处理降序排序列表中的每个任务,贪婪地将其分配给当前总负担最小的线程。
在并行化实现中,本发明采取模块化的处理方式,在Kafka消息队列中间件上实现TAMA、OpIndex和REIN三个匹配算法,并模块化实现了本发明提出的并行化方法,其功能分解为三个子模块:监视器、决策器和调节器,如图3所示。这些子模块协同工作,实现对REIN、TAMA和OPINDEX匹配算法的并行化。其中,监视器收集***信息,主要基于历史数据进行分析处理得到一些统计结果,包括事件的匹配时间和每个属性索引的谓词数量。还包括前一个时间窗口和当前时间窗口内的事件平均匹配时间,以及当前工作负载情况。这些信息发送给决策器,决策器根据监视器得到的***信息、指定的的性能要求(期望的匹配时间)和当前可用的线程数量,确定并行度;并根据当前匹配时间、预期匹配时间的性能要求和可用线程个数做出调整决策。决策器确定调整后的并行度d并将其传给调整器。给定并行度d,调整器通过执行任务分配算法CAT为d个线程计算任务分配解决方案,然后初始化d个匹配线程以并行执行分配的匹配任务。
本发明提出的匹配算法并行化方法的主要工作表现在两个方面。首先,考虑到工作负载的变化情况,第一个问题是如何确定适当的并行度,即匹配线程的数量,以满足指定的性能要求。对于给定的并行度,第二个问题是如何均匀地将事件匹配任务分配给线程?为了解决这些问题,本发明使用迭代优化方法来确定最佳并行度。为了计算线程的任务分配方案,提出了一种贪婪算法,该算法在时间开销方面是高效的。
本发明的主要优点是提高和稳定了匹配算法的性能,对现有匹配算法并行化的方法,可以动态地调整并行度以满足性能的需求,探索了一种进提升和稳定匹配性能的方法。首先,匹配算法的性能会产生波动。本发明提出的并行化方法不仅提升了匹配性能,而且缩小了性能波动范围。其次,本发明提出的并行化方法能够根据变化的工作负载自适应调整并行度,使匹配算法的性能稳定,符合指定要求。有了这个动态调整的特性,基于内容的发布/订阅***可以部署在一些时间敏感的场景中,例如股票更新,以提供具有QoS保证的事件分发服务。
本领域技术人员知道,除了以纯计算机可读程序代码方式实现本发明提供的***、装置及其各个模块以外,完全可以通过将方法步骤进行逻辑编程来使得本发明提供的***、装置及其各个模块以逻辑门、开关、专用集成电路、可编程逻辑控制器以及嵌入式微控制器等的形式来实现相同程序。所以,本发明提供的***、装置及其各个模块可以被认为是一种硬件部件,而对其内包括的用于实现各种程序的模块也可以视为硬件部件内的结构;也可以将用于实现各种功能的模块视为既可以是实现方法的软件程序又可以是硬件部件内的结构。
以上对本发明的具体实施例进行了描述。需要理解的是,本发明并不局限于上述特定实施方式,本领域技术人员可以在权利要求的范围内做出各种变化或修改,这并不影响本发明的实质内容。在不冲突的情况下,本申请的实施例和实施例中的特征可以任意相互组合。
Claims (6)
1.一种基于内容的发布订阅***匹配算法轻量级并行方法,其特征在于,包括:
分组并行步骤:令存储数据结构的索引结构进行分层,形成多个层级,每个层级与存储数据结构的存储单元集合相对应,将多个层级分组,每个层级分组同时包含层级和与层级对应的存储单元集合;
匹配分配步骤:对每个层级分组设定匹配线程,将匹配事件独立分配给单个匹配线程进行处理,多个匹配线程同时更新一个指示器,所述指示器在更新时执行同步操作;
还包括匹配调整步骤:动态识别订阅数量,根据订阅数量的变化,使用迭代自适应地调整匹配线程的并行度,使得匹配线程的匹配时间小于设定阈值;
所述匹配分配步骤包括:
监视步骤:通过监视器收集事件信息,并发送至决策器,所述事件信息包括事件的匹配时间和每个属性索引的谓词数量;
决策步骤:根据当前匹配时间、预期匹配时间的性能要求和可用线程个数做出调整决策,根据调整决策形成匹配线程的并行度;
调节步骤:接收匹配线程的并行度,根据所述并行度进行分配形成多个匹配任务,执行匹配线程的初始化,并启动并行执行匹配任务。
2.根据权利要求1所述的基于内容的发布订阅***匹配算法轻量级并行方法,其特征在于,所述决策步骤包括:
步骤S1:设定一个包含s个事件的时间窗口,计算当前时间窗口中s个事件的平均匹配时间Tcur,并与预期的匹配时间Texp比较;
步骤S2:如果Tcur=Texp,不修改并行度d;
步骤S3:如果Tcur<(1-r)Texp,减少并行度d释放多余的计算资源,r表示匹配算法性能波动幅度(百分比%);
步骤S4:如果Tcur>(1-r)Texp,并且dcur>1,通过以下公式计算下一个窗口内的并行度dnext:
满足条件:dnext≤t
其中t表示当前可用的线程个数,dnext、dcur和dlast分别表示下一个窗口、当前窗口和前一个窗口内的并行度,Tcur和Tlast分别表示当前窗口和前一个窗口内s个事件的平均匹配时间,α用于确定并行度调整的方向。
3.根据权利要求1所述的基于内容的发布订阅***匹配算法轻量级并行方法,其特征在于,所述调节步骤包括:
任务排序步骤:令形成的多个匹配任务依照工作量进行降序排序,形成降序排序列表;
贪婪分配步骤:依次处理降序排序列表中的每个匹配任务,贪婪地将所述匹配任务分配给当前总负担最小的匹配线程。
4.一种基于内容的发布订阅***匹配算法轻量级并行***,其特征在于,包括:
分组并行模块:令存储数据结构的索引结构进行分层,形成多个层级,每个层级与存储数据结构的存储单元集合相对应,将多个层级分组,每个层级分组同时包含层级和与层级对应的存储单元集合;
匹配分配模块:对每个层级分组设定匹配线程,将匹配事件独立分配给单个匹配线程进行处理,多个匹配线程同时更新一个指示器,所述指示器在更新时执行同步操作;
还包括匹配调整模块:动态识别订阅数量,根据订阅数量的变化,使用迭代自适应地调整匹配线程的并行度,使得匹配线程的匹配时间小于设定阈值;
所述匹配分配模块包括:
监视模块:通过监视器收集事件信息,并发送至决策器,所述事件信息包括事件的匹配时间和每个属性索引的谓词数量;
决策模块:根据当前匹配时间、预期匹配时间的性能要求和可用线程个数做出调整决策,根据调整决策形成匹配线程的并行度;
调节模块:接收匹配线程的并行度,根据所述并行度进行分配形成多个匹配任务,执行匹配线程的初始化,并启动并行执行匹配任务。
5.根据权利要求4所述的基于内容的发布订阅***匹配算法轻量级并行***,其特征在于,所述决策模块包括:
模块S1:设定一个包含s个事件的时间窗口,计算当前时间窗口中s个事件的平均匹配时间Tcur,并与预期的匹配时间Texp比较;
模块S2:如果Tcur=Texp,不修改并行度d;
模块S3:如果Tcur<(1-r)Texp,减少并行度d释放多余的计算资源,r表示匹配算法性能波动幅度(百分比%);
模块S4:如果Tcur>(1-r)Texp,并且dcur>1,通过以下公式计算下一个窗口内的并行度dnext:
满足条件:dnext≤t
其中t表示当前可用的线程个数,dnext、dcur和dlast分别表示下一个窗口、当前窗口和前一个窗口内的并行度,Tcur和Tlast分别表示当前窗口和前一个窗口内s个事件的平均匹配时间,α用于确定并行度调整的方向。
6.根据权利要求4所述的基于内容的发布订阅***匹配算法轻量级并行***,其特征在于,所述调节模块包括:
任务排序模块:令形成的多个匹配任务依照工作量进行降序排序,形成降序排序列表;
贪婪分配模块:依次处理降序排序列表中的每个匹配任务,贪婪地将所述匹配任务分配给当前总负担最小的匹配线程。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910672885.2A CN110427217B (zh) | 2019-07-24 | 2019-07-24 | 基于内容的发布订阅***匹配算法轻量级并行方法和*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910672885.2A CN110427217B (zh) | 2019-07-24 | 2019-07-24 | 基于内容的发布订阅***匹配算法轻量级并行方法和*** |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110427217A CN110427217A (zh) | 2019-11-08 |
CN110427217B true CN110427217B (zh) | 2021-07-30 |
Family
ID=68412250
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910672885.2A Active CN110427217B (zh) | 2019-07-24 | 2019-07-24 | 基于内容的发布订阅***匹配算法轻量级并行方法和*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110427217B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112100557B (zh) * | 2020-09-01 | 2022-11-29 | 上海交通大学 | 基于内容发布订阅的组合匹配***与方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101295311A (zh) * | 2008-06-17 | 2008-10-29 | 浙江大学 | 一种大规模发布订阅***的语义匹配算法 |
CN101510213A (zh) * | 2009-03-23 | 2009-08-19 | 杭州电子科技大学 | 基于本体的大规模发布订阅流水线匹配方法 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8201082B1 (en) * | 2002-06-17 | 2012-06-12 | Amazon.Com, Inc. | Dynamic generation of documents |
US20100049693A1 (en) * | 2008-08-25 | 2010-02-25 | Alcatel-Lucent | System and method of cache based xml publish/subscribe |
CN101667202A (zh) * | 2009-10-19 | 2010-03-10 | 浙江大学 | 一种多核架构下基于语义的发布订阅***中并行匹配方法 |
US8675518B2 (en) * | 2010-02-02 | 2014-03-18 | Micorsoft Corporation | Message transport system using publication and subscription mechanisms |
CN107896230B (zh) * | 2017-12-26 | 2020-04-10 | 车智互联(北京)科技有限公司 | 一种支持高并发命令执行通道的*** |
-
2019
- 2019-07-24 CN CN201910672885.2A patent/CN110427217B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101295311A (zh) * | 2008-06-17 | 2008-10-29 | 浙江大学 | 一种大规模发布订阅***的语义匹配算法 |
CN101510213A (zh) * | 2009-03-23 | 2009-08-19 | 杭州电子科技大学 | 基于本体的大规模发布订阅流水线匹配方法 |
Non-Patent Citations (3)
Title |
---|
Event Modeling for Content Based Publish/Subscribe Systems;S.D.MadhuKumar等;《2009 International Conference on Advances in Recent Technologies in Communication and Computing》;IEEE;20091117;第855-859页 * |
分布式语义发布/订阅***的若干关键技术研究;钱剑锋;《中国博士学位论文全文数据库,信息科技辑》;中国知网;20120715(第7期);第51-70页 * |
钱剑锋.分布式语义发布/订阅***的若干关键技术研究.《中国博士学位论文全文数据库,信息科技辑》.中国知网,2012,(第7期),第51-70页. * |
Also Published As
Publication number | Publication date |
---|---|
CN110427217A (zh) | 2019-11-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109933306B (zh) | 一种基于作业类型识别的自适应混合云计算框架生成方法 | |
US9197703B2 (en) | System and method to maximize server resource utilization and performance of metadata operations | |
EP3593247A1 (en) | Training machine learning models on a large-scale distributed system using a job server | |
CN109564528B (zh) | 分布式计算中计算资源分配的***和方法 | |
US20150149501A1 (en) | Scheduling Database Queries Based on Elapsed Time of Queries | |
US20140351820A1 (en) | Apparatus and method for managing stream processing tasks | |
CN114610474B (zh) | 一种异构超算环境下多策略的作业调度方法及*** | |
CN111464659A (zh) | 节点的调度、节点的预选处理方法、装置、设备及介质 | |
CN108509280B (zh) | 一种基于推送模型的分布式计算集群本地性调度方法 | |
CN114787830A (zh) | 异构集群中的机器学习工作负载编排 | |
CN112148451B (zh) | 一种低时延的协同自适应cnn推断***及方法 | |
De Souza et al. | Boosting big data streaming applications in clouds with BurstFlow | |
CN105488134A (zh) | 大数据处理方法及大数据处理装置 | |
CN111767145A (zh) | 容器调度***、方法、装置和设备 | |
CN117608840A (zh) | 一种智能监控***资源综合管理的任务处理方法及*** | |
CN116684420A (zh) | 集群资源调度方法、装置、集群***和可读存储介质 | |
CN110427217B (zh) | 基于内容的发布订阅***匹配算法轻量级并行方法和*** | |
CN108595251B (zh) | 动态图更新方法、装置、存储引擎接口和程序介质 | |
EP4300305A1 (en) | Methods and systems for energy-efficient scheduling of periodic tasks on a group of processing devices | |
CN116700933B (zh) | 一种面向异构算力联邦的多集群作业调度***和方法 | |
CN116701001B (zh) | 目标任务分配方法、装置、电子设备及存储介质 | |
CN116166396A (zh) | 调度模型的训练方法、装置、电子设备及可读存储介质 | |
CN116010051A (zh) | 一种联邦学习多任务调度方法及装置 | |
CN110415162B (zh) | 大数据中面向异构融合处理器的自适应图划分方法 | |
US20230418667A1 (en) | Computing device for handling tasks in a multi-core processor, and method for operating computing device |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |