CN115443642A - 跨规则引擎的实例的规则分发 - Google Patents
跨规则引擎的实例的规则分发 Download PDFInfo
- Publication number
- CN115443642A CN115443642A CN202180030503.1A CN202180030503A CN115443642A CN 115443642 A CN115443642 A CN 115443642A CN 202180030503 A CN202180030503 A CN 202180030503A CN 115443642 A CN115443642 A CN 115443642A
- Authority
- CN
- China
- Prior art keywords
- rule
- tenant
- load
- rules
- determining
- 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
- 238000009826 distribution Methods 0.000 title claims description 57
- 238000000034 method Methods 0.000 claims abstract description 48
- 238000003860 storage Methods 0.000 claims description 23
- 238000012544 monitoring process Methods 0.000 claims description 18
- 238000004590 computer program Methods 0.000 claims description 12
- 230000009471 action Effects 0.000 claims description 8
- 230000001960 triggered effect Effects 0.000 claims description 6
- 230000002776 aggregation Effects 0.000 claims description 4
- 238000004220 aggregation Methods 0.000 claims description 4
- 230000004931 aggregating effect Effects 0.000 claims 1
- 238000012545 processing Methods 0.000 description 18
- 238000010586 diagram Methods 0.000 description 17
- 230000006870 function Effects 0.000 description 13
- 238000005457 optimization Methods 0.000 description 13
- 238000011156 evaluation Methods 0.000 description 9
- 230000008901 benefit Effects 0.000 description 8
- 238000012986 modification Methods 0.000 description 6
- 230000004048 modification Effects 0.000 description 6
- 230000003287 optical effect Effects 0.000 description 6
- 230000008569 process Effects 0.000 description 6
- 238000007726 management method Methods 0.000 description 5
- 230000005540 biological transmission Effects 0.000 description 4
- 238000004891 communication Methods 0.000 description 4
- 238000013507 mapping Methods 0.000 description 4
- 238000013210 evaluation model Methods 0.000 description 3
- 230000006855 networking Effects 0.000 description 3
- 230000004075 alteration Effects 0.000 description 2
- 239000000835 fiber Substances 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 230000008520 organization Effects 0.000 description 2
- 230000001902 propagating effect Effects 0.000 description 2
- 230000004044 response Effects 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
- 230000009118 appropriate response 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
- 230000001186 cumulative effect Effects 0.000 description 1
- 238000007405 data analysis Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000005259 measurement Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000013439 planning Methods 0.000 description 1
- 238000013468 resource allocation Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000009897 systematic effect Effects 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1001—Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
- H04L67/1004—Server selection for load balancing
- H04L67/1023—Server selection for load balancing based on a hash applied to IP addresses or costs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N5/00—Computing arrangements using knowledge-based models
- G06N5/02—Knowledge representation; Symbolic representation
- G06N5/022—Knowledge engineering; Knowledge acquisition
- G06N5/025—Extracting rules from data
-
- 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
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N5/00—Computing arrangements using knowledge-based models
- G06N5/04—Inference or reasoning models
- G06N5/046—Forward inferencing; Production systems
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1097—Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- Evolutionary Computation (AREA)
- Computing Systems (AREA)
- Data Mining & Analysis (AREA)
- Mathematical Physics (AREA)
- Computational Linguistics (AREA)
- Artificial Intelligence (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
- Debugging And Monitoring (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
提供了一种用于跨规则引擎的实例分发规则的方法。该方法包括确定多个规则集合中的每个规则集合的规则负载。每个规则集合与托管在多租户系统上的多个租户中的租户相关联。该方法包括将每个规则集合的规则负载组合成整体规则负载。该方法还包括跨规则引擎实例集合分发规则集合,使得总体规则负载的大致相同部分被分配给规则引擎实例集合中的每个规则引擎实例。
Description
背景技术
本公开总体上涉及规则服务领域,并且更具体地涉及跨规则引擎的多个独立实例的规则的执行的分发。
现代规则引擎保持规则集合的内存模型以促进规则的快速评估。在现代微型服务环境中,规则服务通常同时部署规则引擎的多个实例以进一步促进规则的快速评估。
发明内容
本公开的实施例包括用于跨规则引擎的独立实例分发规则的方法、计算机程序产品和系统。该方法包括确定多个规则集合中的每个规则集合的规则负载。每个规则集合与托管在多租户系统上的多个租户中的租户相关联。该方法还包括将规则负载组合成整体规则负载。该方法还包括跨规则引擎实例集合分发多个规则集合,使得总体规则负载的大致相同部分被分配给规则引擎实例集合中的每个规则引擎实例。
以上发明内容并不旨在描述本公开的每个所示实施例或每个实现方式。
附图说明
包括在本公开中的附图被结合到说明书中并且形成说明书的一部分。它们示出了本公开的实施例,并且与描述一起用于解释本公开的原理。附图仅是对典型实施例的说明,而并不限制本公开。
图1示出了根据本公开的实施例的示例规则执行系统的框图。
图2示出了根据本公开的实施例的用于将规则分配给规则引擎实例的示例方法的流程图。
图3示出了根据本公开的实施例的用于执行规则请求的示例方法的流程图;
图4示出了根据本公开的实施例的用于规则分发优化和缩放的示例系统的框图。
图5示出了根据本公开的实施例的用于优化规则模型的分发的示例方法的流程图。
图6示出了根据本公开的实施例的示例计算机系统的高级框图,该计算机系统可以用于实现本文描述的方法、工具和模块和任何相关功能中的一个或多个。
图7描绘了根据本公开的实施例的云计算环境。
图8描绘了根据本公开的实施例的抽象模型层。
虽然本文描述的这些实施例服从不同修改和替代形式,但是其细节已经通过举例在附图中示出并且将被详细描述。然而,应当理解,所描述的特定实施例不应被视为限制性的。相反,本发明旨在覆盖落入本发明的精神和范围内的所有修改、等同物和替代物。
具体实施方式
本公开的各方面一般涉及规则服务领域,尤其涉及跨规则引擎的独立实例来分发规则的执行。虽然本公开不必限于这样的应用,但是可以通过使用该上下文对不同示例的讨论来理解本公开的各个方面。
规则引擎可以用于处理多种类型的请求并且返回适当的响应。规则引擎可以利用规则集合(每个规则具有条件和相关联的动作)来处理数据并生成(或过滤)结果(例如,基于所处理的数据来选择动作)。例如,规则引擎可以用作搜索引擎的一部分。搜索引擎以系统方式执行对特定信息的请求搜索。然后将搜索结果返回给请求者。如何呈现搜索的结果,例如以什么顺序,由规则引擎管理。更具体地,规则引擎将一个或多个规则集合应用于结果以确定结果被呈现给请求者的方式。规则的一个或多个集合根据生成规则的实体的目标而不同。
例如,在在线零售商的情况下,出于多种原因之一,零售商促销特定物品可能是有利的。例如,物品可以具有有限的保质期,并且零售商可能需要在其到期之前销售更多的物品。另外或可替代地,零售商可以从特定供应商接收销售物品的特定益处,并且因此被激励从该供应商销售更多物品。除此之外或作为另外一种选择,零售商可能想要销售更多特定物品以便为新的或不同的物品腾出空间。在这些示例环境的每一个以及许多其他情况下,零售商能够对如何将搜索结果的列表呈现给消费者施加某种控制是有利的。例如,零售商可修改搜索结果,使得特定项目被突出显示、首先示出,或以其他方式更容易引起消费者的注意。零售商可经由规则引擎应用于消费者搜索的结果的一个或多个规则集合施加这样的控制。
在微服务环境中,由微服务提供商向租户提供不同服务(本文也称为微服务)。租户可以是例如在线零售商。要提供给租户的微服务可以是例如搜索结果的检索或规则集合的应用。微服务提供商通常操作多租户系统,其中单个微服务提供商向多个租户提供微服务。此类微服务提供商可经由例如共享云系统将此类服务提供给租户。
在本公开中,微服务提供商提供将规则集合应用于搜索结果的服务。因而,微服务提供商维护规则执行微服务,该规则执行微服务在请求时执行租户的规则。多租户系统中的每个租户可具有其自己的规则或规则集合,这些规则或规则集合被提供给微服务提供商以在微服务提供商执行所请求的微服务期间被应用。每个规则集合被存储在微服务提供商的存储器中,使得微服务提供商能够在请求时快速召回并应用针对租户的规则集合。通常,为了加速调用并应用多租户系统中的不同租户的不同规则集合的过程,微服务提供商同时并行地运行规则引擎的多个实例。当前,规则引擎的每个实例包括用于所有租户的所有规则。这样,当来自租户的多个请求同时或大约同时到来时,不同的请求可被发送到规则引擎的不同实例以尽可能快地分配请求负载并向租户返回响应。
然而,这个当前系统的一个缺点是必须存储在多个位置中的相同规则的大量副本。更具体地,如果多租户微服务提供商具有5,000个租户,并且每个租户具有要被应用的平均100个规则,则必须针对微服务提供商的规则引擎的每个实例加载针对5,000个租户的100个规则。换言之,必须为规则引擎的每个实例加载500,000个规则。在某一时刻,规则的数量变得足够高,使得系统加载这么多规则所引起的成本(例如,存储器消耗)超过通过在规则引擎的每个实例上为每个租户加载每个规则的副本所提供的益处。
管理规则数量的一种方式是在这些实例之间均匀地划分租户,并且仅加载分配给相应实例上的每个实例的租户的规则。例如,租户1-100可被分配给规则引擎的实例A,租户101-200可被分配给规则引擎的实例B,并且租户201-300可被分配给规则引擎的实例C。然后,实例A仅存储并应用与租户1-100相关联的规则,实例B仅存储并应用与租户10l-200相关联的规则,并且实例C仅存储并应用与租户201-300相关联的规则。因而,规则分发微服务分发来自微服务提供商的请求,使得来自租户1-100中的任何一个的任何传入请求被路由到实例A,来自租户101-200中的任何一个的任何传入请求被路由到实例B,并且来自租户201-300中的任何一个的任何传入请求被路由到实例C。
然而,所有规则的执行并不需要相同量的资源。例如,某些租户的执行规则集合可比其他租户的执行规则集合招致更大的实际运行时或加载成本。因而,跨规则引擎的实例均匀地分发租户的数量不一定跨规则引擎的实例均匀地分发所有租户的集体负担或负载。因此,在各实例之间均匀地划分租户可能不是最高效或有效的方式来优化微服务提供商的功能和资源。
本公开的实施例可以通过基于由每个租户生成的负载跨规则引擎的独立实例分发规则的执行来克服以上和其他问题。因而,微服务提供商还维护规则分发微服务,其分发规则,如本文进一步详细解释的。由相关联的租户生成的负载在本文中也被称为由该特定租户生成的“规则负载”。通过算法为每个租户确定规则负载,该算法考虑了包括但不限于:租户在给定时间段内的规则评估请求的数量;在所述给定时间段内每个请求由所述规则引擎执行的规则条件检查的平均数;在所述给定时间段内每个请求由所述规则引擎触发的动作的平均数;所述给定时间段内每个请求的平均规则评估上下文大小;每个租户定义的条件事实的数量;以及复杂性配置值。
一旦每个租户的规则负载已知,所有租户的规则负载就可被组合成总体规则负载。租户然后被分发在规则引擎的实例上,使得每个实例处理总体规则负载的大约相同的部分。换言之,以尽可能均匀地分发所有租户的累积规则负载的方式把租户分发在各实例上。这样,更有效地和高效地优化了微服务提供商的功能和资源。
应当理解的是,上述优点是示例优点并且不应被解释为限制性的。本公开的实施方式可包含所有、一些或者不包含上述优点,同时保持在本公开的精神和范围内。此外,虽然本公开详细描述了各个实施例在搜索引擎的上下文中的应用,但是应该理解,实施例可以针对规则引擎的其他应用,并且本文所公开的举例实施例不应被解释为限制。
现在转向附图,图1示出了根据本公开的实施例的示例规则执行系统100的框图。示例规则执行系统100包括微服务提供商102、规则分发微服务104、多个规则引擎实例106A、106B、106C和106D(统称为规则引擎实例106)、规则监视组件108以及多个租户T(n)(统称为租户110)。在本公开的至少一个实施例中,微服务提供商102包括规则分发微服务104。然而,在本公开的其他实施例中,微服务提供商102和规则分发微服务104是系统100的分开且不同的组件。
应指出,图1旨在描绘示例性规则执行系统100的代表性主要组件。然而,在一些实施例中,各个组件可以具有比图1中所表示的更大或更小的复杂度,可以存在不同于或除了图1中所示的那些之外的组件,并且此类组件的数量、类型和配置可以变化。例如,尽管图1示出了具有四个规则引擎实例106的规则执行系统100,但用于实现本公开的实施例的合适的计算环境可包括任何数量的规则引擎实例。此外,如果有的话,图1中所示的各种模型、模块、系统和部件可以跨多个主机设备和远程设备存在。
在一些实施例中,可以在云计算环境内或使用一个或多个云计算服务来实现规则执行系统100。根据不同实施例,云计算环境可包括提供一个或多个云计算服务的基于网络的分布式数据处理系统。进一步,云计算环境可包括被布置在一个或多个数据中心内并且被配置成通过网络共享资源的许多计算机(例如,成百上千的计算机或更多)。
根据本公开的各实施例,微服务提供商102向多个租户提供微服务。为了说明的目的,在图1中所示的示例性实施方式中,微服务提供商102向统称为租户110的4000个租户(在图1中被示为租户T1、租户T2、…、租户T4000)提供微服务。在替代实施例中,微服务提供商102可向多于或少于4,000个租户提供微服务。在本文讨论的规则执行系统100中,微服务提供商102至少部分地充当规则引擎,向每租户110提供规则执行服务。因而,微服务提供商102被提供有来自每个租户110的租户专用的规则集合。每个租户专用的规则集合可具有不同数量的规则和/或可要求不同数量的资源来执行那些规则。
为了提高对从租户110接收的规则执行请求进行响应的效率,提供给微服务提供商102的规则跨规则引擎实例106被分发。规则引擎实例106中的每个是在接收到来自租户的规则执行请求时能够存储、加载和执行规则的规则引擎的至少一部分的副本。规则的分发由规则分发微服务104来管理。特别地,规则以如下方式被分发:与特定租户110相关联的租户特定的规则集合中的所有规则被分配给单个规则引擎实例106。每个规则引擎实例106负责存储、加载和执行它已被分配的规则。
根据本公开的各实施例,给每个规则引擎实例106分配规则集合的子集,而不是给每个规则引擎实例106分配所有规则。具体地,每个规则引擎实例106被分配涉及租户110的子集的规则集合,而不是每个规则引擎实例106被分配用于所有租户110的规则集合。
更具体地,并且参照图2,如何向规则引擎实例106分配规则集合由方法200管理。首先,在操作204,为每个租户110生成存储器内规则评估模型。存储器内规则评估模型在本文中还可被称为规则评估模型、存储器内模型或规则模型。在本公开的至少一个实施例中,规则模型由规则分发微服务104生成。在本公开的至少一些实施例中,每个规则模型指定如何将规则集合应用于所提供的数据集合。
在操作208,为每个规则模型计算工作负载。因为规则模型是为每个租户110生成的,所以为规则模型计算的工作负载也是相关联的租户的工作负载。工作负载表示执行规则模型对微服务引擎具有的影响或负担。在这种情况下,微服务引擎是规则引擎。基于规则模型的多个方面(诸如规则模型中的规则的数量、与每个规则相关联的条件的数量和复杂度、规则评估请求的平均预期数量和规则评估上下文的复杂度)来计算每个规则模型的工作负载。
根据本公开的至少一个实施例,用于计算规则模型的工作负载的特定算法如下:
W(T)=r(t)*c(t)*a(t)*(x+s(t)/f)
在该算法中,变量W(T)表示租户的工作量。变量r(t)表示由规则引擎在给定时间段(t)中从租户接收的规则评估请求的数量。根据本公开的至少一个实施例,给定的时间段(t)可以是例如两分钟。变量c(t)表示规则引擎要考虑的用于回答那些请求的规则条件的平均数。变量a(t)表示由规则引擎触发的在给定时间段(t)中回答那些请求的动作的平均数。变量s(t)表示那些请求在给定时间段内的平均规则评估上下文大小。根据本公开的至少一个实施例,评估上下文可以是例如事实值。因而,每个请求的平均规则评估上下文大小可以是例如在给定的时间段(t)中传递到规则评估请求的事实值的数量。变量f表示由租户定义的条件事实的数量。根据本公开的至少一个实施例,条件事实可以包括但不限于例如用户片段、地理位置、引荐人、客户端设备类型、性别或年龄。变量x表示复杂度配置值,其可用于调整工作负载。根据本公开的至少一个实施例,变量x的默认值为1。
根据本公开的至少一个实施例,规则监视组件108是跟踪组件,该跟踪组件测量由特定租户在规则引擎上生成的规则负载。因而,当操作微服务系统100时,规则监视组件108接收与以下有关的数据:在给定时间段内每个租户的规则评估请求的数量;在所述给定时间段内每个请求所执行的规则条件检查的平均数;在所述给定时间段内每个请求所触发的动作的平均数;在所述给定时间段内每个请求的平均规则评估上下文大小;和/或每个租户定义的条件事实数量。
一旦确定了每个规则模型的工作负载,方法200就继续操作212,其中那些工作负载用于在编排的微服务引擎集合(诸如例如规则引擎实例106)之间分发规则模型,以优化微服务提供商的功能和资源。更具体地,考虑为所有租户110计算出的工作负载来生成存储器内规则引擎分发模型。基于存储器内规则引擎分发模型,规则集合以使得所有租户110的工作负载尽可能均匀地分发在规则引擎实例106上的方式分发在规则引擎实例106上。换言之,被分配给每个规则引擎实例106的租户110或相关联的规则集合的数量可改变,但是被分配给每个规则引擎实例106的工作负载尽可能相等。因此,每个规则引擎实例106正在处理总体工作负载的大致相同的部分。因此,通过在规则引擎实例106上尽可能均匀地分布来优化可用系统资源。
例如,方法200的执行可导致将租户T1-T30和租户T700-T2000的规则指派给规则引擎实例A106A,将租户T31-T699和租户T2001-T2500的规则指派给规则引擎实例B106B,将租户T2501-T3225和租户T3900-T4000的规则指派给规则引擎实例C106C,以及将租户T3226-T3899的规则指派给规则引擎实例D106D。
应注意的是,以上是示例分发。基于其他因素(诸如用户设置、托管不同引擎的节点的相对处理能力等)的其他分发也是可能的。例如,在本公开的至少一些实施例中,规则模型的分发可基于单个规则引擎实例的可用资源和/或能力来确定。例如,特定规则引擎实例可在具有更多存储器的服务器上。因此,该特定规则引擎实例可以比其他规则引擎实例访问更大的存储器资源。照此,分配规则模型使得由特定规则引擎实例处理更大部分,而不是跨所有规则引擎实例大致均匀地分配规则模型可能是有利的。
在本公开的至少一个实施例中,基于存储器内规则引擎分发模型的租户110在规则引擎实例106上的分发或重新分发可通过将租户的分配从其对应的源规则引擎实例106改变到对应的目标规则引擎实例106来实现。例如,将租户T31的分配从规则引擎实例A106A改变到规则引擎实例B106B包括在目标实例(在这种情况下是规则引擎实例B106B)上自举租户T31的规则模型,然后修改映射表中的相应条目。然后,从源实例(在这种情况下是规则引擎实例A106A)移除租户T31的规则模型,并且相应地修改映射表中的相应条目。
根据本公开的一些实施例,一旦工作负载已经跨规则引擎实例106分发(如通过上述方法200),规则请求可以根据图3中所示的方法300执行。方法300开始于操作304,其中接收到来自租户110的规则执行请求。在本公开的至少一个实施例中,传入的规则执行请求被微服务提供商102接收,并且规则分发微服务104然后从微服务提供商102接收传入的规则执行请求。
出于说明性目的,在一个示例中,消费者可以在产品网站中搜索窗口小部件。租户T5与产品网站相关联并且从搜索服务提供商接收搜索结果。租户T5然后将那些搜索结果连同规则执行请求一起发送到微服务提供商102。在该示例中,在操作304,传入规则执行请求是微服务提供商102将特定于租户T5的规则应用于搜索结果并返回要被呈现给消费者的优选搜索结果呈现的请求。
在操作308,基于上述讨论的存储器内规则引擎分发模型来选择用于提供对接收到的请求的响应的最适合的规则引擎实例106。在本公开的至少一个实施例中,最适合的规则引擎实例106由规则分发微服务104选择。在本公开的至少一个实施例中,规则分发微服务104分析传入请求,并应用用于确定规则集合在规则引擎实例106之间的分发的准则,以选择请求要被发送到的适当规则引擎实例106。
在本公开的至少一个替代性实施例中,可以使用上述映射表来标识最适合的规则引擎实例106。例如,可通过确定哪个租户与请求相关联、在映射表中查找以标识哪个规则引擎实例106与该租户相关联、并且然后将请求发送到所标识的规则引擎实例106来标识最适合的规则引擎实例106。
继续说明性示例,规则分发微服务104选择具有租户T5的租户特定规则的副本的规则引擎实例106。在该示例中,规则引擎实例A106A具有租户T5的租户特定的规则的副本。因此,在操作308,规则分发微服务104选择规则引擎实例A106A。
在操作312,规则执行请求被路由到所选择的规则引擎实例106。在本公开的至少一个实施例中,规则执行请求由规则分发微服务104路由。在说明性示例中,来自租户T5的规则执行请求被路由到所选规则引擎实例106A。在本公开的至少一个实施例中,搜索结果连同规则执行请求一起被发送到选择的规则引擎。
在操作316,执行该规则执行请求。在本公开的至少一个实施例中,规则执行请求由指定的规则引擎实例106执行。在说明性示例中,规则引擎实例106A通过将租户T5的租户特定规则应用于所提供的搜索结果来执行所请求的规则执行请求。用于租户T5的租户特定的规则可以包括例如搜索结果内在特定价格范围内的任何结果将在搜索结果的呈现中以特定顺序被排名的规则。用于租户T5的租户特定的规则可以进一步包括在特定位置的特定地理距离内可用的特定价格范围内的任何结果将在搜索结果的呈现中以特定顺序被排名的规则。
在操作320,将所执行的规则执行请求的结果返回至微服务提供商102。在本公开的至少一个实施例中,所执行的规则执行请求的结果由执行规则执行请求的规则引擎实例106返回到微服务提供商102。在说明性示例中,由规则引擎实例106A执行的规则执行请求的结果被返回到微服务提供商102。这些结果包括根据上面讨论的两个规则对搜索结果进行优先级排序。微服务提供商102随后可将这些经优先级排序的结果提供给租户T5,租户T5可将经优先级排序的结果呈现给消费者。
在操作324,向规则监视组件108发送异步消息。在本公开的至少一个实施例中,异步消息由执行规则执行请求的规则引擎实例106发送。在本公开的至少一个实施例中,异步消息包括规则度量或用于确定规则度量的信息。在说明性示例中,异步消息由规则引擎实例106A发送到规则监视组件108,并且包括但不限于在规则执行期间被应用的规则的数量和必须被检查以执行那些规则的条件或事实的数量。
在操作328,与所执行的规则执行请求相关的规则度量被聚集。在本公开的至少一个实施例中,规则度量由规则监视组件108聚集。在说明性示例中,包括在规则执行期间被应用的规则的数量以及为了执行那些规则而必须被检查的条件或事实的数量的数据与来自由微服务提供商102接收的其他规则执行请求的类似的数据一起被聚集。
这些聚集的规则度量然后可以用于为每个规则模型或租户110重新计算或更新工作负载。例如,聚集的规则度量中的数据可以被输入回在方法200的操作208处提供的算法中。通过基于在系统100的操作期间收集的数据来更新工作负载并将那些更新的工作负载反馈到存储器内规则引擎分发模型中,规则模型在规则引擎实例之间的分发可被进一步并重复地优化。例如,在本公开的至少一个实施例中,可以在固定时间间隔基于来自聚集规则度量的数据来更新工作负载。
根据本公开的一些实施例,一旦工作负载已经初始地跨规则引擎实例106分发(如通过以上描述的方法200),该分发就可以随时间进一步动态地优化。这种进一步的规则优化和缩放可以由系统400执行,例如图4中所示的系统。
更具体地,系统400包括:基本上类似于以上参见图1所描述的规则分发微服务104的规则分发微服务404;基本上类似于以上参见图1所描述的规则引擎实例106的多个规则引擎实例406;以及基本上类似于以上参见图1描述的规则监视组件108规则监视组件408。系统400还包括规则分发优化和缩放组件412和规则存储器416。
根据本公开的至少一个实施例,规则分发优化和缩放组件412被配置成用于从规则监视组件408请求聚集的规则度量。可以例如以规则的时间间隔发送请求。此外,规则监视组件408被配置成向规则分发优化和缩放组件412返回聚集的规则度量。所请求的规则度量可包括关于哪些规则由哪个租户执行、每个规则的存储器消耗、以及平均规则执行的中央处理单元(CPU)消耗的数据。另外,规则分发和缩放组件412与规则分发微服务404通信地耦合,使得规则分发微服务404能够从规则分发优化和缩放组件412接收更新的规则引擎分发模型。这样的更新的规则引擎分发模型随后可被用于随后的规则集合的分配(诸如通过方法200)和/或随后的规则请求的执行(诸如通过方法300)。
根据本公开的至少一个实施例,规则存储器416被配置为存储所有规则模型的所有规则。换言之,规则存储器416被配置为充当提供给微服务提供商(诸如图1中所示的微服务提供商102)的存储库并在规则引擎实例406之间分发规则。
图5示出了在编排的微服务引擎集合之间进一步优化规则模型的分发的示例方法500。在本公开的至少一些实施例中,使用系统400来执行方法500。方法500以跨规则引擎实例106分发的工作负载开始,诸如通过上述方法200。
在操作504,从规则监视组件408请求聚集的规则度量。在本公开的至少一个实施例中,规则分发优化和缩放组件412从规则监视组件408请求聚集的规则度量。在本公开的至少一个实施例中,规则分发优化和缩放组件412在固定的间隔请求规则聚集度量。具体地,被请求的聚集规则度量可以包括但不限于:哪些规则由哪个租户执行;每个规则的存储器消耗;以及平均规则执行的CPU消耗。
在操作508,重新计算规则模型与规则引擎实例406之间的分配。在本公开的至少一个实施例中,从规则存储器416加载规则模型。在本公开的至少一个实施例中,规则分发优化和缩放组件412重新计算规则模型(从规则存储加载的)与规则引擎实例406之间的分配以实现跨规则引擎实例406的平衡的中央处理单元和存储器消耗。在本公开的至少一个实施例中,如果预期的存储器和CPU消耗高于较高的预定值,则规则分发优化和缩放组件412实例化附加的规则引擎实例406。然而,如果存储器和CPU消耗低于较低的预定值,则规则分发优化和缩放组件412关闭规则引擎实例406以释放系统资源。
在操作512,将更新的规则引擎分发模型发送至规则分发微服务404。在本公开的至少一个实施例中,规则分发优化和缩放组件412将更新的规则引擎分发模型发送到规则分发微服务404。
在操作516处,向每个规则引擎实例406发送请求,所述请求具有每个规则引擎实例406需要加载和/或在存储器中可用的对应规则的标识。在本公开的至少一个实施例中,规则分发优化和缩放组件412向每个规则引擎实例406发送请求,该请求具有每个规则引擎实例406需要加载和/或在存储器中可用的规则的标识。
在本公开的至少一个实施例中,机器学习可以用于预测每个租户所预期的规则负载。例如,基于当日时间或另一定量变量,租户的规则负载可波动。这些波动可以通过配置为检测定量变量的时钟或传感器来检测。这样的预测使得系统能够以防止在特定规则引擎实例上重新出现高负载的方式抢先地分发或重新分发规则模型。
在本公开的至少一个实施例中,可以分析规则的执行以便标识通常一起执行的那些规则。该因素可用于跨规则引擎实例的规则分发的管理。
现在参见图6,所示出的是根据本公开的实施例的示例计算机系统601的高级框图,该计算机系统可以用于实施本文描述的方法、工具和模块和任何相关功能中的一个或多个(例如,使用该计算机的一个或多个处理器电路或计算机处理器)。在一些实施例中,计算机系统601的主要组件可以包括一个或多个CPU602、存储器子系统604、终端接口612、存储接口616、I/O(输入/输出)设备接口614和网络接口618,所有这些可以直接或间接地通信地耦合,以用于经由存储器总线603、I/O总线608和I/O总线接口单元610的组件间通信。
计算机系统601可以包括一个或多个通用可编程中央处理单元(CPU)602A、602B、602C、和602D,本文统称为CPU602。在一些实施例中,计算机系统601可以包含相对大型系统的典型的多个处理器;然而,在其他实施例中,计算机系统601可以替代地是单个CPU系统。每个CPU602可以执行存储在存储器子系统604中的指令,并且可以包括一个或多个级别的板上高速缓存。
系统存储器604可以包括呈易失性存储器形式的计算机系统可读介质,如随机存取存储器(RAM)622或高速缓存存储器624。计算机系统601可以进一步包括其他可移动/不可移动、易失性/非易失性计算机系统存储介质。仅作为示例,存储系统626可被设置为从不可移动、非易失性磁介质(诸如,“硬盘驱动器”)读取或写入。尽管未示出,可以提供用于从可移动非易失性磁盘(例如,“软盘”)读取或向其写入的磁盘驱动器,或用于从可移动非易失性光盘(如CD-ROM、DVD-ROM或其他光学介质)读取或向其写入的光盘驱动器。此外,存储器604可包括闪存,例如闪存棒驱动器或闪存驱动器。存储器设备可以通过一个或多个数据介质接口连接到存储器总线603。存储器604可包括具有一组(例如,至少一个)程序模块的至少一个程序产品,这些程序模块被配置为执行不同实施例的功能。
一个或多个程序/实用程序628(每个程序均具有至少一组程序模块1030)可以存储在存储器604中。程序/实用程序628可以包括管理程序(也称为虚拟机监视器)、一个或多个操作系统、一个或多个应用程序、其他程序模块和程序数据。操作系统、一个或多个应用程序、其他程序模块和程序数据中的每一个或它们的一些组合可以包括网络环境的实现方式。程序模块1030一般执行不同实施例的功能或方法。
尽管存储器总线603在图6中示出为提供CPU602、存储器子系统604、以及I/O总线接口610之间的直接通信路径的单个总线结构,但是在一些实施例中,存储器总线603可以包括多个不同的总线或通信路径,这些总线或通信路径可以被安排成各种形式中的任何一种,如分层、星形或网络配置中的点对点链路、多个分层总线、并行和冗余路径、或任何其他适当类型的配置。此外,虽然I/O总线接口610和I/O总线608被示出为单个相应的单元,但是在一些实施例中,计算机系统601可以包含多个I/O总线接口单元610、多个I/O总线608或两者。进一步,虽然示出了将I/O总线608与运行到不同I/O设备的不同通信路径分开的多个I/O接口单元,但是在其他实施例中,一些或所有I/O设备可以直接连接到一个或多个系统I/O总线。
在一些实施例中,计算机系统601可以是多用户大型计算机系统、单用户系统、或服务器计算机或几乎不具有或不具有直接用户界面但从其他计算机系统(客户端)接收请求的类似装置。进一步,在一些实施例中,计算机系统601可以被实现为台式计算机、便携式计算机、膝上型或笔记本计算机、平板计算机、袖珍计算机、电话、智能电话、网络交换机或路由器、或任何其他适当类型的电子设备。
应指出,图6旨在描绘示例性计算机系统601的代表性主要组件。然而,在一些实施例中,单个组件可以具有比图6中所表示的更大或更小的复杂度,可以存在不同于图6中所示出的那些组件或者除图6中所示出的那些组件之外的组件,并且此类组件的数量、类型和配置可以变化。
提前理解的是,尽管本公开包括关于云计算的详细描述,但本文所叙述的教导的实现不限于云计算环境。相反,本发明的实施例能够结合现在已知的或以后开发的任何其他类型的计算环境来实现。
云计算是一种服务交付模型,用于使得能够方便的、按需的网络访问可配置计算资源(例如,网络、网络带宽、服务器、处理、存储器、存储、应用、虚拟机和服务)的共享池,可以用最小的管理努力或与服务提供商的交互来快速供应和释放该计算资源。该云模型可以包括至少五个特性、至少三个服务模型和至少四个部署模型。
特征如下:
按需自助服务:云消费者可以按需自动地单方面供应计算能力,如服务器时间和网络存储,而不需要与服务的提供商进行人类交互。
广泛的网络访问:能力可通过网络获得并且通过促进异构瘦客户机平台或厚客户机平台(例如,移动电话、膝上计算机、和PDA)使用的标准机制访问。
资源池:提供商的计算资源被池化以使用多租户模型来服务于多个消费者,其中根据需求动态地分配和重新分配不同的物理和虚拟资源。存在位置独立性的感觉,因为消费者通常不具有对所提供的资源的确切位置的控制或了解,但可能能够以较高抽象级别(例如,国家、州或数据中心)指定位置。
快速弹性:能够快速和弹性地提供能力(在一些情况下自动地)以快速缩小并快速释放以快速放大。对于消费者而言,可用于供应的能力通常显得不受限制并且可以在任何时间以任何数量购买。
测量服务:云系统通过利用在适合于服务类型(例如,存储、处理、带宽、和活动用户账户)的某个抽象级别处的计量能力来自动控制和优化资源使用。可以监视、控制和报告资源使用,为所利用的服务的提供商和消费者提供透明度。
服务模型如下:
软件即服务(SaaS):提供给消费者的能力是使用在云基础设施上运行的提供商的应用。可通过诸如web浏览器(例如,基于web的电子邮件)之类的瘦客户端接口从不同客户端设备访问应用。消费者不管理或控制包括网络、服务器、操作系统、存储或甚至单独的应用能力的底层云基础设施,可能的例外是有限的用户特定应用配置设置。
平台即服务(PaaS):提供给消费者的能力是将消费者创建或获取的使用由提供商支持的编程语言和工具创建的应用部署到云基础设施上。消费者不管理或控制包括网络、服务器、操作系统或存储的底层云基础设施,但是对所部署的应用和可能的应用托管环境配置具有控制。
基础设施即服务(IaaS):提供给消费者的能力是提供处理、存储、网络、和其他基本计算资源,其中消费者能够部署和运行任意软件,其可以包括操作系统和应用程序。消费者不管理或控制底层云基础设施,而是具有对操作系统、存储、所部署的应用的控制以及对所选联网组件(例如,主机防火墙)的可能受限的控制。
部署模型如下:
私有云:云基础设施仅针对组织操作。它可以由组织或第三方管理,并且可以存在于场所内或场所外。
社区云:云基础设施由若干组织共享并且支持具有共享关注(例如,任务、安全要求、策略和合规性考虑)的特定社区。它可以由组织或第三方管理,并且可以存在于场所内或场所外。
公共云:云基础设施可供公众或大型行业团体使用并且由出售云服务的组织拥有。
混合云:云基础设施是两个或更多个云(私有、社区或公共)的组合,这些云保持唯一实体但通过使数据和应用能够移植的标准化或专有技术(例如,云突发以用于云之间的负载平衡)绑定在一起。
云计算环境是面向服务的,集中于无状态、低耦合、模块化和语义互操作性。云计算的核心是包括互连节点网络的基础设施。
现在参见图7,描绘了说明性云计算环境50。如图所示,云计算环境50包括云消费者使用的本地计算设备可以与其通信的一个或多个云计算节点10,本地计算设备诸如例如个人数字助理(PDA)或蜂窝电话54A、台式计算机54B、膝上型计算机54C和/或汽车计算机系统54N。节点10可彼此通信。它们可以物理地或虚拟地分组(未示出)在一个或多个网络中,诸如如上所述的私有云、社区云、公共云或混合云、或其组合。这允许云计算环境50提供基础设施、平台和/或软件作为云消费者不需要为其维护本地计算设备上的资源的服务。应当理解,图7中所示的计算装置54A-N的类型仅旨在是说明性的,并且计算节点10和云计算环境50可通过任何类型的网络和/或网络可寻址连接(例如,使用网络浏览器)与任何类型的计算机化装置通信。
现在参见图8,示出了由云计算环境50(图7)提供的一组功能抽象层。应提前理解,图8中所示的组件、层和功能仅旨在是说明性的,并且本发明的实施例不限于此。如所描述,提供以下层和对应功能:
硬件和软件层60包括硬件和软件组件。硬件组件的示例包括:大型机61;基于RISC(精简指令集计算机)架构的服务器62;服务器63;刀片服务器64;存储设备65;以及网络和联网组件66。在一些实施例中,软件组件包括网络应用服务器软件67和数据库软件68。
虚拟化层70提供抽象层,从该抽象层可以提供虚拟实体的以下示例:虚拟服务器71;虚拟存储器72;虚拟网络73,包括虚拟专用网络;虚拟应用和操作系统74;以及虚拟客户端75。
在一个示例中,管理层80可以提供以下描述的功能。资源供应81提供用于在云计算环境内执行任务的计算资源和其他资源的动态采购。计量和定价82在云计算环境内利用资源时提供成本跟踪,并为这些资源的消费开账单或发票。在一个示例中,这些资源可以包括应用软件许可证。安全性为云消费者和任务提供身份验证,以及为数据和其他资源提供保护。用户门户83为消费者和系统管理员提供对云计算环境的访问。服务水平管理84提供云计算资源分配和管理,使得满足所需的服务水平。服务水平协议(SLA)规划和履行85提供根据SLA预期未来需求的云计算资源的预安排和采购。
工作负载层90提供可以利用云计算环境的功能的示例。可以从该层提供的工作负载和功能的示例包括:地图和导航91;软件开发和生命周期管理92;虚拟课堂教育交付93;数据分析处理94;交易处理95;和移动桌面96。
除了上述实施例之外,预期了具有更少操作步骤、更多操作步骤或不同操作步骤的其他实施例。此外,一些实施例可以不同次序执行以上操作步骤中的一些或全部。此外,多个操作可同时发生或作为较大过程的内部部分发生。模块根据实施例被说明性地列出和描述,并且不意味着指示特定模块的必要性或其他潜在模块(或应用于特定模块的功能/目的)的排他性。
在上文中,参考了各个实施例。然而,应当理解,本公开不限于具体描述的实施例。相反,无论所述特征和元件是否与不同实施例相关,都预期所述特征和元件的任何组合来实施和实践本公开。在不脱离所描述实施例的范围和精神的情况下,许多修改和变化对本领域普通技术人员可为显而易见的。此外,尽管本公开的实施例可以实现优于其他可能的解决方案或优于现有技术的优点,但是特定优点是否由给定实施例实现并不限制本公开。因此,所描述的方面、特征、实施例和优点仅仅是说明性的,并且不被认为是所附权利要求的元素或限制,除非在权利要求中明确陈述。
本发明可以是系统、方法、和/或计算机程序产品。计算机程序产品可包括其上具有用于使处理器执行本发明的各方面的计算机可读程序指令的计算机可读存储介质(或多个介质)。
计算机可读存储介质可以是能够保留和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质可以是,例如但不限于,电子存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备、或者上述的任意合适的组合。计算机可读存储介质的更具体示例的非穷尽列表包括以下各项:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式紧凑盘只读存储器(CD-ROM)、数字通用盘(DVD)、记忆棒、软盘、诸如穿孔卡之类的机械编码设备或具有记录在其上的指令的槽中的凸出结构、以及上述各项的任何合适的组合。如本文所使用的计算机可读存储介质不应被解释为暂时性信号本身,例如无线电波或其他自由传播的电磁波、通过波导或其他传输介质传播的电磁波(例如,穿过光纤电缆的光脉冲)或通过电线发射的电信号。
本文所描述的计算机可读程序指令可以经由网络(例如,互联网、局域网、广域网和/或无线网络)从计算机可读存储介质下载至相应的计算/处理设备或下载至外部计算机或外部存储设备。网络可以包括铜传输电缆、光传输光纤、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配器卡或网络接口接收来自网络的计算机可读程序指令,并转发计算机可读程序指令以存储在相应计算/处理设备内的计算机可读存储介质中。
用于执行本发明的操作的计算机可读程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或以一种或多种程序设计语言的任何组合编写的源代码或目标代码,这些程序设计语言包括面向对象的程序设计语言(如Smaltalk、C++等)和常规的过程式程序设计语言(如“C”程序设计语言或类似程序设计语言)。计算机可读程序指令可以完全地在用户计算机上执行、部分在用户计算机上执行、作为独立软件包执行、部分在用户计算机上部分在远程计算机上执行或者完全在远程计算机或服务器上执行。在后一种情况下,远程计算机可通过任何类型的网络(包括局域网(LAN)或广域网(WAN))连接至用户计算机,或者可连接至外部计算机(例如,使用互联网服务提供商通过互联网)。在一些实施例中,包括例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA)的电子电路可以通过利用计算机可读程序指令的状态信息来使电子电路个性化来执行计算机可读程序指令,以便执行本发明的各方面。
本文参照根据本发明的实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述本发明的多个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。
可以将这些计算机可读程序指令提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器以产生机器,从而使得经由计算机或其他可编程数据处理装置的处理器执行的指令创建用于实现在流程图和/或框图的或多个框中指定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置、和/或其他设备以特定方式工作,从而,其中存储有指令的计算机可读存储介质包括包含实现流程图和/或框图中的或多个方框中规定的功能/动作的方面的指令的制造品。
该计算机可读程序指令还可以被加载到计算机、其他可编程数据处理装置、或其他设备上,以便使得在该计算机、其他可编程装置或其他设备上执行一系列操作步骤以产生计算机实现的过程,从而使得在该计算机、其他可编程装置、或其他设备上执行的指令实现流程图和/或框图的或多个框中所指定的功能/动作。
附图中的流程图和框图示出了根据本发明的不同实施例的系统、方法和计算机程序产品的可能实现方式的架构、功能和操作。对此,流程图或框图中的每个框可表示指令的模块、段或部分,其包括用于实现指定的逻辑功能的一个或多个可执行指令。在一些备选实现中,框中标注的功能可以不按照图中标注的顺序发生。例如,连续示出的两个方框实际上可以作为一个步骤完成,同时、基本上同时、以部分或完全时间上重叠的方式执行,或者方框有时可以以相反的顺序执行,这取决于所涉及的功能。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作或执行专用硬件与计算机指令的组合的专用的基于硬件的系统来实现。
本文使用的术语仅用于描述特定实施例的目的,并且不旨在限制不同实施例。如本文所使用的,除非上下文另有明确指示,否则单数形式“一个”、“一种”和“该”旨在也包括复数形式。还应当理解,当在本说明书中使用术语“包括”和/或“包含”时,其指定所述特征、整体、步骤、操作、元件和/或部件的存在,但不排除一个或多个其他特征、整体、步骤、操作、元件、部件和/或其组合的存在或添加。在各个实施例的举例实施例的先前详细描述中,参考了附图(其中相同的数字表示相同的元件),附图形成其一部分,并且其中通过图示的方式示出了可以实践各个实施例的特定举例实施例。这些实施例被足够详细地描述以使得本领域技术人员能够实践这些实施例,但是在不脱离不同实施例的范围的情况下,可以使用其他实施例并且可以进行逻辑、机械、电气和其他改变。在先前的描述中,阐述了许多具体细节以提供对不同实施例的透彻理解。但是,不同实施例可以在没有这些具体细节的情况下实践。在其他实例中,为了不使实施例模糊,未详细示出众所周知的电路、结构和技术。
如本文使用的,“多个”当参考项目使用时意指一个或多个项目。例如,“多个不同类型的网络”是一个或多个不同类型的网络。
当不同的参考数字包括共同数字后跟不同的字母(例如,100a、100b、100c)或标点符号后跟不同的数字(例如,100-1、100-2、或100.1、100.2)时,仅使用没有字母或后续数字(例如,100)的参考字符可以指代元件组作为整体、该组的任何子集、或该组的示例样本。
进一步地,当与项目列表一起使用时,短语“至少一个”意味着可以使用所列出的项目中的一个或多个的不同组合,并且可以仅需要列表中的每个项目中的一个。换言之,“至少一个”意味着可以使用列表中的项目和多个项目的任何组合,但是不需要列表中的所有项目。项目可以是特定对象、事物或类别。
例如但不限于,“项目A、项目B、或项目C中的至少一个”可以包括项目A、项目A和项目B、或项目B。该示例还可以包括项目A、项目B和项目C或者项目B和项目C。当然,可以存在这些物品的任何组合。在一些说明性实例中,“至少一个”可以是,例如但不限于,两个项目A;一个项目B;和十个项目C;四个项目B和七个项目C;或其他合适的组合。
如在本说明书中所使用的词语“实施例”的不同实例不一定是指相同的实施例,但是它们可以指相同的实施例。本文示出或描述的任何数据和数据结构仅是示例,并且在其他实施例中,可以使用不同量的数据、数据类型、字段、字段的数量和类型、字段名称、行、记录、条目或数据组织的数量和类型。此外,任何数据可与逻辑组合,使得可能不需要单独的数据结构。因此,前面的详细描述不应被视为具有限制性意义。
已经出于说明的目的呈现了本公开的不同实施例的描述,但并不旨在是详尽的或限于所公开的实施例。在不脱离所描述的实施例的范围和精神的情况下,许多修改和变化对本领域普通技术人员将是显而易见的。这里使用的术语被选择来最好地解释实施例的原理、实际应用或对在市场中找到的技术的技术改进,或者使得本领域普通技术人员能够理解这里公开的实施例。
虽然已经根据具体实施例描述了本发明,但预期其变更和修改将对本领域技术人员变得清楚。因此,以下权利要求旨在被解释为覆盖落入本发明的真实精神和范围内的所有这样的改变和修改。
Claims (20)
1.一种方法,包括:
确定多个规则集合中的每个规则集合的规则负载,其中,每个规则集合与托管在多租户系统上的多个租户中的租户相关联;
将所述规则负载组合成整体规则负载;以及
跨规则引擎实例集合分发所述多个规则集合,使得所述总规则负载的大致相同部分被分配给所述规则引擎实例集合中的每个规则引擎实例。
2.根据前述权利要求所述的方法,其中,所述多个规则集合由微服务提供商维护。
3.根据前述权利要求所述的方法,其中,所述规则引擎实例集合由所述微服务提供商部署。
4.根据前述权利要求中任一项所述的方法,其中,确定每个规则集合的所述规则负载包括:
确定由所述相应租户作出的请求的数量;以及
确定每个请求触发的动作的平均数量。
5.根据前述权利要求中任一项所述的方法,其中,确定每个规则集合的所述规则负载包括:
确定由所述相应租户作出的请求的数量;以及
确定要被考虑来回答每个请求的多个条件。
6.根据前述权利要求所述的方法,其中:
将由所述相应租户做出的请求的所述数量和将被认为回答每个请求的条件的所述数量发送到规则监视组件;以及
所述规则监视组件为每个规则集合聚集这些数量。
7.根据前述权利要求所述的方法,进一步包括:
从所述规则监视组件获得所述聚集的数量;以及
基于所述聚集的数量,跨所述规则引擎实例集合重新分发所述规则集合,使得所述总规则负载的大致相同部分被分配给所述规则引擎实例集合中的每个规则引擎实例。
8.一种计算机程序产品,包括具有包含在其中的程序指令的计算机可读存储介质,所述程序指令可由处理器执行以使所述处理器执行一种方法,所述方法包括:
确定多个规则集合中的每个规则集合的规则负载,其中,每个规则集合与托管在多租户系统上的多个租户中的租户相关联;
将所述规则负载组合成整体规则负载;以及
跨规则引擎实例集合分发所述多个规则集合,使得所述总规则负载的大致相同部分被分配给所述规则引擎实例集合中的每个规则引擎实例。
9.根据前述权利要求所述的计算机程序产品,其中,所述多个规则集合由微服务提供商维护。
10.根据前述权利要求所述的计算机程序产品,其中,所述规则引擎实例集合由所述微服务提供商部署。
11.根据前述权利要求8至10中任一项所述的计算机程序产品,其中,确定每个规则集合的所述规则负载包括:
确定由所述相应租户作出的请求的数量;以及
确定每个请求触发的动作的平均数量。
12.根据前述权利要求8至11中任一项所述的计算机程序产品,其中,确定每个规则集合的所述规则负载包括:
确定由所述相应租户作出的请求的数量;以及
确定要被考虑来回答每个请求的多个条件。
13.根据前述权利要求所述的计算机程序产品,其中:
将由所述相应租户做出的请求的所述数量和将被认为回答每个请求的条件的所述数量发送到规则监视组件;以及
所述规则监视组件为每个规则集合合聚集这些数量。
14.根据前述权利要求所述的计算机程序产品,进一步包括:
从所述规则监视组件获得所述聚集数量;以及
基于所述聚集数量,跨所述规则引擎实例集合重新分发所述规则集合,使得所述总规则负载的大致相同部分被分配给所述规则引擎实例集合中的每个规则引擎实例。
15.一种规则分发系统,包括:
存储器;以及
处理器,通信地耦合到所述存储器,其中所述处理器被配置为执行一种方法,所述方法包括:
确定多个规则集合中的每个规则集合的规则负载,其中,每个规则集合与托管在多租户系统上的多个租户中的租户相关联;
将所述规则负载组合成整体规则负载;以及
跨规则引擎实例集合分发所述多个规则集合,使得所述总规则负载的大致相同部分被分配给所述规则引擎实例集合中的每个规则引擎实例。
16.根据前述权利要求所述的系统,其中,所述多个规则集合由微服务提供商维护。
17.根据前述权利要求所述的系统,其中,所述规则引擎实例集合由所述微服务提供商部署。
18.根据权利要求15至17中任一项所述的系统,其中,确定每个规则集合的所述规则负载包括:
确定由所述相应租户作出的请求的数量;以及
确定每个请求触发的动作的平均数量。
19.根据权利要求15至18中任一项所述的系统,其中,确定每组规则的所述规则负载包括:
确定由所述相应租户作出的请求的数量;以及
确定要被考虑来回答每个请求的多个条件。
20.根据前述权利要求所述的系统,进一步包括:
对由所述相应租户作出的请求的所述数量以及将被认为回答对每个规则集合的每个请求的条件的所述数量进行聚集;以及
基于所述聚集数量,跨所述规则引擎实例集合重新分发所述规则集合,使得所述总规则负载的大致相同部分被分配给所述规则引擎实例集合中的每个规则引擎实例。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/877,664 US11727283B2 (en) | 2020-05-19 | 2020-05-19 | Rule distribution across instances of rules engine |
US16/877,664 | 2020-05-19 | ||
PCT/IB2021/053230 WO2021234474A1 (en) | 2020-05-19 | 2021-04-20 | Rule distribution across instances of rules engine |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115443642A true CN115443642A (zh) | 2022-12-06 |
Family
ID=78608154
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202180030503.1A Pending CN115443642A (zh) | 2020-05-19 | 2021-04-20 | 跨规则引擎的实例的规则分发 |
Country Status (6)
Country | Link |
---|---|
US (1) | US11727283B2 (zh) |
JP (1) | JP2023527170A (zh) |
CN (1) | CN115443642A (zh) |
DE (1) | DE112021001559T5 (zh) |
GB (1) | GB2610769A (zh) |
WO (1) | WO2021234474A1 (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20220036206A1 (en) * | 2020-07-29 | 2022-02-03 | Red Hat, Inc. | Containerized distributed rules engine |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102035684A (zh) * | 2010-12-20 | 2011-04-27 | 中兴通讯股份有限公司 | 一种故障通知方法及系统 |
AU2013206325A1 (en) * | 2009-04-17 | 2013-07-25 | Icu Medical, Inc. | System and method for configuring a rule set for medical event management and responses |
US20150120939A1 (en) * | 2013-10-30 | 2015-04-30 | Oracle International Corporation | System and method for supporting service resources and feature sets in a cloud platform environment |
US20150358303A1 (en) * | 2014-06-05 | 2015-12-10 | Salesforce.Com, Inc. | Combining feed items associated with a database record for presentation in a feed |
CN106095569A (zh) * | 2016-06-01 | 2016-11-09 | 中山大学 | 一种基于sla的云工作流引擎资源调度与控制方法 |
CN107222371A (zh) * | 2017-08-04 | 2017-09-29 | 北京奇艺世纪科技有限公司 | 一种客户端心跳监测方法和系统 |
US20180026893A1 (en) * | 2016-07-20 | 2018-01-25 | Cisco Technology, Inc. | System and method for implementing universal cloud classification (ucc) as a service (uccaas) |
CN109565515A (zh) * | 2016-04-29 | 2019-04-02 | 华为技术有限公司 | 分布式资源管理系统中的动态租户结构调整的系统、设备和过程 |
US20190215365A1 (en) * | 2018-01-10 | 2019-07-11 | EMC IP Holding Company LLC | System and method for dynamic backup sessions |
US20190342178A1 (en) * | 2018-05-07 | 2019-11-07 | Vmware, Inc. | Distributed rules engine for processing events associated with internet of things devices |
Family Cites Families (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5136523A (en) | 1988-06-30 | 1992-08-04 | Digital Equipment Corporation | System for automatically and transparently mapping rules and objects from a stable storage database management system within a forward chaining or backward chaining inference cycle |
WO2001061948A1 (en) * | 2000-02-16 | 2001-08-23 | Synhrgy Hr Technologies, Inc. | Improved database access system |
WO2004015627A2 (en) | 2002-08-09 | 2004-02-19 | Corticon Technologies, Inc. | Rule engine |
CN100474810C (zh) | 2004-08-10 | 2009-04-01 | 华为技术有限公司 | 一种基于业务数据流的承载计费信息收集方法 |
US7958077B2 (en) * | 2006-01-19 | 2011-06-07 | Paymo, Inc. | Rules engine for enterprise system |
EP2168039A4 (en) * | 2007-05-31 | 2014-11-05 | Informatica Corp | DISTRIBUTED SYSTEM FOR MONITORING INFORMATION EVENTS |
US8296398B2 (en) * | 2008-04-29 | 2012-10-23 | Overland Storage, Inc. | Peer-to-peer redundant file server system and methods |
US7996352B2 (en) * | 2008-05-30 | 2011-08-09 | International Business Machines Corporation | Distributed rule processing for ubiquitous computing environments |
US8918866B2 (en) * | 2009-06-29 | 2014-12-23 | International Business Machines Corporation | Adaptive rule loading and session control for securing network delivered services |
US8880487B1 (en) | 2011-02-18 | 2014-11-04 | Pegasystems Inc. | Systems and methods for distributed rules processing |
US20140040177A1 (en) | 2012-08-06 | 2014-02-06 | Sap Portals Israel Ltd. | Runtime adaptation in dynamic workspaces |
US20140278812A1 (en) | 2013-03-14 | 2014-09-18 | Microsoft Corporation | Diagnostics storage within a multi-tenant data center |
US20150150011A1 (en) | 2013-11-22 | 2015-05-28 | Universita Degli Studi Di Padova | Self-splitting of workload in parallel computation |
US9584358B2 (en) * | 2014-03-06 | 2017-02-28 | International Business Machines Corporation | Global production rules for distributed data |
US10320813B1 (en) | 2015-04-30 | 2019-06-11 | Amazon Technologies, Inc. | Threat detection and mitigation in a virtualized computing environment |
WO2017106379A1 (en) | 2015-12-14 | 2017-06-22 | Pivotal Software, Inc. | Workload management in distributed database systems |
US10306490B2 (en) * | 2016-01-20 | 2019-05-28 | Netscout Systems Texas, Llc | Multi KPI correlation in wireless protocols |
FR3061337A1 (fr) | 2016-12-23 | 2018-06-29 | Dhatim | Moteur de regles universel et optimise pour le traitement de documents de gestion |
US11386058B2 (en) | 2017-09-29 | 2022-07-12 | Oracle International Corporation | Rule-based autonomous database cloud service framework |
US10778651B2 (en) | 2017-11-15 | 2020-09-15 | Nicira, Inc. | Performing context-rich attribute-based encryption on a host |
CA3065729A1 (en) * | 2018-12-27 | 2020-06-27 | Bce Inc. | Business rules processing framework |
US11768835B2 (en) * | 2020-01-31 | 2023-09-26 | Salesforce, Inc. | Merging multiple unsynchronized streams of related events and multi-tenant support |
-
2020
- 2020-05-19 US US16/877,664 patent/US11727283B2/en active Active
-
2021
- 2021-04-20 DE DE112021001559.1T patent/DE112021001559T5/de active Pending
- 2021-04-20 WO PCT/IB2021/053230 patent/WO2021234474A1/en active Application Filing
- 2021-04-20 CN CN202180030503.1A patent/CN115443642A/zh active Pending
- 2021-04-20 JP JP2022571109A patent/JP2023527170A/ja active Pending
- 2021-04-20 GB GB2218629.0A patent/GB2610769A/en active Pending
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
AU2013206325A1 (en) * | 2009-04-17 | 2013-07-25 | Icu Medical, Inc. | System and method for configuring a rule set for medical event management and responses |
CN102035684A (zh) * | 2010-12-20 | 2011-04-27 | 中兴通讯股份有限公司 | 一种故障通知方法及系统 |
US20150120939A1 (en) * | 2013-10-30 | 2015-04-30 | Oracle International Corporation | System and method for supporting service resources and feature sets in a cloud platform environment |
US20150358303A1 (en) * | 2014-06-05 | 2015-12-10 | Salesforce.Com, Inc. | Combining feed items associated with a database record for presentation in a feed |
CN109565515A (zh) * | 2016-04-29 | 2019-04-02 | 华为技术有限公司 | 分布式资源管理系统中的动态租户结构调整的系统、设备和过程 |
CN106095569A (zh) * | 2016-06-01 | 2016-11-09 | 中山大学 | 一种基于sla的云工作流引擎资源调度与控制方法 |
US20180026893A1 (en) * | 2016-07-20 | 2018-01-25 | Cisco Technology, Inc. | System and method for implementing universal cloud classification (ucc) as a service (uccaas) |
CN107222371A (zh) * | 2017-08-04 | 2017-09-29 | 北京奇艺世纪科技有限公司 | 一种客户端心跳监测方法和系统 |
US20190215365A1 (en) * | 2018-01-10 | 2019-07-11 | EMC IP Holding Company LLC | System and method for dynamic backup sessions |
US20190342178A1 (en) * | 2018-05-07 | 2019-11-07 | Vmware, Inc. | Distributed rules engine for processing events associated with internet of things devices |
Non-Patent Citations (1)
Title |
---|
王勇;代桂平;侯亚荣;: "信任感知的组合服务动态选择方法", 计算机学报, no. 08, 15 August 2009 (2009-08-15) * |
Also Published As
Publication number | Publication date |
---|---|
DE112021001559T5 (de) | 2023-01-05 |
US20210365801A1 (en) | 2021-11-25 |
WO2021234474A1 (en) | 2021-11-25 |
GB2610769A (en) | 2023-03-15 |
GB202218629D0 (en) | 2023-01-25 |
US11727283B2 (en) | 2023-08-15 |
JP2023527170A (ja) | 2023-06-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11005969B2 (en) | Problem solving in a message queuing system in a computer network | |
US11593180B2 (en) | Cluster selection for workload deployment | |
US10304024B2 (en) | Intelligent key performance indicator catalog | |
US11388232B2 (en) | Replication of content to one or more servers | |
US10896181B2 (en) | Serverless composition of functions into applications | |
US10891547B2 (en) | Virtual resource t-shirt size generation and recommendation based on crowd sourcing | |
US10140163B2 (en) | Intelligent framework for shared services orchestration | |
US20230138727A1 (en) | Carbon footprint-based control of cloud resource consumption | |
US20220413989A1 (en) | Cloud service provider selection based on digital twin simulation | |
WO2017118891A1 (en) | Syndicated cloud-based notification as a service | |
CN114327852A (zh) | 基于性能和成本来平衡大型机和分布式工作负载 | |
CN115298653A (zh) | 用于无状态服务的适应状态管理 | |
CN115443642A (zh) | 跨规则引擎的实例的规则分发 | |
US20230214266A1 (en) | Orchestration of containerized microservices | |
US11645013B2 (en) | Managing dispersed storage network background tasks | |
US10417055B2 (en) | Runtime movement of microprocess components | |
US20200167663A1 (en) | Generating a candidate set of entities from a training set | |
US11770306B2 (en) | Deployment of computer system services | |
US20220188166A1 (en) | Cognitive task scheduler | |
US11456933B2 (en) | Generating and updating a performance report | |
US11943292B2 (en) | Extend controller for multi-tenancy | |
US20240012692A1 (en) | Dynamic light-weighted multi-tenancy | |
US11558337B1 (en) | Activity-based message management | |
US20230315517A1 (en) | Central randomized scheduler for hypothesis-based workloads | |
US20240086255A1 (en) | Identification of reusable components |
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 |