无服务器架构中工作流应用的分片的制作方法

文档序号:33462903发布日期:2023-03-15 05:05阅读:38来源:国知局
无服务器架构中工作流应用的分片的制作方法
无服务器架构中工作流应用的分片


背景技术:

1.应用托管服务通常向客户提供分布式计算资源,用于部署客户应用和客户服务。通常,应用托管服务的客户可能被授予对后端数据中心的一些物理机或最常见的虚拟服务器主机的访问权限。在这样的服务模型下,已经配备服务器主机的客户如果希望开发和部署应用,需要基于底层系统架构编写计算机可执行源代码。客户还需要配置底层服务器主机,以便对计算工作负载需求进行负载均衡和扩展,这些计算工作负载需求来自已部署的用户应用和用户服务。这种底层系统架构的示例包括面向服务的架构(“soa”)和微服务架构。
2.最近,无服务器架构已成为传统应用托管系统架构的替代方案。根据无服务器架构,底层服务器主机和系统架构的其他方面由服务提供商,而不是客户管理,客户可以编写与系统架构无关的源代码,可以编译这些源代码以生成可在任何无服务器架构上执行的目标代码;负载均衡和扩展等配置任务可以由服务提供商在后端提供,而无需客户进行配置。
3.托管服务架构的另一个应用场景是数据库分片。后端数据中心的服务器主机可以将数据库在逻辑上划分为多个分片,以便可以在不同的分片之间对客户的数据子集和工作负载进行分配和负载均衡。通过以这种方式分布数据和工作负载,可以避免计算能力的瓶颈。在没有客户手动配置数据库分片的情况下,如在soa和微服务架构等下可能发生的,需要提供用于将数据库分片和负载均衡过程与客户隔离的技术,以提高服务质量。
附图说明
4.参考附图阐述了详细描述。在图中,参考编号的最左边的一个或多个数字标识参考编号首先出现的图。在不同的图中使用相同的参考编号指示相似或相同的项目或特征。
5.图1图示了根据本公开的示例实施方式的示例应用托管服务的架构图。
6.图2图示了导致停机时间的传统分片过程。
7.图3图示了根据本公开的示例实施方式的分片计划的架构的逻辑图。
8.图4图示了根据本公开的示例实施方式的键值空间。
9.图5图示了示出根据本公开的示例实施方式的分片过程的步骤的泳道图。
10.图6图示了根据本公开的示例实施方式的前端和后端之间的通信的架构图。
11.图7图示了根据本公开的示例实施方式的物理或虚拟计算系统的系统架构。
12.图8图示了用于实现上述用于实现分片的过程和方法的示例计算系统。
13.图9图示了用于实现上述用于实现分片的过程和方法的示例计算系统。
具体实施方式
14.本文讨论的系统和方法涉及在分布式计算中实现分片,更具体地,实现多版本分片计划以改进分布式分片之间的水平缩放和负载均衡,同时避免因数据迁移导致的停机。
15.图1示出了根据本公开内容的示例实施例的示例应用托管服务100的架构图。
16.应用托管服务100的客户可以托管一个或多个托管应用102,这些托管应用102可
通过一个或多个计算机网络访问,托管应用102包括前端104和后端106。前端104可以包括托管在连接到一个或多个网络的任何服务器上的面向终端用户的静态web内容(例如,可以使用任何合适的标记语言对其编码)或动态网页内容(例如,可以使用任何合适的脚本语言对其编码),可以包括任意数量的网站(web)主机108。网站主机108可以是一个或多个物理或虚拟服务器,其被配置成托管静态或动态网站内容。前端104可在向终端用户提供一个或多个服务的过程中调用托管应用102的一个或多个功能,终端用户可通过操作一个或多个终端设备110与一个或多个网站主机108进行通信来访问托管应用102。
17.后端106可以包括应用程序编程接口(“api”)、数据库、文件系统、计算逻辑模块、服务、设置等,其可以被配置成为提供给访问托管应用102的终端用户的服务提供函数调用和定义、计算、搜索、检索、数据收集、加索引、认证、安全等此类操作。根据本公开内容的示例实施例,后端106还可以提供诸如负载均衡、分片、缩放等功能,将在下文进一步描述。
18.后端106可以托管在数据中心112,其中计算资源诸如物理和/或虚拟处理器、存储器、存储装置、计算机可执行应用、计算机可读数据等通过一个或多个网络互连。数据中心112可以通过网关、防火墙等连接点从外部主机接收入站流量,外部主机源自外部网络,例如个域网(“pan”)、有线和无线局域网(“lan”)、有线和无线广域网(“wan”)、internet等。入站流量可以采用根据可以互操作的各种网络通信协议的任意组合格式化和封装的数据包的形式,所述网络通信协议例如互联网协议(“ip”)和传输控制协议(“tcp”);虚拟化网络通信协议,例如虚拟可扩展lan(“vxlan”);路由协议,例如多协议标签交换(“mpls”);等等。
19.数据中心112可以包括任意数量的数据中心主机114,其可以是物理的或虚拟的工作负载执行主体(随后简称为“工作者(worker)”),其为托管服务提供计算资源,该托管服务如后端106。这些计算资源可以包括例如:物理计算系统,如物理服务器、计算机、移动设备等;虚拟计算系统,如虚拟服务器、虚拟机等;或适合运行计算机可执行代码的环境,如平台、服务、应用程序容器、环境、功能等。
20.根据本公开内容的示例实施例,无服务器架构的实现可以在为托管应用102供应数据中心112的计算资源时实现。通过实现无服务器架构,客户可以通过定义由访问托管应用102的终端用户访问的一个或多个服务的业务逻辑来定义托管应用102的计算逻辑模块。本领域技术人员通常可以将业务逻辑理解为针对业务流程执行过程中的业务对象和与之相关的数据定义输入、收集、修改、存储、加索引等的高级规则。例如,提供给访问托管应用102的终端用户的服务可以是一个或多个商品和/或服务的销售,并且在该过程中涉及的业务对象可以包括终端用户购买商品和/或服务以及与之相关联的数据;库存项目和与之相关的数据;仓库和与之相关的数据;供应商和与之相关的数据;运输方和与之相关的数据;支付处理器和与之相关的数据;商家和与之相关的数据;银行和与之相关的数据;等等。
21.根据本公开内容的示例实施例,业务逻辑可以被定义为工作流应用,其可以由人类可读描述构成,通过一种或多种标记语言的语法编写,如yaml。工作流应用可以定义一系列对数据进行操作的任务,数据例如是定义业务对象的数据和与业务对象关联的数据。虽然工作流应用本身不是计算机可执行的,但工作流应用可以由计算机可执行应用读取,计算机可执行应用例如是本领域技术人员已知的发射器和解析器。发射器和解析器可以将工作流应用中定义的任务解释为计算机可执行指令,该指令可操作以配置托管计算资源的一个或多个物理和/或虚拟处理器以执行操作,例如从一个或多个终端设备获取输入、在后端
106的一个或多个数据库中记录数据、在后端106的一个或多个数据库进行查询、修改后端106的一个或多个数据库中的一个或多个条目、基于后端106的一个或多个数据库中的一个或多个条目执行操作等等。
22.根据本公开的示例实施例,“执行”通常可以指至少一组计算机可执行指令,其可操作以配置托管计算资源的一个或多个物理和/或虚拟处理器以执行能够从头到尾进行工作流应用的任务的操作。本领域技术人员已知的各种工作流引擎可以将这样的执行实现为一个或多个计算机可执行指令,其中至少一些可以同时执行,并且至少一些可以彼此独立地执行,并且可以进一步包括包装器、模块、脚本等中的一个或多个计算机可执行指令,这些可以进一步对处理器如何执行计算机可执行指令进行配置。
23.根据本公开的示例实施例,后端106以及数据中心主机114及其计算资源,包括工作者,可以被逻辑地组织成一个或多个分片116。数据库可以被逻辑地组织成一个或多个逻辑数据库分片,其中每个数据库包含数据库中包含的数据条目的子集(尽管并非所有数据都可以以这种方式组织;一些数据可能与每个逻辑数据库分片相关,因此其副本可能存在于每个逻辑数据库分片中)。数据中心主机114和计算资源也可以被组织成一个或多个物理或逻辑计算分片,其中每个计算分片可以构成物理或逻辑自治的计算系统,该计算系统可以独立于其他计算分片执行操作。因此,根据本公开的示例实施例,每个分片116可以包括物理或逻辑计算分片,逻辑数据库分片存储在该物理或逻辑计算分片上;除了数据库之外的后端106对于每个分片116可以是公共的。
24.根据本公开的示例实施例,可以任意定义分片的最大数量,只要该数量大于一即可。
25.根据本公开的示例实施例,每个分片116的计算分片可以例如通过后端106的计算逻辑模块被配置成计算工作流应用的一个或多个任务,该任务对分片116的相应逻辑数据分片的数据进行读取和写入。由于存在多个计算任务对相同的数据进行读取和写入,每个计算分片可以被配置成保持在同一工作流应用的不同任务之间读取和写入的数据的一致性。
26.例如,每个计算分片可以被配置成在同一计算分片上执行同一工作流应用的每个任务。换言之,一旦工作流应用的第一任务在特定计算分片上执行,该工作流应用的所有其他后续任务也将在该同一计算分片上执行。
27.此外,在计算分片开始执行工作流应用程序的任务之后,可以为该执行分配符号,通过该符号,对后端106的api的调用(例如被前端104调用)可以发出与正在进行的该执行有关的请求以检索有关正在进行的该执行的信息,例如其参数。因此,每个计算分片可以被配置成将对同一执行的请求路由到进行该执行的计算分片。
28.此外,分片116的所有权被动态地分配给特定客户,使得分片116的计算分片仅执行由该客户创建的工作流应用的任务。所有权可以被动态分配,以基于数据中心112处特定客户的工作流应用的总体工作负载和网络数据流量来提供计算资源的水平缩放。例如,任何特定客户最初可能具有分配给其的第一分片,并且该客户创建的所有工作流应用中的任务可以由第一分片的计算分片执行;当由于客户的工作流应用的任务执行超过某个设定阈值而导致数据中心112处的网络数据流量时,可以向该客户分配附加的分片。
29.然而,在向特定客户的工作流应用分配第二分片的分片过程中,在第二分片被分
配后,第一分片正在执行的一些任务应该被重新分配给第二分片执行,从而第一分片没有完全消耗其计算资源并成为托管应用102提供的服务中的计算瓶颈。常规地,可以通过暂停第一分片处的执行来将任务重新分配给第二分片执行,在存储装置中保存数据状态和第一分片的执行状态,然后加载数据状态和第一分片的执行状态以恢复第二分片处的执行。作为这种分片过程的结果,两个分片可能变得不可用于任务计算,导致可能持续数秒或数分钟的停机,停机的时长具体取决于数据中心112处的网络数据流量。
30.图2示出了上述引起停机的传统分片过程。一个分片划分过程200如图所示,其中,在更新开始步骤202,数据库开始将任务从第一分片重新分配到第二分片;在删除步骤204,数据库删除分配给第一分片的任务,导致该分片在等待删除时引起停机206;在写入步骤208,数据库写入分配给第二分片的任务,导致该分片在等待写入时引起停机210;并且在重分配步骤212,数据库将对该客户的第二分片的分配更新为第一分片,导致该分片在等待更新时引起停机214。可能发生三次停机。
31.因此,本公开的示例实施例提供了一种分片计划,该分片计划可以避免引起如上所述的停机。
32.图3示出了根据本公开内容的示例实施例的分片计划300的架构的逻辑图。
33.根据本公开内容的示例实施例的分片计划300可以通过数据库302实现。数据库302可以是关系数据库、非关系数据库或任何具有一般合适模式的数据库,该数据库用于存储一定数量的数据记录。此外,数据库302可以是版本化数据库,其中数据库302在特定时间的状态的快照可以被记录和持久存储,因此快照是不变的并且独立于数据库302的当前状态。可以以这种方式存储任意数量的快照,并且每个快照可以被称为分片计划300的一个版本。如图所示,存储有三个版本304a、304b和304c(其中任何未指定的版本均可被称为版本304)。可以根据任何合适的编号方案对版本的编号进行增加。
34.分片计划300可以存储在网络主机108和数据中心122中央的主机(未示出)上,使得网站主机108和数据中心122都可以访问分片计划300。通过集中托管分片计划300,网站主机108和数据中心122都可以访问分片计划300的一致副本,使得无需对分片计划300的多个副本进行同步来保持一致性。
35.在分片计划300中,数据库302的每个记录306可以存储与数据中心112的分片116相关联的信息,该分片116已被分配给特定客户的托管应用。因此,与分片相关联的信息可以与对应的分片进行关联存储,这些分片被分配给不同客户的托管应用。
36.如图3所示,分片计划300的每个后续版本具有比先前版本更多的记录。这说明,根据分片计划300,数据库302被更新为增大了分配给特定客户的分片116的数量。然而,分片计划300的后续版本也可能具有比先前版本更少的记录;这说明,根据分片计划300,数据库302被更新为减少了分配给特定客户的分片116的数量。放大和缩小分片的过程将在后文描述。
37.与分片116相关联的信息可以包括键值区间。根据本公开的示例实施例,可以生成唯一键值以分配给分片116。例如,可以通过本领域技术人员已知的散列算法生成唯一键值。此类算法的示例包括所谓的djb2算法、fowler-noll-vo散列函数(例如,可以实现为“fnv-1”或“fnv-1a”变体)、以及所谓的dbm散列算法(例如,包括sdbm散列算法变体)。顺序生成的键值区间可以分配给分片116,该区间包括多个键值。根据本公开的示例实施例,可
以为此目的生成任意数量的唯一键值;例如,可以生成最大键值空间(可以由多个位定义)内的所有可能的唯一键值。如果在生成的键值中发生冲突导致生成非唯一键值,例如由于本领域技术人员已知的哈希算法本身并非无冲突,或者由于在最大键值空间内生成所有可能的键值,可以在非唯一键值的尾部附加任意长度的附加字符串,以确保其唯一性。向键值添加字符串,增加了键值的位长,从而可以扩展最大键值空间。
38.图4示出了根据本公开内容的示例实施例的键值空间400。应用于本公开内容的键值空间可以是包含所有可能的唯一键值的整个空间,该唯一键值由散列算法生成。本公开内容的示例实施例不限制可以存储键值空间400的键值的数据结构。这样的数据结构例如可以是哈希表,本文中键值空间400被示为哈希环。哈希环可以有助于如上所述的键值空间400的扩展,且不导致对生成现有键值的散列的重新映射。
39.在键值空间400上示出了四个键值区间;这四个键值区间可以分配给四个分片。第一键值区间从键值402(包括键值402)到键值404(不包括键值404)并且可以分配给第一分片。第二键值区间从键值404(包括键值404)到键值406(不包括键值406)并且可以分配给第二分片。第三键值区间从键值406(包括键值406)到键值408(不包括键值408)并且可以分配给第三分片。第四键值区间从键值408(包括键值408)到键值410(不包括键值410)并且可以分配给第四分片。
40.图5示出了根据本公开内容示例实施例的分片过程500的步骤的泳道图。分片过程500的步骤可以在前端104、后端106、数据库302(其可以存在于前端104和后端106所需的尽可能多的一致副本中以协调分片过程500的步骤)、以及分片计划300的版本304之间执行。
41.在步骤502处,前端104向数据库中工作流应用的执行分配执行标识和执行键值。在向终端用户提供服务的过程中调用托管应用102的一个或多个功能可以实现工作流应用的执行的初始化。
42.在对执行进行初始化时,前端104向该执行分配唯一的执行标识(其随后在附图中可以缩写为“exec_id”)。执行标识可以依次生成。可选地,执行标识可以在如上所述的键值空间上有间隔地,非顺序地生成。生成执行标识的方式可以决定数据中心处工作流应用的执行的负载均衡,下文将会描述。
43.此外,在对执行进行初始化时,前端104生成执行键值并将执行键值分配给由所分配的执行标识指示的执行。可以采用与上述为分片分配的唯一键值相同的生成方式生成执行键值,例如以确定性方式使用同一算法,使得用于生成分配给分片的每个唯一键值的内容可以生成一次以作为执行键值,但不能生成超过一次。例如,可以以确定性方式使用哈希算法,通过将一组确定的输入集传递给哈希函数以生成用于分配给分片的唯一键值,然后将该输入集中的每个输入传递给哈希函数至多一次以生成执行键值。以这种方式,每个执行键值将与一个分配给分片的唯一键值相匹配。
44.在步骤504处,数据库控制器将与执行对应的执行标识持久地记录在数据库302中,并发布分片计划300的版本304。
45.分片计划300的最新版本可以标识在记录执行标识期间被持久记录的分片计划300的版本。因此,在记录执行标识之后,分片计划300的最新版本以不变的形式发布;执行标识的后续记录可以发布后续最新版本,而不会更改当前所述的最新版本。
46.可以将执行标识与最新版本相关联地记录为从执行标识到最新版本的映射。可选
地,可以将执行标识与最新版本相关联地记录为以执行标识作为索引值的记录,将最新版本作为该记录的一个字段的值。例如,表1和表2示出了根据本公开内容的示例实施例的数据库架构的部分。应当理解,虽然本文出于说明性目的示出了这些表,但是根据任何合适的数据库模式,表1和表2可以为对应于类似的合适的数据库模式的记录集。
47.exec_idplan_versionexec_keyhandling_shardexec_11111shard_1exec_21mmmshard_3exec_31sssshard_3exec_41zzzshard_4
48.如表1所示,执行标识可以被记录为与最新版本相关联的每个记录的索引“exec_id”,最新版本被记录为“plan_version”字段的值。
49.另外,可以将执行标识与最新版本之外的信息相关联地记录。如表1进一步示出的,如上所述,执行标识可以被记录为与执行键值相关联的每个记录的索引,执行键值被记录为“exec_key”字段的值。
50.此外,对于任何记录,如果对应于执行标识为索引值的执行已经完成,则可以删除该记录。主服务(未示出)可以托管在数据库控制器和数据中心122的中心,主服务被配置为与数据中心122通信以跟踪正在进行的执行。当一个或多个执行完成时,主服务可以与数据库控制器通信以使数据库控制器删除一个或多个相应记录。
51.在步骤506处,数据库控制器将分片计划300的发布版本返回给前端104。前端104可以从数据库控制器接收分片计划300的发布版本。
52.在步骤508处,前端104根据从数据库控制器返回的分片计划300的发布版本确定分配给执行的分片标识。
53.shard_idplan_versionaccount_idbegin_tokenend_tokenshard_11111inf_minfshard_21111fmshard_31111msshard_41111sinf_min
54.如表2所示,数据库302可以已经存储如上文的分片计划300所示的信息。如上所述,表2示出了分片116(其各自对应的分片标识被记录为每个记录的索引“shard_id”)与其他信息相关联的记录。该其他信息可以包括版本,其被记录为“plan_version”字段的值;客户标识,其被记录为“account_id”字段的值(这里,所显示的所有记录都与分配给具有客户标识“111”的同一客户的分片有关;如上所述,在记录有客户的客户标识的分片计划300的最早版本中,每个客户可以仅被分配一个分片,后续版本可能实现向客户分配更多分片);键值区间被记录为“begin_token”字段的值和“end_token”字段的值(这两个字段分别定义键值区间的开始和结束)。
55.通过在如表2所示的记录集合中查找执行键值,前端104可以确定该执行键值落入的对应键值区间的分片116的分片标识。通过该查询,前端104可以返回分片标识并将其与对应的执行标识相关联地记录为“handling_shard”字段的值。以这种方式,通过在分片计划300的最新版本中持久记录上述信息,可以将分片116不变地分配给与执行键值对应的执
行。在“handling_shard”字段的值被记录后,前端104可以执行其他查找,而无需进一步写入“handling_shard”字段的值。
56.由于每个键值区间具有预定的下限和上限,当生成第一键值区间内的执行键值并接收到分配的分片时,后续的执行键值不能再在第一键值区间内生成,而必须在其他键值区间内生成。因此,正被消耗的第一键值区间可以指示分配给该键值区间的分片已满负荷并且不应向其分配额外的工作流应用。因此,键值区间的大小可以根据数据中心的各个分片的计算能力来确定;例如,可以确定键值区间的大小,使得在不再向其分配工作流应用之前,分片将处于最大计算能力,或者使得在不再向其分配工作流应用之前,分片可以具有一些剩余的计算能力以避免瓶颈。
57.此外,执行键值的生成方式可以决定数据中心的跨分片的工作流应用的负载均衡。例如,如果执行键值按顺序生成,则在第二个分片开始接收工作负载之前,第一个分片的计算能力可以被完全加载。如果执行键值以一定间隔生成,则各分片可能以循环方式接收大致相等的工作负载。
58.根据本公开内容的示例实施例,基于以下将描述的原因,为执行分配的分片116可以是不变的。
59.在步骤510处,前端104将执行转发到后端106处所分配的分片116。
60.前端104可以以执行标识和分片标识作为参数调用后端106的api。随后,如上所述,工作流应用的任务的执行可以由后端106(例如,由发射器和解析器)执行。
61.随后,如上所述,前端104可以将关于执行的请求初始化。该请求可以在前端104的操作期间的任何时间、在向终端用户提供服务的过程中通过调用托管应用102的一个或多个函数而被初始化。
62.此后,与上述步骤502和步骤506至510类似地,执行以下步骤512至518。
63.在步骤512处,前端104接收针对工作流应用的执行的请求。前端104可以在数据库302中查询分片计划300的版本304,而无需在数据库302中进一步记录信息。
64.在步骤514处,数据库控制器将分片计划300的已发布版本304返回给前端104。
65.在步骤516处,前端104根据从数据库控制器返回的分片计划300的版本304确定分配给执行的分片标识。
66.在步骤518,前端104将请求转发到后端106处的所分配的分片116。
67.根据上述分片过程500,由于每个分片被不变地分配给执行,工作流应用将不会被从一个分片重新分配到另一个分片。因此,由于分片过程引起的停机最少,并且当分片具有剩余的计算能力时,分片可能仍然可用于传入的工作流应用和传入的请求。此外,一旦数据库控制器发布了新版本的分片计划,前端和后端都可以快速访问分片计划的新版本并且如分片计划的新版本所反映的那样更改传入工作流应用的分配和请求,使得分片不会继续接收超出其计算能力的工作负载。
68.图6示出了根据本公开内容的示例实施例的前端与后端之间的通信的架构图。前端104和后端106都与数据库主机602通信,数据库主机602可以由数据库控制器604控制以在数据库中记录持久条目并发布该数据库的不变版本。如所示出的,前端104可以接收请求。
69.前端104进一步与数据中心112处为后端106提供计算资源的物理或虚拟工作者
606通信。工作者606的计算资源可以被组织成分区608,分区608可以进一步组织成分片116.
70.图7示出了根据本公开内容的示例实施例的物理或虚拟计算系统700的系统架构。
71.根据本公开内容的示例实施例的物理或虚拟计算系统700可以包括一个或多个通用处理器702,并且还可以包括一个或多个专用处理器704。通用处理器702和专用处理器704可以是物理的,或者可以是虚拟化的和/或分布式的。通用处理器702和专用处理器704可以执行如下所述存储在计算机可读存储介质上的一个或多个指令,以使通用处理器702或专用处理器处理器704执行工作流应用的任务。专用处理器704可以是具有便于执行特定数据相关任务的硬件或软件元件的计算设备。例如,专用处理器704可以是加速器,例如神经网络处理单元(“npu”)、使用现场可编程门阵列(“fpga”)和专用集成电路(“asic”)的实现,等等。
72.物理或虚拟计算系统700还可以包括通过系统总线708通信地耦合到通用处理器702和专用处理器704的系统存储器706。系统存储器706可以是物理的或者可以是虚拟化的和/或分布式的。根据系统700的确切配置和类型,系统存储器706可以是易失性的,例如ram,可以是非易失性的,例如rom、闪存、微型硬盘驱动器、存储卡等,或者是其组合。
73.系统总线708可以在通用处理器702与系统存储器706之间、在专用处理器704与系统存储器706之间、以及在通用处理器702与专用处理器704之间传输数据。此外,数据总线710可以在通用处理器702与专用处理器704之间传输数据。数据总线710可以例如是外围组件互连快件(“pcie”)连接等。
74.图8示出了用于实现上述用于实现分片的过程和方法的示例计算系统800。
75.本文描述的技术和机制可以由计算系统800的多个实例以及任何其他计算设备、系统和/或环境来实现。计算系统800可以是任何种类的计算设备,例如个人计算机、个人平板电脑、移动设备、可操作以执行矩阵算术计算的其他此类计算设备。图8中所示的计算系统800仅是系统的一个示例并且不旨在暗示对用于执行上述处理和/或过程的任何计算设备的使用范围或功能的任何限制。可以适用于实施例的其他公知的计算设备、系统、环境和/或配置包括但不限于个人计算机、服务器计算机、手持或膝上型设备、多处理器系统、基于微处理器的系统、机顶盒、游戏机、可编程消费电子产品、网络pc、小型计算机、大型计算机、包括上述任何系统或设备的分布式计算环境、使用现场可编程门阵列(“fpga”)和专用集成电路(“asic”)的实现,等等。
76.系统800可以包括一个或多个处理器802和通信耦合到处理器802的系统存储器804。处理器802和系统存储器804可以是物理的或者可以是虚拟化的和/或分布式的。处理器802可以执行一个或多个模块和/或过程以使处理器802执行多种功能。在实施例中,处理器802可以包括中央处理单元(“cpu”)、图形处理单元(“gpu”)、npu、其任何组合、或本领域已知的其他处理单元或部件。此外,每个处理器802可以拥有其自己的本地存储器,该本地存储器还可以存储程序模块、程序数据和/或一个或多个操作系统。
77.取决于计算系统800的确切配置和类型,系统存储器804可以是易失性的,例如ram,可以是非易失性的,例如rom、闪存、微型硬盘驱动器、存储卡等,或是其组合。系统存储器804可以包括可由处理器802执行的一个或多个计算机可执行模块806。
78.模块806可以包括但不限于分配模块808、键值生成模块810、分片计划版本接收模
块812、分片确定模块814、以及执行转发模块816。
79.分配模块808可以被配置成向数据库中的工作流应用的执行分配执行标识和执行键值,如以上参照图5所述。
80.键值生成模块810可以被配置成生成执行键值,如以上参照图5所述。
81.分片计划版本接收模块812可以被配置成从数据库接收分片计划的发布版本,如以上参照图5所述。
82.分片确定模块814可以被配置成根据分片计划的版本来确定分配给执行的分片标识,如以上参照图5所述。
83.执行转发模块816可以被配置成将执行转发给后端处的所分配的分片,如以上参照图5所述。
84.系统800可以另外包括输入/输出(“i/o”)接口840和通信模块850,以允许系统800通过网络与其他系统和设备(例如,上述数据库主机和数据中心)通信。网络可以包括互联网、有线介质诸如有线网络或直接有线连接、以及无线介质诸如声学、射频(“rf”)、红外和其他无线介质。
85.图9示出了用于实现上述用于实现分片的过程和方法的示例计算系统900。
86.本文所述的技术和机制可以由计算系统900的多个实例以及任何其他计算设备、系统和/或环境来实现。计算系统900可以是任何种类的计算设备,例如个人计算机、个人平板电脑、移动设备、可操作以执行矩阵算术计算的其他此类计算设备。图9所示的计算系统900仅是系统的一个示例且并不旨在暗示对用于执行上述处理和/或过程的任何计算设备的使用范围或功能的任何限制。可以适用于实施例的其他公知的计算设备、系统、环境和/或配置包括但不限于个人计算机、服务器计算机、手持或膝上型设备、多处理器系统、基于微处理器的系统、机顶盒、游戏机、可编程消费电子产品、网络pc、小型计算机、大型计算机、包括上述任何系统或设备的分布式计算环境、使用现场可编程门阵列(“fpga”)和专用集成电路(“asic”)的实现,等等。
87.系统900可以包括一个或多个处理器902和通信耦合到处理器902的系统存储器904。处理器902和系统存储器904可以是物理的或者可以是虚拟化的和/或分布式的。处理器902可以执行一个或多个模块和/或过程以使处理器902实现多种功能。在实施例中,处理器902可以包括中央处理单元(“cpu”)、图形处理单元(“gpu”)、npu、以上的任何组合、或本领域已知的其他处理单元或部件。此外,每个处理器902可以拥有其自己的本地存储器,该本地存储器还可以存储程序模块、程序数据和/或一个或多个操作系统。
88.取决于计算系统900的确切配置和类型,系统存储器904可以是易失性的,例如ram,可以是非易失性的,例如rom、闪存、微型硬盘驱动器、存储卡等,或是其组合。系统存储器904可以包括可由处理器902执行的一个或多个计算机可执行模块906。
89.模块906可以包括但不限于版本发布模块908和版本返回模块910。
90.版本发布模块908可以被配置成在数据库中持久记录与执行对应的执行标识,并且发布分片计划的版本,如以上参照图1所述。
91.版本返回模块910可以被配置成将分片计划的已发布的版本返回到前端,如以上参照图5所描述的。
92.系统900可以另外包括输入/输出(“i/o”)接口940和通信模块950,以允许系统900
通过网络与其他系统和设备(例如上述网站主机和数据中心)通信。网络可以包括互联网、有线介质诸如有线网络或直接有线连接、以及无线介质诸如声学、射频(“rf”)、红外和其他无线介质。
93.上述方法的一些或所有操作可以通过执行计算机可读存储介质上存储的计算机可读指令来执行,其在下文中定义。如在说明书和权利要求中使用的术语“计算机可读指令”包括例程、应用、应用模块、程序模块、程序、部件、数据结构、算法等。计算机可读指令可以在各种系统配置上实现,包括单处理器或多处理器系统、小型计算机、大型计算机、个人计算机、手持计算设备、基于微处理器的可编程消费电子产品、以上的组合、等。
94.计算机可读存储介质可以包括易失性存储器(例如随机存取存储器(“ram”))和/或非易失性存储器(例如只读存储器(“rom”)、闪存等)。计算机可读存储介质还可以包括附加的可移动存储和/或不可移动存储,包括但不限于闪存、磁存储装置、光存储装置和/或磁带存储装置,其可以提供对计算机可读指令、数据结构、程序模块等的非易失性存储。
95.非瞬时计算机可读存储介质是计算机可读介质的示例。计算机可读介质包括至少两种计算机可读介质,即计算机可读存储介质和通信介质。计算机可读存储介质包括以任何过程或技术实现的易失性和非易失性、可移动和不可移动介质,用于存储诸如计算机可读指令、数据结构、程序模块或其他数据之类的信息。计算机可读存储介质包括但不限于相变存储器(“pram”)、静态随机存取存储器(“sram”)、动态随机存取存储器(“dram”)、其他类型的随机存取存储器(“ram”)、只读存储器(“rom”)、电可擦可编程只读存储器(“eeprom”)、闪存或其他存储器技术、光盘只读存储器(“cd-rom”)、数字多功能盘(“dvd”)或其他光存储装置、卡式磁带、磁带、磁盘存储装置或其他磁存储装置、或任何其他可用于存储信息以供计算设备访问的非传输介质。通信介质可以在调制数据信号,如载波,或其他传输机制的体现计算机可读指令、数据结构、程序模块或其他数据。如本文所定义的,计算机可读存储介质不包括通信介质。
96.存储在一个或多个非瞬时计算机可读存储介质上的计算机可读指令,当被一个或多个处理器执行时,可以执行以上参照图1至图7描述的操作。通常,计算机可读指令包括执行特定功能或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等。所描述的操作顺序不旨在被解释为限制,并且任何数量的所述操作可以以任何顺序和/或并行组合以实现过程。
97.通过上述技术方案,本公开内容提供了一种多版本分片计划,以提高分布式分片的水平缩放和负载均衡,同时避免因数据迁移导致的停机。根据无服务器架构,应用托管服务提供商可以为客户提供划分为分片的分布式计算资源,这些分片可以进行动态分配、扩展和负载均衡以用于与架构无关的工作流应用。版本化的分片计划可以在数据库中实现,其存储使工作流应用执行能够唯一映射到特定分片的键值区间。数据库控制器可以不变地为工作流应用程序的每次执行分配分片,并发布可供客户托管应用的前端和后端访问的新版本的分片计划。通过这些解决方案,在分配给工作流应用的计算资源的水平缩放过程中,避免了分片之间的数据迁移,并且不会因此导致停机。
98.示例条款
99.a.一种方法,包括:向数据库中工作流应用的执行分配执行标识;根据所述数据库返回的已发布的分片计划确定分配给所述执行的分片标识;以及将所述执行转发给处于后
端的所分配的分片。
100.b.如段落a所述的方法,还包括:生成执行键值并将所述执行键值分配给所述执行。
101.c.如段落b所述的方法,其中,生成所述执行键值包括:在键值空间中确定性地生成唯一键值。
102.d.如段落b所述的方法,其中,所述分片计划包括分片标识与键值区间之间的对应关系。
103.e.如段落d所述的方法,其中,确定分配给所述执行的所述分片标识包括:查找包括所述执行键值的键值区间。
104.f.如段落e所述的方法,其中,确定分配给所述执行的所述分片标识还包括:在所述分片计划中记录所述执行标识与所述分片标识之间的对应关系。
105.g、如f所述的方法,其中,所述执行标识与所述分片标识之间的对应关系被持久记录。
106.h.一种系统,包括:一个或多个处理器;以及存储器,所述存储器通信地耦合到所述一个或多个处理器,所述存储器存储可由所述一个或多个处理器执行的计算机可执行模块,所述计算机可执行模块在由所述一个或多个处理器执行时实现相关联的操作,所述计算机可执行模块包括:分配模块,其被配置成向数据库中工作流应用的执行分配执行标识;分片确定模块,其被配置成根据所述数据库返回的已发布的分片计划确定分配给所述执行的分片标识;以及执行转发模块,其被配置成将所述执行转发给处于后端的所分配的分片。
107.i.如段落h所述的系统,还包括键值生成模块,所述键值生成模块被配置成生成执行键值,并且其中,所述分配模块还被配置成将所述执行键值分配给所述执行。
108.j.如段落i所述的系统,其中,所述键值生成模块还被配置成:通过在键值空间中确定性地生成唯一键值来生成所述执行键值。
109.k.如段落i所述的系统,其中,所述分片计划包括分片标识与键值区间之间的对应关系。
110.l.如段落k所述的系统,其中,所述分片确定模块被配置成:通过查找包括所述执行键值的键值区间来确定分配给所述执行的所述分片标识。。
111.m.如段落l所述的系统,其中,所述分片确定模块被配置成:进一步通过在所述分片计划中记录所述执行标识与所述分片标识之间的对应关系来确定分配给所述执行的所述分片标识。
112.n.如段落m所述的系统,其中,所述分片确定模块被配置成:持久记录所述执行标识与所述分片标识之间的对应关系。
113.o.一种计算机可读存储介质,其存储可由一个或多个处理器执行的计算机可读指令,当所述计算机可读指令由所述一个或多个处理器执行时,使所述一个或多个处理器执行下述操作:向数据库中工作流应用的执行分配执行标识;根据所述数据库返回的已发布的分片计划确定分配给所述执行的分片标识;以及将所述执行转发给处于后端的所分配的分片。
114.p.如段落o所述的计算机可读存储介质,其中,所述操作还包括:生成执行键值并将所述执行键值分配给所述执行。
115.q.如段落p所述的计算机可读存储介质,其中,生成所述执行键值包括:在键值空间中确定性地生成唯一键值。
116.r.如段落p所述的计算机可读存储介质,其中,所述分片计划包括分片标识与键值区间之间的对应关系。
117.s.如段落r所述的计算机可读存储介质,其中,确定分配给所述执行的所述分片标识包括:查找包括所述执行键值的键值区间。
118.t.如段落s所述的计算机可读存储介质,其中确定分配给所述执行的所述分片标识包括:在分片计划中记录执行标识与分片标识之间的对应关系。
119.u、如段落t所述的计算机可读存储介质,其中执行标识与分片标识之间的对应关系被持久记录。
120.尽管已经以特定于结构特征和/或方法动作的语言描述了主题,但是应当理解,在所附权利要求中限定的主题不一定限于所描述的特定特征或动作。相反,具体特征和动作被公开为实现权利要求的示例形式。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1