CN117769703A - 无停机安全数据库迁移技术 - Google Patents
无停机安全数据库迁移技术 Download PDFInfo
- Publication number
- CN117769703A CN117769703A CN202280053430.2A CN202280053430A CN117769703A CN 117769703 A CN117769703 A CN 117769703A CN 202280053430 A CN202280053430 A CN 202280053430A CN 117769703 A CN117769703 A CN 117769703A
- Authority
- CN
- China
- Prior art keywords
- data store
- data
- initial
- computing system
- distributed computing
- 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
- 238000000034 method Methods 0.000 title claims abstract description 122
- 238000013508 migration Methods 0.000 title claims abstract description 110
- 230000005012 migration Effects 0.000 title claims abstract description 100
- 230000004044 response Effects 0.000 claims description 28
- 230000001052 transient effect Effects 0.000 claims description 23
- 230000015654 memory Effects 0.000 claims description 22
- 230000005540 biological transmission Effects 0.000 claims description 8
- 230000008569 process Effects 0.000 description 84
- 238000012545 processing Methods 0.000 description 26
- 238000004891 communication Methods 0.000 description 25
- 230000006854 communication Effects 0.000 description 25
- 238000010586 diagram Methods 0.000 description 19
- 238000007726 management method Methods 0.000 description 17
- RWSOTUBLDIXVET-UHFFFAOYSA-N Dihydrogen sulfide Chemical compound S RWSOTUBLDIXVET-UHFFFAOYSA-N 0.000 description 14
- 230000000977 initiatory effect Effects 0.000 description 14
- 230000007704 transition Effects 0.000 description 12
- 238000013500 data storage Methods 0.000 description 10
- 238000012986 modification Methods 0.000 description 8
- 230000004048 modification Effects 0.000 description 8
- 230000010076 replication Effects 0.000 description 8
- 238000005516 engineering process Methods 0.000 description 6
- 230000006641 stabilisation Effects 0.000 description 6
- 238000011105 stabilization Methods 0.000 description 6
- 230000006870 function Effects 0.000 description 5
- 238000012544 monitoring process Methods 0.000 description 5
- 230000002093 peripheral effect Effects 0.000 description 5
- 238000013519 translation Methods 0.000 description 4
- 230000001413 cellular effect Effects 0.000 description 3
- 230000008859 change Effects 0.000 description 3
- 230000000694 effects Effects 0.000 description 3
- 238000002955 isolation Methods 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 239000007787 solid Substances 0.000 description 3
- 238000012546 transfer Methods 0.000 description 3
- 230000001133 acceleration Effects 0.000 description 2
- 238000007792 addition Methods 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 230000009977 dual effect Effects 0.000 description 2
- 230000000670 limiting effect Effects 0.000 description 2
- 230000003362 replicative effect Effects 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 241000699666 Mus <mouse, genus> Species 0.000 description 1
- 241000699670 Mus sp. Species 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 230000004075 alteration Effects 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000007175 bidirectional communication Effects 0.000 description 1
- 230000004397 blinking Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000002591 computed tomography Methods 0.000 description 1
- 238000012790 confirmation Methods 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000007796 conventional method Methods 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 230000001066 destructive effect Effects 0.000 description 1
- 238000002059 diagnostic imaging Methods 0.000 description 1
- 230000036541 health Effects 0.000 description 1
- 238000009434 installation Methods 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000002595 magnetic resonance imaging Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000005259 measurement Methods 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 238000002600 positron emission tomography Methods 0.000 description 1
- 230000002265 prevention Effects 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 230000002829 reductive effect Effects 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
- 230000008685 targeting Effects 0.000 description 1
- 238000002604 ultrasonography Methods 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/21—Design, administration or maintenance of databases
- G06F16/214—Database migration support
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2358—Change logging, detection, and notification
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2379—Updates performed during online database operations; commit processing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
- G06F16/278—Data partitioning, e.g. horizontal or vertical partitioning
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
公开了用于实现数据存储库之间的高效数据迁移而无需停机的技术。分布式计算系统可以被实现有初始数据存储库和目标数据存储库。在数据的一部分从初始数据存储库迁移到目标数据存储库期间,分布式计算系统可以接收在数据存储库处创建数据实体或启动工作流实例的请求。系统可以确定初始数据存储库或目标数据存储库是否已被指定为用于处置请求的主数据存储库。系统还可以确定初始数据存储库或目标数据存储库是否包含与请求相关联的键。如果该键存在于任一数据存储库中,那么系统可以中止数据实体的创建。
Description
背景技术
基于云的服务提供用于处理任务的解决方案,其中任务可能经由事务导致数据在数据存储库或数据库中存储或更新。在多租户分布式计算系统中,随着数据存储后端的需求变化,客户数据可能从一个数据存储库迁移到另一个数据存储库。传统上,迁移客户数据会带来停机(downtime)成本,这表示在计算环境从初始数据存储库转换到目标数据存储库的时间期间客户进程的功能损失。因此,需要一种改进的技术,用于将数据从一个数据存储库迁移到另一个数据存储库,同时保留客户进程的功能。
技术领域
本公开涉及分布式计算系统。更具体而言,本公开描述了用于分布式计算系统内的数据库迁移而不引起数据库停机的技术。
发明内容
本公开的实施例涉及提供无停机的数据库迁移。在无停机的情况下进行的数据库迁移可以保留用户在迁移之前、期间和之后与数据库交互的功能,使得用户在迁移过程中不会经历功能损失。特别地,本公开的一些实施例描述了用于将数据的一部分(而不是所有数据)从一个数据库迁移到另一个数据库的方法。
一些实施例提供用于在分布式计算系统内实现初始数据存储库和目标数据存储库的方法。数据存储库可以是数据库或其它数据存储系统。数据存储库可以具有若干种不同类型,包括NoSQL(包括键-值)、关系型和多模式。分布式计算系统可以被配置为提供工作流服务或其它应用服务。对于与工作流对应的实施例,分布式计算系统可以包括分布式计算系统的用户/客户可用的一套云服务当中的工作流即服务(WFaaS)。因为工作流服务可以在数据迁移之前和期间处置对数据存储库处的事务的大量请求,因此本文公开的技术可以解决客户请求的适当处置,诸如工作流启动或查询。工作流可以包括要执行以处理工作流实例数据的一系列任务或其它操作。
一个实施例针对一种由分布式计算系统执行的方法。该方法可以包括实现初始数据存储库和目标数据存储库。初始数据存储库可以具有初始存储状态,其可以是打开或关闭。类似地,目标数据存储库可以具有目标存储状态,其可以是打开或关闭。一个数据存储库被指定为主(数据存储库)。初始数据存储库可以被配置为存储与初始数据存储库的用户(例如,客户、租户等)相关联的数据。可以将数据的一部分从初始数据存储库迁移到目标数据存储库。迁移数据的一部分可以包括将数据的该部分从初始数据存储库复制到目标数据存储库、改变初始存储状态、改变目标存储状态、以及改变指定的主(数据存储库)。
当数据的一部分被迁移时,分布式计算系统可以接收需要创建新的数据实体(例如,第一数据实体)的客户请求。创建数据实体也可以被称为启动实例(例如,工作流实例),使得客户请求可以被称为启动请求。创建第一数据实体可以包括与数据存储库的一个或多个事务。请求可以包括可以唯一地标识该请求的键和/或其它属性。分布式计算系统可以确定初始数据存储库被指定为主数据存储库并且因此是与启动请求和事务相关联的适当数据存储库。分布式计算系统(例如,分布式计算系统的调度器或其它进程)也可以确定初始存储状态为打开。如果存储状态为打开,那么检查目标数据存储库是否存在与请求相关联的键。键可以作为第一数据实体的启动事务的一部分被存储;数据存储库中存在键指示具有相同键的数据实体已在该数据存储库处被启动。为了确保在迁移过程期间不启动具有相同键的实例,分布式计算系统(除了核实该键不存在于初始数据存储库中之外)还可以核实该键不存在于目标数据存储库中。如果该键不存在,那么可以在初始数据存储库处创建第一数据实体。用于创建第一数据实体的事务可以包括将第一数据实体提交到初始数据存储库或中止事务。
在另一个实施例中,该方法可以包括用于处置后面在迁移过程中发生的启动请求的附加操作。目标数据存储库可以被指定为主数据存储库。分布式计算系统可以接收创建与第二键相关联的第二数据实体的第二请求。分布式计算系统然后可以确定目标数据存储库被指定为主(数据存储库)、确定目标存储状态、以及核实第二键不存在于初始数据存储库中。基于这些确定(例如,目标存储状态为打开),分布式计算系统可以在目标数据存储库处创建第二数据实体。
在一些实施例中,存储在初始数据存储库处的用户数据可以包括不可变数据、瞬态数据和键数据。不可变数据可以是在数据存储库内创建的、可以被读取但不能被更新或删除的数据。当在初始数据存储库和目标数据存储库之间迁移数据的第一部分和附加部分时,数据的这些部分可以包括不可变数据。
在另一个实施例中,该方法可以包括用于在数据的一部分已经从初始数据存储库复制到目标数据存储库之后处置回滚数据迁移的附加操作。云服务(例如,WFaaS)可以在迁移期间在目标数据存储库中创建新的不可变数据(例如,第二数据实体可以包括新的不可变数据)。初始数据存储库可以被指定为主数据存储库。数据的附加部分可以从目标数据存储库传输到初始数据存储库。数据的附加部分可以包括由云服务创建的新的不可变数据。在此传输期间,分布式计算系统可以接收创建第三数据实体的第三请求。第三请求可以包括第三键。分布式计算系统然后可以确定初始数据存储库被指定为主数据存储库、初始存储状态为打开、以及第三键不存在于目标数据存储库中。分布式计算系统然后可以在初始数据存储库处创建第三数据实体。
在一些其它实施例中,该方法包括在将事务提交到初始数据存储库之前确保初始存储状态为打开的操作。该事务可能导致在数据存储库中创建键和不可变数据,该数据与第一数据实体和第二数据实体的创建相关联。
另一个实施例针对一种分布式计算系统,其包括一个或多个处理器和存储计算机可执行指令的一个或多个存储器,该计算机可执行指令在用一个或多个处理器执行时,使得分布式计算系统实现初始数据存储库和目标数据存储库。分布式计算系统可以将初始数据存储库指定为主数据存储库。这些指令可以使得分布式计算系统将数据的一部分从初始数据存储库迁移到目标数据存储库。当数据正在(例如,通过复制)迁移时,分布式计算系统可以接收在初始数据存储库处创建第一数据实体的请求。该请求可以包括可以唯一地标识该请求的键、第一数据实体、第一数据实体的范围或该请求的其它属性。这些指令可以使得分布式计算系统确定初始数据存储库被指定为主数据存储库并且因此是与启动请求和事务相关联的适当数据存储库。这些指令还可以使得分布式计算系统确定初始存储状态为打开。如果存储状态为打开,那么检查目标数据存储库是否存在与请求相关联的键。如果该键不存在,那么分布式计算系统将第一数据实体存储在初始数据存储库处。用于创建第一数据实体的事务可以包括将第一数据实体提交到初始数据存储库或中止事务。
在又一个实施例中,指令可以使得分布式计算系统处置后面在迁移过程中发生的启动请求。目标数据存储库可以被指定为主数据存储库。分布式计算系统可以接收创建与第二键相关联的第二数据实体的第二请求。然后,指令可以使得计算系统确定目标数据存储库被指定为主(数据存储库)、确定目标存储状态、以及核实第二键不存在于初始数据存储库中。基于这些确定(例如,目标存储状态为打开),系统可以在目标数据存储库处创建第二数据实体。
在另一个实施例中,指令可以允许分布式计算系统在数据的一部分已经从初始数据存储库复制到目标数据存储库之后处置回滚数据迁移。第二数据实体可以包括目标数据存储库中的新的不可变数据。初始数据存储库可以被指定为主数据存储库。指令可以使得分布式计算系统将数据的附加部分从目标数据存储库传输到初始数据存储库。在此传输期间,分布式计算系统可以接收创建第三数据实体的第三请求。第三请求可以包括第三键。指令可以使得分布式计算系统确定初始数据存储库被指定为主数据存储库、初始存储状态为打开、以及第三键不存在于目标数据存储库中。计算系统然后可以在初始数据存储库处创建第三数据实体。
又一个实施例针对一种存储特定计算机可执行指令的非暂态计算机可读介质,该计算机可执行指令在由处理器执行时使得计算机系统至少:实现初始数据存储库和目标数据存储库;将数据的一部分从初始数据存储库迁移到目标数据存储库;当数据正在迁移时,接收在初始数据存储库处创建第一数据实体的请求;确定初始数据存储库被指定为主数据存储库;确定初始存储状态为打开;核实目标数据存储库处是否存在与请求相关联的键;以及根据确定该键不存在,在初始数据存储库处创建第一数据实体。用于创建第一数据实体的事务可以包括将第一数据实体提交到初始数据存储库或中止事务。
在一些实施例中,指令可以使得分布式计算系统:将目标数据存储库指定为主数据存储库;接收创建与第二键相关联的第二数据实体的第二请求;确定目标数据存储库被指定为主(数据存储库)、确定目标存储状态、核实第二键不存在于初始数据存储库中;以及根据这些确定,在目标数据源处创建第二数据实体。
在另一个实施例中,指令可以使得分布式计算系统:在目标数据存储库中创建新的不可变数据;将初始数据存储库指定为主数据存储库;将数据的附加部分从目标数据存储库传输到初始数据存储库;以及在此传输期间,接收创建第三数据实体的第三请求。第三请求可以包括第三键。指令可以附加地使得分布式计算系统:确定初始数据存储库被指定为主数据存储库、确定初始存储状态、核实第三键不存在于目标数据存储库中;以及在初始数据存储库处创建第三数据实体。
实施例可以通过使用计算机程序产品来实现,该计算机程序产品包括计算机程序/指令,该计算机程序/指令在由处理器执行时,使得处理器执行本公开中描述的任何方法。
附图说明
图1是根据一些实施例的将数据从初始数据存储库迁移到目标数据存储库的示例处理的简化框图和相关联流程图。
图2图示了根据一些实施例的实现可以启动用于与数据存储库进行事务处理的进程的工作流服务的示例分布式计算系统。
图3是图示根据实施例的用于数据迁移的示例初始数据存储库配置和目标数据存储库配置的简化框图。
图4是根据一些实施例的用于在数据从初始数据存储库迁移到目标数据存储库期间处置进程启动逻辑的示例处理的流程图。
图5是根据一些实施例的用于回滚从初始数据存储库到目标数据存储库的数据迁移的示例处理的流程图。
图6是根据一些实施例的在数据从初始数据存储库迁移到目标数据存储库期间创建第一数据实体的示例处理的简化流程图。
图7是根据一些实施例的在数据从初始数据存储库迁移到目标数据存储库期间创建第二数据实体的示例处理的另一个简化流程图。
图8是图示根据至少一个实施例的用于实现云基础设施即服务系统的一种模式的框图。
图9是图示根据至少一个实施例的用于实现云基础设施即服务系统的另一种模式的框图。
图10是图示根据至少一个实施例的用于实现云基础设施即服务系统的另一种模式的框图。
图11是图示根据至少一个实施例的用于实现云基础设施即服务系统的另一种模式的框图。
图12是图示根据至少一个实施例的示例计算机系统的框图。
具体实施方式
在以下描述中,出于解释的目的,阐述了具体细节以便提供对某些实施例的透彻理解。但是,显然可以在没有这些具体细节的情况下实践各种实施例。附图和描述并非旨在进行限制。
本文描述的技术参考工作流即服务(WFaaS),其中工作流处理任务(也称为工作流实例)可以被分发给托管在分布式计算系统(例如,客户端/服务器环境、云计算环境等)内的一个或多个工作者(例如,客户端设备、工作者进程、工作者线程等)。但是,这些技术也可以应用于可以与一个或多个数据存储库进行事务处理以创建数据实体的其它计算应用。分布式计算系统可以包括任何合适数量的计算实例(例如,计算节点、虚拟机、虚拟化容器、主机或其它合适的物理或虚拟计算资源),其执行操作以执行工作流实例或工作流服务的其它操作。工作流实例可以与一个或多个数据实体的创建相关联。数据实体可以包括与工作流实例相关联的数据。在通过创建一个或多个数据实体启动工作流实例之后,工作者可以执行代码(例如,由工作流实例数据描述的客户编写的代码)。工作流实例的结果可以是更新工作流实例数据,这可以包括创建或修改一个或多个数据实体。
工作流实例可以通过请求(例如,客户请求)来启动。这样的请求对于分布式计算系统的(一个或多个)数据存储库的底层配置可能是不可知的。例如,客户请求可以包括启动工作流实例的信息,而不指定分布式计算系统要使用的特定数据存储库或数据库。请求可以包括键数据,其可以包括键值和范围。键数据可以是幂等的,使得键数据可以用于保证范围内的键的工作流实例的唯一性。换句话说,在一个时刻只能存在与键对应的一个工作流实例。
除了启动工作流实例之外,客户还可以请求WFaaS存储某种类型的不可变数据。不可变数据可以包括工作流定义。不可变数据可以与工作流实例相关联,并且一旦被创建,就不能被相关联的工作流实例或其它实例更新或删除。不可变数据可以由后续实例或数据存储库的其它事务使用,因此可以持续存在。工作流实例还可以与瞬态数据的创建相关联,瞬态数据可以包括与工作流实例的一个或多个任务对应的数据。瞬态数据还可以包括工作流实例的租用或分配数据(例如,历史分配)。可以在特定工作流实例的生命周期内创建和更新瞬态数据。在与瞬态数据相关联的工作流实例结束之后,任何其它工作流进程可能不再需要瞬态数据。作为垃圾收集或维护数据存储库的其它进程的一部分,可以调度在设定的时间段之后从数据存储库中删除瞬态数据。
与工作流实例相关联的数据可以保持在数据存储库、数据库或其它存储系统中。数据存储库可以是多种数据存储库(例如,关系数据库、键-值数据库、另一个NoSQL数据库、多模式数据库或其它数据库)中的任何数据存储库。数据存储库可以被配置为可插拔数据库(PDB),它们是较大数据存储库内的容器。在分布式计算系统中,租户和应用的数据存储需求的变化(例如,可扩展性需求、客户需要专用数据存储库、添加存储基础设施、存储负载平衡等)可能需要将数据从一个数据存储库迁移到另一个数据存储库。例如,上述数据可能保持在键-值数据库中。可能期望迁移到另一个目标数据库(例如,多模式数据库)。为了确保客户在迁移期间不会经历停机,计算环境可以合并附加逻辑来处置可能导致与初始数据存储库或目标数据存储库进行事务处理的客户请求。以这种方式,客户请求可以在迁移期间保持对分布式计算系统和所实现的数据存储库的状态不可知。换句话说,从客户的角度来看,客户请求在数据迁移发生之前、期间和之后都可以以相同的方式工作,从而不会造成停机。
继续上面的WFaaS示例,将WFaaS客户从一个数据存储库迁移到另一个数据存储库可以包括将数据的一部分从初始数据存储库复制到目标数据存储库。由于工作流瞬态数据可能仅在工作流实例的生命周期期间被该实例需要,因此迁移可能会在传输中省略该数据。也就是说,迁移可能仅将不可变数据从初始数据存储库复制到目标数据存储库。在相关联的工作流实例结束之后,在垃圾收集处理期间,在初始数据存储库中创建的瞬态数据可能最终从初始数据存储库中排空。
客户可以在整个迁移处理中请求启动新的工作流实例。如上所述,客户请求可能不知道分布式计算系统的数据存储库的配置。一旦来自初始数据存储库的不可变数据已经被复制到目标数据存储库,就可以发生转换以将目标数据存储库指定为新启动的工作流实例可以为其进行事务处理的主数据存储库。由于键数据可能不会在目标数据存储库处被复制,因此目标数据存储库处新启动的工作流实例可能包括当前不在目标数据存储库中但可能在初始数据存储库中的键。由于WFaaS强制工作流实例键(例如,单例键)的唯一性,因此工作流实例的启动逻辑可以使分布式计算系统检查初始数据存储库中是否存在该键。如果该键存储在初始数据存储库中,那么启动请求将产生冲突,因为初始数据存储库处已存在相同的工作流实例。然后分布式计算系统可以拒绝工作流实例启动请求。
大多数工作流实例可以具有相对短的生命周期,使得工作流实例将不会生存超过从初始数据存储库转换到目标数据存储库所需的时间。但是,一些工作流实例可能具有相对长的生命周期。在任一情况下,在初始数据存储库处启动的工作流实例可以具有在工作流实例的生命周期内与初始数据存储库进行事务处理的相关联进程。类似地,利用目标数据存储库启动的工作流实例可以具有在工作流实例的生命周期内与目标数据存储库进行事务处理的相关联进程。因此,在转换到目标数据存储库之后,托管工作流进程的分布式计算系统可以继续维护两个数据存储库,直到存储在初始数据存储库中的所有瞬态数据到达其生命周期结束。
在从初始数据存储库转换到目标数据存储库之前,客户可以请求分布式计算系统(例如,云服务、WFaaS等)创建新的不可变数据(例如,创建新的工作流定义)。如果初始数据存储库仍然是主数据存储库并接收启动的工作流实例,那么可以在初始数据存储库和目标数据存储库两者中创建新的不可变数据,以确保在两个数据存储库中都复制该新的不可变数据。
通过本文描述的技术实现了许多优点。提供零停机数据库迁移的传统方法是以高复杂性、低效的数据复制和手动协调为代价的。例如,实时数据复制需要将初始数据存储库中的所有数据复制到目标数据存储库,这将复制目标数据存储库中可能不需要的瞬态数据。此外,实时复制需要复制在迁移处理期间创建的数据,以便新数据在其被创建时跨两个存储库被实时“复制”。如果初始数据存储库和目标数据存储库是具有不同模式的不同类型(例如,键-值和多模式),那么实时复制方法变得非常复杂。作为另一个示例,强制执行两个数据存储库之间的键约束的分布式事务机制将极其复杂,并且需要附加的计算资源来管理事务主机。
相比之下,工作流启动逻辑保留键约束,同时允许在没有停机的情况下复制数据的一部分,从而为数据存储库迁移提供计算上和时间上高效的处理。通过仅复制不可变数据,可以最小化迁移转换时间,因为可以在开始转换之前复制不可变数据,并且初始数据存储库正常操作。此外,从一个数据存储库转换到另一个数据存储库期间的任何数据实时复制仅限于不可变数据而不是所有数据,并且仅在一部分迁移处理期间。由于创建不可变数据通常是不频繁的操作,因此复制在转换期间创建的不可变数据的计算费用会减少。
图1描绘了将数据从初始数据存储库112迁移到目标数据存储库114的示例处理101的简化框图100和相关联流程图。初始数据存储库112可以是多种不同类型的数据存储库、数据库或其它存储系统中的任何一种,包括但不限于,键-值数据库、NoSQL数据库、多模式数据库等。类似地,目标数据存储库114可以是任何相同类型的数据存储库或数据库。在一些实施例中,目标数据存储库114是与初始数据存储库112不同类型的数据存储库。例如,初始数据存储库112可以是键-值数据库,而目标数据存储库可以是多模式数据库。在一些其它实施例中,初始数据存储库112和目标数据存储库114可以是相同类型的数据库。根据某些实施例,初始数据存储库112和目标数据存储库114可以具有相同或不同的模式。
初始数据存储库112和目标数据存储库114可以在分布式计算系统(例如,云计算环境)中实现。分布式计算系统可以被配置为向一个或多个应用提供与初始数据存储库112、目标数据存储库114、或者一个或多个其它数据存储库进行事务处理的能力。分布式计算系统还可以被配置为作为多租户环境来为一个或多个客户托管和执行应用。在多租户环境中,一个或多个客户可以与在分布式计算系统内执行的应用的实例交互,该实例进而可以与包括初始数据存储库112和目标数据存储库114的一个或多个数据存储库进行事务处理。在一些实施例中,数据存储库中的一者或两者可以被实现为可插拔数据库。可插拔数据库可以是更大的虚拟或物理数据库内的虚拟数据库。在一些实施例中,使用分布式计算系统的每个客户可以针对每个应用具有其自己的可插拔数据库。例如,客户可以具有与其工作流数据相关联的数据库。在一些其它实施例中,一个或多个客户可以共享与应用相关联的一个或多个可插拔数据库。多租户环境内的隔离要求可以确定环境内数据存储库资源的共享程度。
现在转向处理101的流程图,将数据从初始数据存储库112迁移到目标数据存储库114可以被分成由处理101的框表示的阶段。这些阶段可以包括初始稳定阶段(在框102处)、迁移前(Pre-Migration)阶段(在框104处)、迁移阶段(在框106处)、迁移后(Post-Migration)阶段(在框108处)和稳定(结束)阶段(在框110处)。处理101可以根据以下来进行每个阶段:在当前阶段满足一个或多个先决条件,然后执行一个或多个动作以实现阶段转换。例如,先决条件可以是分布式计算系统内的所有主机节点认识到目标数据存储库114已被指定为应用的主数据存储库。
在框102处,实现初始数据存储库112。实现初始数据存储库112可以包括识别要执行数据迁移的现有数据存储库。初始数据存储库112可以被指定为主数据存储库。分布式计算系统可以将主数据存储库识别为分布式计算系统可以与之进行事务处理的数据存储库。初始数据存储库112还可以具有“打开”的初始存储状态。当初始数据存储库112为打开时,启动与初始数据存储库112相关联的实例(例如,创建数据实体、启动工作流实例等)的请求将成功,并且分布式计算系统可以与初始数据存储库112正常进行事务处理,如图100中的“事务”箭头所指示的。初始存储状态和作为主数据存储库的指定可以由存储在初始数据存储库112或与应用相关联的另一个数据存储库(例如,另一个WFaaS数据存储库)处的数据来表示。
从稳定阶段转换的条件可以包括分布式计算系统内的所有主机(例如,WFaaS服务器)认识到初始数据存储库112被指定为主数据存储库。从稳定阶段到迁移前阶段的转换可以包括实现目标数据存储库114的操作。
在框104处,目标数据存储库114可以在分布式计算系统内实现。在一些实施例中,目标数据存储库114可以是由分布式计算系统供应的新数据存储库或数据库。目标数据存储库114可以具有“打开”的目标存储状态。虽然目标存储状态为打开,但是启动实例(例如,启动工作流实例、创建数据实体)的请求将被路由到作为主数据存储库的初始数据存储库112。
用于从迁移前阶段转换到迁移阶段的条件可以包括目标数据存储库114已被正确供给、目标存储状态为“打开”、以及存储在初始数据存储库112处的数据的一部分已被复制到目标数据存储库114。为了迁移工作流数据,所复制的数据的一部分可以是初始数据存储库112处的所有不可变数据,而不复制瞬态数据或键数据。从迁移前阶段到迁移阶段的转换可以包括将初始存储状态设置为“关闭”的操作。该操作可以是与初始数据存储库112的用于更新存储在其中的初始存储状态的事务。
如上面简要提到的,在迁移前阶段期间,在复制数据的一部分之后或期间但在关闭初始数据存储库112之前,客户可以启动新实例。因为初始数据存储库112被指定为主数据存储库,因此这些新实例可以具有被配置为与初始数据存储库112进行事务处理的相关联进程,并且可以在初始数据存储库112处创建新数据,该新数据应当在目标数据存储库114处被复制但在复制数据的该部分时可能已被省略。为了确保迁移前阶段期间正确的数据复制,创建新数据的事务可以被配置为在初始数据存储库112和目标数据存储库114两者处创建该新数据(类似于新创建的数据的实时复制)。在本文例示的WFaaS系统内,新数据可以是新的不可变数据。
在框106处,通过将初始存储状态从打开改变为关闭来进入迁移阶段。当初始存储状态为关闭时,启动请求将从初始数据存储库112重新路由到目标数据存储库114。即使初始数据存储库112仍然被指定为主数据存储库,启动请求的这种重新路由也可能发生。先前启动的实例可能仍具有执行的和与初始数据存储库112进行事务处理的相关联进程。对于在目标数据存储库114处启动的工作流实例,一旦迁移处理到达迁移阶段,分布式计算系统就可以检查初始数据存储库处的键数据以核实键幂等性。这种检查可以确保不会同时启动具有相同键的多个工作流实例。
从迁移阶段转换到迁移后阶段的条件可以是所有主机(例如,WFaaS服务器)认识到主数据存储库(初始数据存储库112)的状态为“关闭”。由于该条件可能只需要来自计算环境内的主机的确认,因此迁移阶段花费的时间将相对较短(例如,大约几分钟)。从迁移阶段到迁移后阶段的转换可以包括将目标数据存储库114指定为主数据存储库。
在框108处,目标数据存储库114现在是分布式计算系统内启动的实例的主数据存储库。作为主数据存储库,新的启动请求将被路由到目标数据存储库114。与框106处的迁移阶段一样,先前启动的实例可能仍然具有执行的和与初始数据存储库112进行事务处理的相关联进程。
用于从迁移后阶段转换到稳定(结束)阶段的条件可以包括初始数据存储库112内的未被复制到目标数据存储库114的数据已经从初始数据存储库112排空。对于工作流数据,要排空的数据是在一段时间之后可以通过垃圾收集处理被移除的瞬态数据。进一步的条件可以是存储在初始数据存储库112中的所有键已经超出范围。由于来自初始数据存储库112的数据可以持续到实例及其执行的和与初始数据存储库112进行事务处理的相关联进程的生命周期结束,因此迁移后阶段可以持续相对较长的时间段(例如,几天)。到稳定(结束)阶段的转换可以是从分布式计算系统中移除(例如,取消供给)初始数据存储库112。
最后,在框110处,计算环境返回到稳定(结束)阶段中的稳定状态。目标数据存储库114可以是主数据存储库并且接收实例(例如,工作流实例、创建新数据实体等)的启动请求。稳定(结束)阶段是初始稳定阶段的镜像,其中目标数据存储库114取代初始数据存储库112。
如下面参考图5更详细描述的,迁移处理可以包括支持回滚数据迁移的功能。对于回滚操作,工作流实例的启动逻辑保持相同,从而为本文公开的技术提供了比常规迁移方法更多的灵活性和优点。从稳定(结束)阶段回滚迁移按照上面描述的前向迁移来进行。从迁移前阶段回滚包括移除目标数据存储库114。在一些实施例中,在迁移阶段期间可能不允许回滚,以避免冲突。从迁移后阶段回滚可以包括将在目标数据存储库114中创建的新数据复制到初始数据存储库112,然后如上所述进行,就好像系统处于前向迁移的迁移前状态一样,但是数据存储库的“初始”和“目标”属性被交换。
图2描绘了根据一些实施例的云计算环境200中的分布式计算系统210,其实现可以启动用于与数据存储库进行事务处理的进程的工作流服务。分布式计算系统210可以由执行计算机可读指令(例如,代码、程序)以实现分布式计算系统的一个或多个计算系统来实现。如图2中所示,分布式计算系统210包括各种系统,包括负载平衡器212、网关214(例如,多租户网关)、应用编程接口(API)服务器216、以及一个或多个执行环境222。由图2中所示的系统使用或生成的数据或信息的部分可以存储在数据存储装置256上。在一些实施例中,数据存储装置256可以包括本文描述的数据存储库中的一个或多个,包括例如图1的初始数据存储库112和目标数据存储库114。图2中描绘的系统可以使用由计算系统的一个或多个处理单元(例如,处理器、核)、硬件或其组合执行的软件(例如,代码、指令、程序)来实现。软件可以存储在非暂态存储介质上(例如,存储器设备上)。
分布式计算系统210可以以各种配置来实现。在图2中所示的实施例中,分布式计算系统210可以在云提供商网络的一个或多个服务器上实现。图2中描绘的包括分布式计算系统210的计算环境200仅仅是示例,并且不旨在不适当地限制所要求保护的实施例的范围。本领域普通技术人员将认识到许多可能的变化、替代和修改。例如,在一些实施方式中,分布式计算系统210可以使用比图2中所示的系统更多或更少的系统来实现、可以组合两个或更多个系统、或者可以具有不同的系统配置或布置。
在一些实施例中,执行环境(例如,执行环境222)可以表示用于执行工作流(例如,工作流实例、步骤实例等)的一些或全部任务的环境(例如,(一个或多个)“客户端”节点、(一个或多个)主机节点等)。不同的执行环境可以与租户(例如,客户)相关联。例如,在图2中所示的实施例中,执行环境222与分布式计算系统的租户220相关联。一种或多种不同的执行环境可以与附加租户相关联。执行环境可以被配置为利用任何合适数量的计算节点以协调的方式执行操作。“计算节点”(本文中也称为“节点”)可以包括服务器、计算设备、虚拟机、或被配置为执行操作的任何合适的物理或虚拟计算资源作为执行环境的一部分。
分配给分布式计算系统的租户的资源是从以分层方式布置的多个基于云的资源中选择的。例如,如图2中所示,资源可以是云基础设施服务240的池。云基础设施服务240可以包括元数据存储库242、工作流即服务(WFaaS)244、虚拟云网络(VCN)246、身份和访问管理(IAM)服务248、以及数据目录250。元数据存储库242可以被实现为键-值数据库即服务(KaaS)或其它合适的数据存储服务。
在某些实施例中,用户(例如,客户202)可以经由计算设备204与分布式计算系统210交互,计算设备204可能经由公共网络208(例如,互联网)通信地耦合到分布式计算系统210。计算设备204可以是各种类型,包括但不限于移动电话、平板电脑、台式计算机等。用户可以使用由计算设备执行的应用的控制台用户界面(UI)(其可以是图形用户界面)或经由分布式计算系统210提供的API操作与云计算系统交互。
作为示例,与分布式计算系统210的租户220相关联的用户可以通过向分布式计算系统210发送请求(例如,启动请求、启动实例请求等)以创建新的数据实体(例如,启动工作流实例)来与分布式计算系统210交互。作为响应,分布式计算系统210然后可以在执行环境222内执行一个或多个工作者224。启动请求可以由分布式计算系统210中的负载平衡器212接收,负载平衡器212可以将该请求发送到分布式计算系统内的多租户代理服务,例如网关214。网关214可以负责认证/授权用户的请求并将该请求路由到API服务器216,API服务器216可以被配置为执行操作以与一个或多个云服务(例如,元数据存储库242、WFaaS244)或执行环境222通信来执行请求。在某些示例中,网关214可以表示共享多租户超文本传输协议(HTTP)代理服务,其对用户进行授权并将用户的请求提交到API服务器216。
对于WFaaS过程,(一个或多个)工作者224可以执行与一个或多个工作流实例对应的一个或多个任务。(一个或多个)工作者224可以被配置为与数据存储装置256和元数据存储库242进行事务处理。元数据存储库242可以识别指定的主数据存储库。与工作流实例对应的一个或多个任务可以包括在数据存储装置256处创建一个或多个数据实体。与元数据存储库242的交互可以通过数据访问对象226来进行,数据访问对象226可以被配置为与分布式计算系统210内存在的数据存储库服务交互。图2不约束什么数据存储系统实现数据存储装置256。
启动请求可以包括键(key)。在一些实施例中,键可以是代理键以及代理范围。WFaaS244可以通过向客户返回全局唯一实例ID来响应启动请求。实例ID可以是瞬态数据的示例,而键是键数据的示例。当启动工作流实例时,实例ID和键可以被存储在数据存储库中,(一个或多个)工作者224被配置为与该数据存储库进行事务处理。
在一些实施例中,客户可以通过提交以与工作流实例相关联的实例ID或代理键为目标的查询来查询工作流实例。为了在迁移期间保护此功能,实例ID可以包括实例在启动时与之关联的数据存储库的引用或其它标识。然后,针对实例ID的查询将针对正在处置该实例的数据存储库。将数据存储库标识编码到实例ID中还可以允许相关程序功能(例如,API调用)在迁移期间成功地与工作流实例交互。对于代理键查询,WFaaS将同时针对初始数据存储库和目标数据存储库,并从具有实例(例如,实例瞬态数据)的数据存储库接收查询结果。
图3是根据实施例的用于数据迁移的示例初始数据存储库配置302和目标数据存储库配置304的简化图300。初始数据存储库配置302和目标数据存储库配置304都是针对执行工作流实例的多租户环境来实现的,其中每个租户与其自己的数据库相关联。如图3中所示,初始数据存储库配置302可以包括由数据库服务(KaaS)306提供的一个或多个键-值数据库。例如,租户数据库308-312可以是用于每个租户的工作流数据(例如,不可变数据、瞬态数据和键数据)的专用数据库(例如,可插拔数据库)。在这个示例中,数据库服务(KaaS)306用作元数据存储库314(例如,元数据存储库242)和数据存储装置(例如,数据存储装置256)双重角色。另外,初始数据存储库配置302可以包括被实现为键-值数据库的一个或多个附加数据存储库或数据库(例如,元数据存储库314)。元数据存储库314可以用于存储与工作流服务(例如,WFaaS,其可类似于图2的服务(WFaaS)244)的控制平面服务316相关联的数据。
工作流服务数据平面318可以表示由包括关于图2描述的执行环境222的分布式计算系统的一个或多个租户使用的WFaaS的数据平面服务。因此,工作流服务数据平面318可以包括与分布式计算系统的租户的工作流实例相关联的执行进程。工作流服务数据平面318可以经由初始数据访问对象(DAO)322与数据库服务(KaaS)306交互。初始DAO 322可以是为特定数据库服务配置的接口层,在这个示例中为KaaS 306。与本领域中典型的数据访问对象一样,初始DAO 322可以提供工作流数据平面318(例如,(一个或多个)工作者224)的执行进程与KaaS 306所采用的数据存储系统之间的抽象。在一些其它实施例中,初始数据存储库配置可以实现不同类型的数据库服务(例如,多模式),其可以使用不同的DAO来提供抽象层。
WFaaS还可以包括一个或多个后台作业320以帮助管理工作流实例的执行。这些后台作业320可以包括反熵引擎、延迟工作流执行进程、垃圾收集和服务健康监视。这些作业可以被配置为与初始数据存储库配置302中的一个或多个数据存储库进行事务处理。后台作业320可以使用与工作流服务数据平面318相同的初始DAO 322来与KaaS 306对接。
在数据迁移之后,目标数据存储库配置304可以包括与初始数据存储库配置302中的数据存储库不同的一个或多个数据存储库。如图3中所示,目标数据存储库配置304可以包括容器数据库324。容器数据库324可以包括一个或多个可插拔数据库,其包含租户的从初始数据存储库配置迁移的工作流数据平面数据。迁移之后的新配置可以包括为每个客户存储在单独数据存储库中的数据。在一些实施例中,租户可以具有其自己的数据存储库,例如租户数据库326和租户数据库328。分布式计算系统的其它租户可以具有用于其(一个或多个)租户数据存储库330的一个或多个可插拔数据库。
由于目标数据存储库配置304可以包括与初始数据存储库配置302不同的数据存储系统,因此在一些实施例中,工作流服务数据平面318可以实现被配置为与目标数据存储库配置304的数据存储系统对接的目标DAO 332。在针对迁移后配置实现的数据存储系统的类型相对于迁移前配置没有改变的实施例中,工作流服务所使用的DAO可以不改变。在一些实施例中,初始数据存储库配置302的数据存储库中的一个或多个数据存储库可以不被迁移。例如,用于工作流服务控制平面316数据的元数据存储库314可以在租户的迁移处理期间保持不变。元数据存储库314则可以是与目标数据存储库配置304中的其它数据存储库不同的类型(例如,键-值)。为了(经由KaaS 306)与元数据存储库对接,工作流服务数据平面318除了实现新的目标DAO 332之外还可以保留初始DAO 322。
图4是根据一些实施例的用于在数据从初始数据存储库迁移到目标数据存储库期间处置实例启动逻辑的示例处理的流程图。初始数据存储库可以是本文讨论的初始数据存储库之一,包括图1的初始数据存储库112。类似地,目标数据存储库可以是本文讨论的目标数据存储库之一,例如目标数据存储库114。处理400(以及处理600和700)被图示为逻辑流程图,其每个操作表示可以用硬件、计算机指令或其组合实现的操作序列。在计算机指令的上下文中,操作表示存储在一个或多个计算机可读存储介质上的计算机可执行指令,该计算机可执行指令在由一个或多个处理器执行时,执行所叙述的操作。一般而言,计算机可执行指令包括执行特定功能或实现特定数据类型的例程、程序、对象、部件、数据结构等。描述操作的顺序并不旨在被解释为限制,并且所描述的任何数量的操作可以被省略或者以任何顺序和/或并行组合来实现处理。
处理400所示的启动逻辑可以由分布式计算系统的负责读取和写入分布式计算系统内的数据存储库的进程来实现。读取和写入可以是为了启动工作流实例的目的。在一些实施例中,该处理可以是工作流服务的部件(例如,WFaaS244)。
在条目402处,用于在迁移期间启动实例的处理通过确定主数据存储库开始。取决于迁移处理的阶段,主数据存储库可以是初始数据存储库或目标数据存储库。例如,在关于图1描述的迁移前和迁移阶段期间,主数据存储库是初始数据存储库。在迁移后和稳定(结束)阶段期间,主数据存储库是目标数据存储库。处理400的启动逻辑不知道迁移阶段,使得其可以在两个数据存储库之间的迁移或回滚操作的任何阶段期间应用。未指定为主数据存储库的数据存储库可以被称为辅助数据存储库。主数据存储库的指定可以是存储在主数据存储库或分布式计算系统中实现的另一个数据存储库处的标志或其它数据。
在决策404处,检查在402处确定的主数据存储库以确定其存储状态。该检查可以是与主数据存储库的事务,用于读取可以存储在主数据存储库内的存储状态。在一些实施例中,不同的数据存储库可以包含主数据存储库和辅助数据存储库的存储状态,使得核实包括从不同的数据存储库读取存储状态数据的事务。如果主数据存储库为“打开”,那么启动请求被路由到主数据存储库。如果主数据存储库为“关闭”,那么启动请求被路由到辅助数据存储库。在启动实例之前,可以进行附加的检查来核实键数据幂等性,以及主数据存储库状态在处理启动请求所需的时间内没有改变。
在核实主数据存储库为打开后,在决策406处,为了确保工作流实例不违反工作流服务的单例键要求,分布式计算系统可以检查辅助数据存储库是否存在通过启动请求接收到的键。如果辅助数据存储库具有匹配的键,那么具有该键的实例已经在辅助数据存储库处启动。由于可能无法启动具有相同键的第二实例,因此该处理会因端点408处的冲突而中止。这种行为在没有发生迁移的稳定阶段期间是相同的;客户不能使用相同的键来启动第二实例。
如果辅助数据存储库不具有匹配的键,那么该处理可以移动到框410,在框410中启动实例,其中对应的任务将由执行环境中的执行进程(例如,(一个或多个)工作者224)执行并且被配置为与当前指定为主数据存储库的数据存储库进行事务处理,其中取决于迁移阶段,主数据存储库可以是初始数据存储库或目标数据存储库。
在迁移期间,主数据存储库可以使其存储状态从“打开”改变为“关闭”。因为存储状态的改变可以是与主数据库的事务,因此在实例完全启动之前(例如,在工作流实例被提交到主数据存储库之前),可以在主数据存储库处更新状态(并且提交该更新)。换句话说,执行启动请求和接收从一个迁移阶段到下一个迁移阶段的转换指令可以几乎同时发生,使得主数据存储库在实例启动之前关闭,并且其相关联的键数据被存储在对应的数据存储库中。在这种情况下,可能会接收具有相同键的第二启动请求、将其路由到辅助数据存储库(因为主数据存储库刚刚关闭),并且在辅助数据存储库处成功启动第二实例(因为来自第一启动请求的键尚未被提交到主数据存储库)。为了避免这种情况,在主数据存储库处提交启动之前,在决策412处发生第二核实以检查主数据存储库仍然“打开”。如果不是,那么该处理可以在端点414处异常中止。
如果主数据存储库仍然打开,那么可以在框416处提交启动事务。可以在决策418处执行最终检查以核实启动事务(例如,将实例元数据提交到主数据存储库)是否成功。如果是的话,那么该处理可以在端点420处报告成功并结束。如果启动提交不成功,那么该处理可以在端点408处中止。
返回到决策404,如果当接收到启动请求时主数据存储库为关闭,那么请求被路由到辅助数据存储库。框422、424、426、428和430分别与上面描述的对应框406、408、410、416和418所描述的操作类似,但是实例在辅助数据存储库处启动,使得与该实例对应的执行进程被配置为与辅助数据存储库进行事务处理。在决策422处,在主数据存储库处(例如,如果辅助数据存储库当前是目标数据存储库,那么主数据存储库为初始数据存储库)执行针对键数据的检查。因为迁移处理在将辅助数据存储库指定为新的主数据存储库之前将主数据存储库的状态从“打开”改变为“关闭”,因此可以不针对辅助数据存储库执行决策412的安全检查操作。
图5描绘了根据一些实施例的用于回滚从初始数据存储库到目标数据存储库的数据迁移的示例处理501的流程图500。初始数据存储库和目标数据存储库可以类似于图1的初始数据存储库112和目标数据存储库114。处理101可以与图1中描绘的处理相同,具有五个阶段用于迁移数据。回滚迁移可以包括复制在目标数据存储库中创建的新数据、关闭目标数据存储库、将初始数据存储库指定为主数据存储库、以及最终从分布式计算系统中移除目标数据存储库。一般而言,回滚操作是前面讨论的前向迁移操作的逆转。
在一些实施例中,除了迁移阶段之外,迁移处理的所有阶段都支持回滚操作。如上面简要指出的,从迁移前阶段(即,在初始数据存储库关闭之前)的回滚操作502可以包括移除(例如,取消供给)目标数据存储库,因为在目标数据存储库处没有创建新数据。从稳定(结束)阶段的回滚操作504可以是处理101的前向迁移的逆转,并且可以被视为单独的迁移而不是回滚。
对于从迁移后阶段的回滚处理501,目标数据存储库可以包含由分布式计算系统在迁移后阶段时(例如,响应于客户创建新的工作流定义)而创建的新数据(例如,新的不可变数据)。回滚类似于前向迁移进行,但具有相反的处理。
在框506处,通过将初始存储状态从“关闭”改变为“打开”来进入回滚前(Pre-RollBack)阶段。作为进入回滚前阶段的条件,目标数据存储库中的新数据(例如,新的不可变数据)的一部分被复制到初始数据存储库。
在框508处,通过关闭目标数据存储库来进入回滚阶段。关于图4描述的启动逻辑继续适用于在回滚前阶段、回滚阶段和回滚后(Post Roll Back)阶段中接收到的启动请求。转换到回滚后阶段的条件可以是所有主机(例如,WFaaS服务器)都认识到主数据存储库的状态为关闭。
在框510处,通过将初始数据存储库指定为主数据存储库来进入后回滚阶段。转换到稳定阶段的条件可以是所有主机(例如,WFaaS服务器)都认识到初始数据存储库已被指定为主数据存储库,并且数据(例如,瞬态数据、键数据)已从目标数据存储库中排空。一旦满足这些条件,就可以通过移除目标数据存储库来进入只有初始数据存储库的稳定阶段。
图6是根据一些实施例的在数据从初始数据存储库迁移到目标数据存储库期间创建数据实体(例如,启动工作流实例)的示例处理600的简化流程图。初始数据存储库和目标数据存储库可以类似于本文讨论的初始数据存储库和目标数据存储库(例如图1的初始数据存储库112和目标数据存储库114)中的任何数据存储库。
处理600可以在框602处开始,其中分布式计算系统实现初始数据存储库。实现初始数据存储库可以包括供给数据存储库。初始数据存储库可以被配置为存储与初始数据存储库的用户(例如,客户202)相关联的数据。用户可以是分布式计算系统的租户。初始数据存储库可以具有初始存储状态。初始存储状态可以为打开或关闭。在一些实施例中,与用户相关联的数据可以是不可变数据、瞬态数据和键数据。初始数据存储库可以被指定为主数据存储库。主数据存储库和初始存储状态的指定可以是存储在初始数据存储库处或与分布式计算系统相关联的另一个数据存储库处的数据值。
在框604处,分布式计算系统可以实现目标数据存储库。与初始数据存储库类似,可以从分布式计算环境可用的资源来供给目标数据存储库。目标数据存储库可以是与初始数据存储库相同类型的数据存储库(例如,相同的数据库类型)或者可以是不同的类型。目标数据存储库可以具有目标存储状态。与初始存储状态一样,目标存储状态可以为打开或关闭,并且可以是存储在目标数据存储库处或分布式计算环境内的另一个数据存储库处的数据值。
在框606处,可以针对存储在初始数据存储库中的数据的一部分开始数据迁移处理。迁移处理可以类似于关于图1描述的处理101。在一些实施例中,迁移处理将WFaaS系统的租户从与租户的工作流数据对应的初始数据存储库迁移到目标数据存储库。数据的该部分可以包括不可变的工作流数据,而未迁移的数据可以包括与一个或多个工作流实例相关联的瞬态数据和键数据。迁移数据的该部分可以包括将该部分从初始数据存储库复制到目标数据存储库。迁移数据的该部分可以继续,直到瞬态数据和键数据从初始数据存储库中排空为止。
在数据的该部分的迁移期间,分布式计算系统仍然可以处置实例的启动请求。可以根据本文描述的处理和迁移的阶段在初始数据存储库处或目标数据存储库处创建与实例相关联的数据实体。在框608处,分布式计算系统(例如,服务(WFaaS)244的调度进程)可以接收创建第一数据实体(例如,具有由(一个或多个)工作者224执行的任务的工作流实例等)的请求。该请求可以包括与第一数据实体相关联的元数据,包括键和键范围。分布式计算系统的一个或多个进程(例如,(一个或多个)工作者224)可以被配置为与初始数据存储库进行事务处理以创建第一数据实体。例如,分布式计算系统可以读取不可变数据(例如,工作流定义)以便执行工作流。
响应于该请求,在框610处,分布式计算系统可以确定初始数据存储库被指定为主数据存储库。在框612处,还可以确定与初始数据存储库相关联的初始存储状态。确定初始存储状态可以包括与初始数据存储库的用于读取与状态对应的数据值的事务。初始存储状态可以为“打开”或“关闭”。
在框614处,响应于初始存储状态的确定,分布式计算系统可以核实键不存在于目标数据存储库中。在框616处,分布式计算系统可以在初始数据存储库处创建第一数据实体。在初始数据存储库处创建第一数据实体可以包括写入、读取、更新和删除初始数据存储库内的数据。分布式计算系统还可以在将与第一数据实体相关联的数据提交到初始数据存储库之前中止第一数据实体的创建。
图7是根据一些实施例的在数据从初始数据存储库迁移到目标数据存储库期间创建第二数据实体(例如,启动第二工作流实例)的示例处理700的另一个简化流程图。与图6一样,初始数据存储库和目标数据存储库可以类似于本文讨论的其它初始数据存储库和目标数据存储库。处理700可以被认为是上面讨论的处理600的扩展。
该处理在数据从初始数据存储库迁移到目标数据存储库期间在框702处开始。目标数据存储库可以被指定为主数据存储库。在框704处,分布式计算系统可以接收创建第二数据实体的第二请求。第二请求可以包括与第二数据实体相关联的元数据,包括第二键和第二键范围。分布式计算系统的一个或多个进程(例如,(一个或多个)工作者224)可以被配置为与目标数据存储库进行事务处理以创建第二数据实体。例如,第二分布式计算系统可以读取不可变数据(例如,工作流定义)以便执行工作流。
在框706处,分布式计算系统可以响应于请求而确定目标数据存储库已被指定为主数据存储库(在框702中)。在框708处,还可以确定目标存储状态。目标存储状态可以为“打开”或“关闭”。响应于确定目标存储状态为打开,在框710处,分布式计算系统可以核实第二键不存在于初始数据存储库中。最后,在框712处,分布式计算系统可以在目标数据存储库处创建第二数据实体。在目标数据存储库处创建第二数据实体可以包括写入、读取、更新和删除目标数据存储库内的数据。分布式计算系统还可以在将与第二数据实体相关联的数据提交到目标数据存储库之前中止第二数据实体的创建。
基础设施即服务的示例体系架构
如上所述,基础设施即服务(IaaS)是一种特定类型的云计算。IaaS可以被配置为通过公共网络(例如,互联网)提供虚拟化计算资源。在IaaS模型中,云计算提供商可以托管基础设施组件(例如,服务器、存储设备、网络节点(例如,硬件)、部署软件、平台虚拟化(例如,管理程序层)等)。在一些情况下,IaaS提供商还可以提供各种服务来伴随这些基础设施组件(例如,计费、监视、日志记录、负载平衡和聚类等)。因此,由于这些服务可能是策略驱动的,因此IaaS用户可以能够实现策略来驱动负载平衡,以维持应用的可用性和性能。
在一些情况下,IaaS客户可以通过诸如互联网之类的广域网(WAN)访问资源和服务,并且可以使用云提供商的服务来安装应用堆栈的剩余元素。例如,用户可以登录到IaaS平台以创建虚拟机(VM)、在每个VM上安装操作系统(OS)、部署诸如数据库之类的中间件、为工作负载和备份创建存储桶、甚至将企业软件安装到该VM中。然后,客户可以使用提供商的服务来执行各种功能,包括平衡网络流量、解决应用问题、监视性能、管理灾难恢复等。
在大多数情况下,云计算模型将需要云提供商的参与。云提供商可以但不一定是专门提供(例如,供应、出租、销售)IaaS的第三方服务。实体也可能选择部署私有云,从而成为其自己的基础设施服务提供商。
在一些示例中,IaaS部署是将新应用或应用的新版本放置到准备好的应用服务器等上的处理。它还可以包括准备服务器(例如,安装库、守护进程等)的处理。这通常由云提供商管理,位于管理程序层(例如,服务器、存储装置、网络硬件和虚拟化)之下。因此,客户可以负责处理(OS)、中间件和/或(例如,在(例如可以按需启动的)自助服务虚拟机等上的)应用部署。
在一些示例中,IaaS供给可以指获取计算机或虚拟主机以供使用,甚至在它们上安装所需的库或服务。大多数情况下,部署不包括供给,并且供给可能需要被首先执行。
在一些情况下,IaaS供给存在两个不同的挑战。首先,在任何东西运行之前供给初始基础设施集合存在最初的挑战。其次,一旦所有东西已被供给,就存在演进现有基础设施(例如,添加新服务、更改服务、移除服务等)的挑战。在一些情况下,可以通过启用以声明方式定义基础设施的配置来解决这两个挑战。换句话说,基础设施(例如,需要哪些组件以及它们如何交互)可以由一个或多个配置文件来定义。因此,基础设施的总体拓扑(例如,哪些资源依赖于哪些资源,以及它们如何协同工作)可以以声明的方式描述。在一些情况下,一旦定义了拓扑,就可以生成创建和/或管理配置文件中描述的不同组件的工作流。
在一些示例中,基础设施可以具有许多互连的元素。例如,可能存在一个或多个虚拟私有云(VPC)(例如,可配置和/或共享计算资源的潜在按需池),也称为核心网络。在一些示例中,还可以供给一个或多个入站/出站业务组规则以定义将如何设置网络的入站/出站业务以及一个或多个虚拟机(VM)。也可以供给其它基础设施元素,诸如负载平衡器、数据库等。随着期望和/或添加越来越多的基础设施元素,基础设施可以逐步演进。
在一些情况下,可以采用连续部署技术来使得能够跨各种虚拟计算环境来部署基础设施代码。此外,所描述的技术可以使得能够在这些环境内进行基础设施管理。在一些示例中,服务团队可以编写期望部署到一个或多个但通常是许多不同的生产环境(例如,跨各种不同的地理位置,有时跨越整个世界)的代码。但是,在一些示例中,可能需要首先设置将在其上部署代码的基础设施。在一些情况下,供给可以手动完成,可以利用供给工具来供给资源,和/或一旦供给基础设施就可以利用部署工具来部署代码。
图8是图示根据至少一个实施例的IaaS体系架构的示例模式的框图800。服务运营商802可以通信地耦合到可以包括虚拟云网络(VCN)806和安全主机子网808的安全主机租赁804。在一些示例中,服务运营商802可以使用一个或多个客户端计算设备(客户端计算设备可以是便携式手持设备(例如,蜂窝电话、/>计算平板、个人数字助理(PDA))或可穿戴设备(例如,Google/>头戴式显示器)),运行软件(诸如MicrosoftWindows/>)和/或各种移动操作系统(诸如iOS、Windows Phone、Android、BlackBerry 8、Palm OS等),并且支持互联网、电子邮件、短消息服务(SMS)、或其它通信协议。可替代地,客户端计算设备可以是通用个人计算机,包括例如运行各种版本的Microsoft/>Apple/>和/或Linux操作系统的个人计算机和/或膝上型计算机。客户端计算设备可以是运行各种商业上可获得的或类UNIX操作系统(包括但不限于各种GNU/Linux操作系统(诸如例如GoogleChrome OS))中的任何操作系统的工作站计算机。替代地或附加地,客户端计算设备可以是任何其它电子设备,诸如瘦客户端计算机、支持互联网的游戏系统(例如,具有或不具有手势输入设备的Microsoft Xbox游戏控制台)、和/或能够通过可以访问VCN806和/或互联网的网络进行通信的个人消息传递设备。
VCN 806可以包括本地对等网关(LPG)810,该VCN 806可以经由包含在安全壳(SSH)VCN 812中的LPG 810通信地耦合到SSH VCN 812。SSH VCN 812可以包括SSH子网814,并且SSH VCN 812可以经由包含在控制平面VCN 816中的LPG 810通信地耦合到控制平面VCN 816。此外,SSH VCN 812可以经由LPG 810通信地耦合到数据平面VCN 818。控制平面VCN 816和数据平面VCN 818可以包含在可以由IaaS提供商拥有和/或操作的服务租赁819中。
控制平面VCN 816可以包括充当外围网络(例如,公司内部网络和外部网络之间的公司网络的部分)的控制平面非军事区(DMZ)层820。基于DMZ的服务器可以承担有限责任并有助于控制违规。此外,DMZ层820可以包括一个或多个负载平衡器(LB)子网822、可以包括(一个或多个)应用(app)子网826的控制平面应用层824、可以包括(一个或多个)数据库(DB)子网830(例如,(一个或多个)前端DB子网和/或(一个或多个)后端DB子网)的控制平面数据层828。包含在控制平面DMZ层820中的(一个或多个)LB子网822可以通信地耦合到包含在控制平面应用层824中的(一个或多个)应用子网826和可以包含在控制平面VCN 816中的互联网网关834,并且(一个或多个)应用子网826可以通信地耦合到包含在控制平面数据层828中的(一个或多个)DB子网830以及服务网关836和网络地址转换(NAT)网关838。控制平面VCN 816可以包括服务网关836和NAT网关838。
控制平面VCN 816可以包括数据平面镜像应用层840,其可以包括(一个或多个)应用子网826。包含在数据平面镜像应用层840中的(一个或多个)应用子网826可以包括可以执行计算实例844的虚拟网络接口控制器(VNIC)842。计算实例844可以将数据平面镜像应用层840的(一个或多个)应用子网826通信地耦合到可以包含在数据平面应用层846中的(一个或多个)应用子网826。
数据平面VCN 818可以包括数据平面应用层846、数据平面DMZ层848和数据平面数据层850。数据平面DMZ层848可以包括(一个或多个)LB子网822,其可以通信地耦合到数据平面应用层846的(一个或多个)应用子网826和数据平面VCN 818的互联网网关834。(一个或多个)应用子网826可以通信地耦合到数据平面VCN 818的服务网关836和数据平面VCN818的NAT网关838。数据平面数据层850还可以包括可以通信地耦合到数据平面应用层846的(一个或多个)应用子网826的(一个或多个)DB子网830。
控制平面VCN 816和数据平面VCN 818的互联网网关834可以通信地耦合到元数据管理服务852,该元数据管理服务852可以通信地耦合到公共互联网854。公共互联网854可以通信地耦合到控制平面VCN 816和数据平面VCN 818的NAT网关838。控制平面VCN 816和数据平面VCN 818的服务网关836可以通信地耦合到云服务856。
在一些示例中,控制平面VCN 816或数据平面VCN 818的服务网关836可以对云服务856进行应用编程接口(API)调用,而无需通过公共互联网854。从服务网关836到云服务856的API调用可以是单向的:服务网关836可以对云服务856进行API调用,并且云服务856可以将请求的数据发送到服务网关836。但是,云服务856可以不发起对服务网关836的API调用。
在一些示例中,安全主机租赁804可以直接连接到服务租赁819,服务租赁819否则可以被隔离。安全主机子网808可以通过LPG 810与SSH子网814通信,LPG 810可以使得能够在否则隔离的系统上进行双向通信。将安全主机子网808连接到SSH子网814可以使安全主机子网808访问服务租赁819内的其它实体。
控制平面VCN 816可以允许服务租赁819的用户设置或以其它方式供给期望资源。在控制平面VCN 816中供给的期望资源可以在数据平面VCN 818中部署或以其它方式使用。在一些示例中,控制平面VCN 816可以与数据平面VCN 818隔离,并且控制平面VCN 816的数据平面镜像应用层840可以经由VNIC 842与数据平面VCN 818的数据平面应用层846通信,VNIC 842可以包含在数据平面镜像应用层840和数据平面应用层846中。
在一些示例中,系统的用户或客户可以通过可以将请求传送到元数据管理服务852的公共互联网854来做出请求,例如创建、读取、更新或删除(CRUD)操作。元数据管理服务852可以通过互联网网关834将请求传送到控制平面VCN 816。请求可以由包含在控制平面DMZ层820中的(一个或多个)LB子网822接收。(一个或多个)LB子网822可以确定请求是有效的,并且响应于该确定,(一个或多个)LB子网822可以将请求传输到包含在控制平面应用层824中的(一个或多个)应用子网826。如果请求被验证并且需要对公共互联网854的调用,那么对公共互联网854的调用可以被传输到可以对公共互联网854进行调用的NAT网关838。请求可能期望存储的存储器可以存储在(一个或多个)DB子网830中。
在一些示例中,数据平面镜像应用层840可以促进控制平面VCN 816和数据平面VCN 818之间的直接通信。例如,可能期望对包含在数据平面VCN 818中的资源应用对配置的更改、更新或其它适当的修改。经由VNIC 842,控制平面VCN 816可以直接与包含在数据平面VCN 818中的资源通信,并且从而可以执行对这些资源的配置的更改、更新或其它适当的修改。
在一些实施例中,控制平面VCN 816和数据平面VCN 818可以包含在服务租赁819中。在这种情况下,系统的用户或客户可能不拥有或操作控制平面VCN 816或数据平面VCN818。替代地,IaaS提供商可以拥有或操作控制平面VCN 816和数据平面VCN 818,这两种平面都可以包含在服务租赁819中。该实施例可以使得能够隔离可能阻止用户或客户与其它用户或其它客户的资源进行交互的网络。此外,该实施例可以允许系统的用户或客户私自存储数据库,而无需依赖可能不具有期望的威胁防范级别的公共互联网854以进行存储。
在其它实施例中,包含在控制平面VCN 816中的(一个或多个)LB子网822可以被配置为从服务网关836接收信号。在这个实施例中,控制平面VCN 816和数据平面VCN 818可以被配置为由IaaS提供商的客户调用而无需调用公共互联网854。IaaS提供商的客户可能期望这个实施例,因为客户使用的(一个或多个)数据库可以由IaaS提供商控制并且可以存储在服务租赁819上,服务租赁819可能与公共互联网854隔离。
图9是图示根据至少一个实施例的IaaS体系架构的另一个示例模式的框图900。服务运营商902(例如,图8的服务运营商802)可以通信地耦合到安全主机租赁904(例如,图8的安全主机租赁804),该安全主机租赁904可以包括虚拟云网络(VCN)906(例如,图8的VCN806)和安全主机子网908(例如,图8的安全主机子网808)。VCN 906可以包括本地对等网关(LPG)910(例如,图8的LPG 810),该VCN 906可以经由包含在安全壳(SSH)VCN 912(例如,图8的SSH VCN 812)中的LPG 810通信地耦合到SSH VCN 912。SSH VCN 912可以包括SSH子网914(例如,图8的SSH子网814),并且SSH VCN 912可以经由包含在控制平面VCN 916(例如,图8的控制平面VCN 816)中的LPG 910通信地耦合到控制平面VCN 916。控制平面VCN 916可以包含在服务租赁916(例如,图8的服务租赁819)中,并且数据平面VCN 918(例如,图8的数据平面VCN 818)可以包含在可能由系统的用户或客户拥有或操作的客户租赁921中。
控制平面VCN 916可以包括控制平面DMZ层920(例如,图8的控制平面DMZ层820),其可以包括(一个或多个)LB子网922(例如,图8的(一个或多个)LB子网822)、可以包括(一个或多个)应用子网926(例如,图8的(一个或多个)应用子网826)的控制平面应用层924(例如,图8的控制平面应用层824)、可以包括(一个或多个)数据库(DB)子网930(例如,类似于图8的(一个或多个)DB子网830)的控制平面数据层928(例如,图8的控制平面数据层828)。包含在控制平面DMZ层920中的(一个或多个)LB子网922可以通信地耦合到包含在控制平面应用层924中的(一个或多个)应用子网926和可以包含在控制平面VCN 916中的互联网网关934(例如,图8的互联网网关834),并且(一个或多个)应用子网926可以通信地耦合到包含在控制平面数据层928中的(一个或多个)DB子网930以及服务网关936(例如,图8的服务网关)和网络地址转换(NAT)网关938(例如,图8的NAT网关838)。控制平面VCN 916可以包括服务网关936和NAT网关938。
控制平面VCN 916可以包括可以包括(一个或多个)应用子网926的数据平面镜像应用层940(例如,图8的数据平面镜像应用层840)。包含在数据平面镜像应用层940中的(一个或多个)应用子网926可以包括可以执行计算实例944(例如,类似于图8的计算实例844)的虚拟网络接口控制器(VNIC)942(例如,842的VNIC)。计算实例944可以促进数据平面镜像应用层940的(一个或多个)应用子网926和可以包含在数据平面应用层946(例如,图8的数据平面应用层846)中的(一个或多个)应用子网926之间的经由包含在数据平面镜像应用层940中的VNIC 942以及包含在数据平面应用层946中的VNIC 942的通信。
包含在控制平面VCN 916中的互联网网关934可以通信地耦合到元数据管理服务952(例如,图8的元数据管理服务852),该元数据管理服务952可以通信地耦合到公共互联网954(例如,图8的公共互联网854)。公共互联网954可以通信地耦合到包含在控制平面VCN916中的NAT网关938。包含在控制平面VCN 916中的服务网关936可以通信地耦合到云服务956(例如,图8的云服务856)。
在一些示例中,数据平面VCN 918可以包含在客户租赁921中。在这种情况下,IaaS提供商可以为每个客户提供控制平面VCN 916,并且IaaS提供商可以为每个客户设置包含在服务租赁919中的唯一计算实例944。每个计算实例944可以允许包含在服务租赁919中的控制平面VCN 916和包含在客户租赁921中的数据平面VCN 918之间的通信。计算实例944可以允许在包含在服务租赁919中的控制平面VCN 916中供给的资源被部署或以其它方式用于包含在客户租赁921中的数据平面VCN 918中。
在其它示例中,IaaS提供商的客户可以具有存在于客户租赁921中的数据库。在这个示例中,控制平面VCN 916可以包括数据平面镜像应用层940,该数据平面镜像应用层940可以包括(一个或多个)应用子网926。数据平面镜像应用层940可以驻留在数据平面VCN918中,但数据平面镜像应用层940可能不在数据平面VCN 918中。换句话说,数据平面镜像应用层940可以访问客户租赁921,但是数据平面镜像应用层940可能不存在于数据平面VCN918中或者由IaaS提供商的客户拥有或操作。数据平面镜像应用层940可以被配置为对数据平面VCN 918进行调用,但可以不被配置为对包含在控制平面VCN 916中的任何实体进行调用。客户可能期望在数据平面VCN 918中部署或以其它方式使用在控制平面VCN 916中供给的资源,并且数据平面镜像应用层940可以促进客户的期望部署或资源的其它使用。
在一些实施例中,IaaS提供商的客户可以将过滤器应用到数据平面VCN 918。在这个实施例中,客户可以确定数据平面VCN 918可以访问什么,并且客户可以限制从数据平面VCN 918对公共互联网954的访问。IaaS提供商可能无法应用过滤器或以其它方式控制数据平面VCN 918对任何外部网络或数据库的访问。客户将过滤器和控制应用到包含在客户租赁921中的数据平面VCN 918上可以帮助将数据平面VCN 918与其它客户和公共互联网954隔离开。
在一些实施例中,云服务956可以由服务网关936调用以访问公共互联网954、控制平面VCN 916或数据平面VCN 918上可能不存在的服务。云服务956与控制平面VCN 916或数据平面VCN 918之间的连接可以不是实时的或连续的。云服务956可以存在于由IaaS提供商拥有或操作的不同网络上。云服务956可以被配置为接收来自服务网关936的调用并且可以被配置为不接收来自公共互联网954的调用。一些云服务956可以与其它云服务956隔离,并且控制平面VCN 916可以与可能与控制平面VCN 916不在同一区域的云服务956隔离。例如,控制平面VCN 916可能位于“区域1”,并且云服务“部署8”可能位于区域1和“区域2”。如果包含在位于区域1中的控制平面VCN 916中的服务网关936对部署8进行调用,那么该调用可以被传输到区域1中的部署8。在这个示例中,控制平面VCN 916或区域1中的部署8可能不与区域2中的部署8通信地耦合或以其它方式通信。
图10是图示根据至少一个实施例的IaaS体系架构的另一个示例模式的框图1000。服务运营商1002(例如,图8的服务运营商802)可以通信地耦合到安全主机租赁1004(例如,图8的安全主机租赁804),该安全主机租赁1004可以包括虚拟云网络(VCN)1006(例如,图8的VCN 806)和安全主机子网1008(例如,图8的安全主机子网808)。VCN 1006可以包括LPG1010(例如,图8的LPG 810),该VCN 1006可以经由包含在SSH VCN 1012(例如,图8的SSHVCN 812)中的LPG 1010通信地耦合到SSH VCN 1012。SSH VCN 1012可以包括SSH子网1014(例如,图8的SSH子网814),并且SSH VCN 1012可以经由包含在控制平面VCN 1016(例如,图8的控制平面VCN 816)中的LPG 1010通信地耦合到控制平面VCN 1016并且经由包含在数据平面VCN 1018(例如,图8的数据平面818)中的LPG 1010通信地耦合到数据平面VCN 1018。控制平面VCN 1016和数据平面VCN 1018可以包含在服务租赁1019(例如,图8的服务租赁819)中。
控制平面VCN 1016可以包括可以包括(一个或多个)负载平衡器(LB)子网1022(例如,图8的(一个或多个)LB子网822)的控制平面DMZ层1020(例如,图8的控制平面DMZ层820)、可以包括(一个或多个)应用子网1026(例如,类似于图8的(一个或多个)应用子网826)的控制平面应用层1024(例如,图8的控制平面应用层824)、可以包括(一个或多个)DB子网1030的控制平面数据层1028(例如,图8的控制平面数据层828)。包含在控制平面DMZ层1020中的(一个或多个)LB子网1022可以通信地耦合到包含在控制平面应用层1024中的(一个或多个)应用子网1026和可以包含在控制平面VCN 1016中的互联网网关1034(例如,图8的互联网网关834),并且(一个或多个)应用子网1026可以通信地耦合到包含在控制平面数据层1028中的(一个或多个)DB子网1030以及服务网关1036(例如,图8的服务网关)和网络地址转换(NAT)网关1038(例如,图8的NAT网关838)。控制平面VCN 1016可以包括服务网关1036和NAT网关1038。
数据平面VCN 1018可以包括数据平面应用层1046(例如,图8的数据平面应用层846)、数据平面DMZ层1048(例如,图8的数据平面DMZ层848)、以及数据平面数据层1050(例如,图8的数据平面数据层850)。数据平面DMZ层1048可以包括可以通信地耦合到数据平面应用层1046的(一个或多个)可信应用子网1060和(一个或多个)不可信应用子网1062以及包含在数据平面VCN 1018中的互联网网关1034的(一个或多个)LB子网1022。(一个或多个)可信应用子网1060可以通信地耦合到包含在数据平面VCN 1018中的服务网关1036、包含在数据平面VCN 1018中的NAT网关1038、以及包含在数据平面数据层1050中的(一个或多个)DB子网1030。(一个或多个)不可信应用子网1062可以通信地耦合到包含在数据平面VCN1018中的服务网关1036和包含在数据平面数据层1050中的(一个或多个)DB子网1030。数据平面数据层1050可以包括可以通信地耦合到包含在数据平面VCN 1018中的服务网关1036的(一个或多个)DB子网1030。
(一个或多个)不可信应用子网1062可以包括可以通信地耦合到租户虚拟机(VM)1066(1)-(N)的一个或多个主VNIC 1064(1)-(N)。每个租户VM 1066(1)-(N)可以通信地耦合到可以包含在相应容器出口VCN 1068(1)-(N)中的相应应用子网1067(1)-(N),该相应容器出口VCN 1068(1)-(N)可以包含在相应客户租赁1070(1)-(N)中。相应辅VNIC 1072(1)-(N)可以促进包含在数据平面VCN 1018中的(一个或多个)不可信应用子网1062与包含在容器出口VCN 1068(1)-(N)中的应用子网之间的通信。每个容器出口VCN 1068(1)-(N)可以包括NAT网关1038,该NAT网关1038可以通信地耦合到公共互联网1054(例如,图8的公共互联网854)。
包含在控制平面VCN 1016中以及包含在数据平面VCN 1018中的互联网网关1034可以通信地耦合到元数据管理服务1052(例如,图8的元数据管理系统852),该元数据管理服务1052可以通信地耦合到公共互联网1054。公共互联网1054可以通信地耦合到包含在控制平面VCN 1016中以及包含在数据平面VCN 1018中的NAT网关1038。包含在控制平面VCN1016中以及包含在数据平面VCN 1018中的服务网关1036可以通信地耦合到云服务1056。
在一些实施例中,数据平面VCN 1018可以与客户租赁1070集成。在一些情况下,诸如在执行代码时可能期望支持的情况下,这种集成对于IaaS提供商的客户可能是有用的或期望的。客户可能提供可能具有破坏性、可能与其它客户资源通信或可能以其它方式导致非期望效果的代码来运行。作为对此的响应,IaaS提供商可以确定是否运行由客户给予IaaS提供商的代码。
在一些示例中,IaaS提供商的客户可以向IaaS提供商授予临时网络访问,并请求附加到数据平面层应用1046的功能。运行该功能的代码可以在VM 1066(1)-(N)中执行,并且该代码可以不被配置为在数据平面VCN 1018上的其它任何地方运行。每个VM 1066(1)-(N)可以连接到一个客户租赁1070。包含在VM 1066(1)-(N)中的相应容器1071(1)-(N)可以被配置为运行代码。在这种情况下,可以存在双重隔离(例如,容器1071(1)-(N)运行代码,其中容器1071(1)-(N)可能至少包含在(一个或多个)不可信应用子网1062中所包含的VM1066(1)-(N)中),这可以帮助防止不正确的或以其它方式非期望的代码损坏IaaS提供商的网络或损坏不同客户的网络。容器1071(1)-(N)可以通信地耦合到客户租赁1070并且可以被配置为传输或接收来自客户租赁1070的数据。容器1071(1)-(N)可以不被配置为从数据平面VCN 1018中的任何其它实体传输或接收数据。在运行代码完成后,IaaS提供商可以终止或以其它方式处置容器1071(1)-(N)。
在一些实施例中,(一个或多个)可信应用子网1060可以运行可以由IaaS提供商拥有或操作的代码。在这个实施例中,(一个或多个)可信应用子网1060可以通信地耦合到(一个或多个)DB子网1030并且被配置为在(一个或多个)DB子网1030中执行CRUD操作。(一个或多个)不可信应用子网1062可以通信地耦合到(一个或多个)DB子网1030,但是在这个实施例中,(一个或多个)不可信应用子网可以被配置为在(一个或多个)DB子网1030中执行读取操作。可以包含在每个客户的VM 1066(1)-(N)中并且可以运行来自客户的代码的容器1071(1)-(N)可以不与(一个或多个)DB子网1030通信地耦合。
在其它实施例中,控制平面VCN 1016和数据平面VCN 1018可以不直接通信地耦合。在这个实施例中,控制平面VCN 1016和数据平面VCN 1018之间可能不存在直接通信。但是,通信可以通过至少一个方法而间接地发生。LPG 1010可以由IaaS提供商建立,其可以促进控制平面VCN 1016和数据平面VCN 1018之间的通信。在另一个示例中,控制平面VCN1016或数据平面VCN 1018可以经由服务网关1036对云服务1056进行调用。例如,从控制平面VCN 1016对云服务1056的调用可以包括对可以与数据平面VCN 1018通信的服务的请求。
图11是图示根据至少一个实施例的IaaS体系架构的另一个示例模式的框图1100。服务运营商1102(例如,图8的服务运营商802)可以通信地耦合到安全主机租赁1104(例如,图8的安全主机租赁804),该安全主机租赁1104可以包括虚拟云网络(VCN)1106(例如,图8的VCN 806)和安全主机子网1108(例如,图8的安全主机子网808)。VCN 1106可以包括LPG1110(例如,图8的LPG 810),该VCN 1106可以经由包含在SSH VCN 1112(例如,图8的SSHVCN 812)中的LPG 1110通信地耦合到SSH VCN 1112。SSH VCN 1112可以包括SSH子网1114(例如,图8的SSH子网814),并且SSH VCN 1112可以经由包含在控制平面VCN 1116(例如,图8的控制平面VCN 816)中的LPG 1110通信地耦合到控制平面VCN 1116并且经由包含在数据平面VCN 1118(例如,图8的数据平面818)中的LPG 1110通信地耦合到数据平面VCN 1118。控制平面VCN 1116和数据平面VCN 1118可以包含在服务租赁1119(例如,图8的服务租赁819)中。
控制平面VCN 1116可以包括可以包括(一个或多个)LB子网1122(例如,图8的(一个或多个)LB子网822)的控制平面DMZ层1120(例如,图8的控制平面DMZ层820)、可以包括(一个或多个)应用子网1126(例如,图8的(一个或多个)应用子网826)的控制平面应用层1124(例如,图8的控制平面应用层824)、可以包括(一个或多个)DB子网1130(例如,图10的(一个或多个)DB子网1030)的控制平面数据层1128(例如,图8的控制平面数据层828)。包含在控制平面DMZ层1120中的(一个或多个)LB子网1122可以通信地耦合到包含在控制平面应用层1124中的(一个或多个)应用子网1126和可以包含在控制平面VCN 1116中的互联网网关1134(例如,图8的互联网网关834),并且(一个或多个)应用子网1126可以通信地耦合到包含在控制平面数据层1128中的(一个或多个)DB子网1130以及服务网关1136(例如,图8的服务网关)和网络地址转换(NAT)网关1138(例如,图8的NAT网关838)。控制平面VCN 1116可以包括服务网关1136和NAT网关1138。
数据平面VCN 1118可以包括数据平面应用层1146(例如,图8的数据平面应用层846)、数据平面DMZ层1148(例如,图8的数据平面DMZ层848)、以及数据平面数据层1150(例如,图8的数据平面数据层850)。数据平面DMZ层1148可以包括可以通信地耦合到数据平面应用层1146的(一个或多个)可信应用子网1160(例如,图10的(一个或多个)可信应用子网1060)和(一个或多个)不可信应用子网1162(例如,图10的(一个或多个)不可信应用子网1062)以及包含在数据平面VCN 1118中的互联网网关1134的(一个或多个)LB子网1122。(一个或多个)可信应用子网1160可以通信地耦合到包含在数据平面VCN 1118中的服务网关1136、包含在数据平面VCN 1118中的NAT网关1138以及包含在数据平面数据层1150中的(一个或多个)DB子网1130。(一个或多个)不可信应用子网1162可以通信地耦合到包含在数据平面VCN 1118中的服务网关1136和包含在数据平面数据层1150中的(一个或多个)DB子网1130。数据平面数据层1150可以包括可以通信地耦合到包含在数据平面VCN 1118中的服务网关1136的(一个或多个)DB子网1130。
(一个或多个)不可信应用子网1162可以包括可以通信地耦合到驻留在(一个或多个)不可信应用子网1162内的租户虚拟机(VM)1166(1)-(N)的主VNIC 1164(1)-(N)。每个租户VM 1166(1)-(N)可以运行相应容器1167(1)-(N)中的代码,并且可通信地耦合到可以包含在数据平面应用层1146中的应用子网1126,该数据平面应用层1146可以包含在容器出口VCN 1168中。相应辅VNIC 1172(1)-(N)可以促进包含在数据平面VCN 1118中的(一个或多个)不可信应用子网1162和包含在容器出口VCN 1168中的应用子网之间的通信。容器出口VCN可以包括可以通信地耦合到公共互联网1154(例如,图8的公共互联网854)的NAT网关1138。
包含在控制平面VCN 1116中以及包含在数据平面VCN 1118中的互联网网关1134可以通信地耦合到元数据管理服务1152(例如,图8的元数据管理系统852),该元数据管理服务1152可以通信地耦合到公共互联网1154。公共互联网1154可以通信地耦合到包含在控制平面VCN 1116中以及包含在数据平面VCN 1118中的NAT网关1138。包含在控制平面VCN1116中以及包含在数据平面VCN 1118中的服务网关1136可以通信地耦合到云服务1156。
在一些示例中,图11的框图1100的体系架构所示的模式可以被认为是图10的框图1000的体系架构所示的模式的例外,并且在IaaS提供商不能直接与客户通信(例如,断开连接的区域)的情况下,这种模式可能是IaaS提供商的客户所期望的。客户可以实时访问每个客户的包含在VM 1166(1)-(N)中的相应容器1167(1)-(N)。容器1167(1)-(N)可以被配置为对包含在数据平面应用层1146的(一个或多个)应用子网1126中的相应辅VNIC 1172(1)-(N)进行调用,该数据平面应用层1146可以包含在容器出口VCN 1168中。辅VNIC 1172(1)-(N)可以将调用传输到NAT网关1138,该NAT网关1138可以将调用传输到公共互联网1154。在这个示例中,可以由客户实时访问的容器1167(1)-(N)可以与控制平面VCN 1116隔离,并且可以与包含在数据平面VCN 1118中的其它实体隔离。容器1167(1)-(N)也可以与来自其它客户的资源隔离。
在其它示例中,客户可以使用容器1167(1)-(N)来调用云服务1156。在这个示例中,客户可以运行容器1167(1)-(N)中的从云服务1156请求服务的代码。容器1167(1)-(N)可以将该请求传输到辅VNIC 1172(1)-(N),该辅VNIC 1172(1)-(N)可以将请求传输到NAT网关,该NAT网关可以将请求传输到公共互联网1154。公共互联网1154可以经由互联网网关1134将请求传输到包含在控制平面VCN 1116中的(一个或多个)LB子网1122。响应于确定请求有效,(一个或多个)LB子网可以将请求传输到(一个或多个)应用子网1126,该(一个或多个)应用子网1126可以经由服务网关1136将请求传输到云服务1156。
应当认识到的是,各图中描绘的IaaS体系架构800、900、1000、1100可以具有除所描绘的组件之外的其它组件。另外,各图中所示的实施例仅仅是可以结合本公开的实施例的云基础设施系统的一些示例。在一些其它实施例中,IaaS系统可以具有比各图中所示更多或更少的组件、可以组合两个或更多个组件,或者可以具有不同的组件布置或配置。
在某些实施例中,本文描述的IaaS系统可以包括以自助服务、基于订阅、弹性可扩展、可靠、高度可用和安全的方式交付给客户的应用套件、中间件和数据库服务产品。此类IaaS系统的示例是本受让方提供的Oracle云基础设施(OCI)。
图12图示了其中可以实现本公开的各种实施例的示例计算机系统1200。系统1200可以用于实现上述任何计算机系统。如图所示,计算机系统1200包括经由总线子系统1202与多个外围子系统通信的处理单元1204。这些外围子系统可以包括处理加速单元1206、I/O子系统1208、存储子系统1218和通信子系统1224。存储子系统1218包括有形计算机可读存储介质1222和系统存储器1210。
总线子系统1202提供用于让计算机系统1200的各种部件和子系统按意图彼此通信的机制。虽然总线子系统1202被示意性地示出为单条总线,但是总线子系统的替代实施例可以利用多条总线。总线子系统1202可以是若干种类型的总线结构中的任何一种,包括存储器总线或存储器控制器、外围总线、以及使用任何各种总线体系架构的局部总线。例如,这种体系架构可以包括工业标准体系架构(ISA)总线、微通道体系架构(MCA)总线、增强型ISA(EISA)总线、视频电子标准协会(VESA)局部总线和外围部件互连(PCI)总线,其可以被实现为按IEEE P1386.1标准制造的Mezzanine总线。
可以被实现为一个或多个集成电路(例如,常规微处理器或微控制器)的处理单元1204控制计算机系统1200的操作。一个或多个处理器可以被包括在处理单元1204中。这些处理器可以包括单核或多核处理器。在某些实施例中,处理单元1204可以被实现为一个或多个独立的处理单元1232和/或1234,其中在每个处理单元中包括单核或多核处理器。在其它实施例中,处理单元1204也可以被实现为通过将两个双核处理器集成到单个芯片中形成的四核处理单元。
在各种实施例中,处理单元1204可以响应于程序代码执行各种程序并且可以维护多个并发执行的程序或进程。在任何给定的时间,要被执行的程序代码中的一些或全部代码可以驻留在(一个或多个)处理器1204中和/或存储子系统1218中。通过适当的编程,(一个或多个)处理器1204可以提供上述各种功能。计算机系统1200可以附加地包括处理加速单元1206,其可以包括数字信号处理器(DSP)、专用处理器,等等。
I/O子系统1208可以包括用户接口输入设备和用户接口输出设备。用户接口输入设备可以包括键盘、诸如鼠标或轨迹球的定点设备、结合到显示器中的触摸板或触摸屏、滚动轮、点击轮、拨盘、按钮、开关、键盘、具有语音命令识别系统的音频输入设备、麦克风以及其它类型的输入设备。用户接口输入设备可以包括例如运动感测和/或手势识别设备,诸如Microsoft运动传感器,其使得用户能够使用手势和语音命令通过自然用户接口来控制诸如/>360游戏控制器的输入设备并与之交互。用户接口输入设备也可以包括眼睛姿势识别设备,诸如从用户检测眼睛活动(例如,当拍摄照片和/或做出菜单选择时的“眨眼”)并且将眼睛姿势转换为去往输入设备(例如,Google/>)的输入的Google/>眨眼检测器。此外,用户接口输入设备可以包括使用户能够通过语音命令与语音识别系统(例如,/>导航器)交互的语音识别感测设备。
用户接口输入设备也可以包括但不限于三维(3D)鼠标、操纵杆或指向棒、游戏面板和绘图板、以及音频/视频设备,诸如扬声器、数码相机、数码摄录机、便携式媒体播放器、网络摄像头、图像扫描仪、指纹扫描仪、条形码阅读器3D扫描仪、3D打印机、激光测距仪和视线跟踪设备。此外,用户接口输入设备可以包括例如医学成像输入设备,诸如计算机断层扫描、磁共振成像、正电子发射断层摄影术、医疗超声设备。用户接口输入设备也可以包括例如音频输入设备,诸如MIDI键盘、数字乐器等。
用户接口输出设备可以包括显示子系统、指示灯,或者诸如音频输出设备的非可视显示器等。显示子系统可以是阴极射线管(CRT)、诸如使用液晶显示器(LCD)或等离子显示器的平板设备、投影设备、触摸屏等。一般而言,术语“输出设备”的使用意在包括用于从计算机系统1200向用户或其它计算机输出信息的所有可能类型的设备和机制。例如,用户接口输出设备可以包括但不限于可视地传达文本、图形和音频/视频信息的各种显示设备,诸如监视器、打印机、扬声器、耳机、汽车导航系统、绘图仪、语音输出设备、以及调制解调器。
计算机系统1200可以包括包含软件元件、被示为当前位于系统存储器1210内的存储子系统1218。系统存储器1210可以存储在处理单元1204上可执行且可加载的程序指令,以及在这些程序的执行期间所产生的数据。
取决于计算机系统1200的配置和类型,系统存储器1210可以是易失性的(诸如随机存取存储器(RAM))和/或非易失性的(诸如只读存储器(ROM)、闪存存储器等)。RAM通常包含可被处理单元1204立即访问和/或目前正被处理单元1204操作和执行的数据和/或程序模块。在一些实施方案中,系统存储器1210可以包括多种不同类型的存储器,诸如静态随机存取存储器(SRAM)或动态随机存取存储器(DRAM)。在一些实施方案中,包含有助于在诸如启动期间在计算机系统1200内的元件之间传送信息的基本例程的基本输入/输出系统(BIOS)通常可以被存储在ROM中。作为示例而非限制,系统存储器1210也示出了可以包括客户端应用、Web浏览器、中间层应用、关系数据库管理系统(RDBMS)等的应用程序1212、程序数据1214、以及操作系统1216。作为示例,操作系统1216可以包括各种版本的MicrosoftApple/>和/或Linux操作系统、各种可商业获得的/>或类UNIX操作系统(包括但不限于各种GNU/Linux操作系统、Google/>OS等)和/或诸如iOS、/>Phone、/>OS、/>12OS和/>OS操作系统的移动操作系统。
存储子系统1218也可以提供用于存储提供一些实施例的功能的基本编程和数据构造的有形计算机可读存储介质。当被处理器执行时提供上述功能的软件(程序、代码模块、指令)可以被存储在存储子系统1218中。这些软件模块或指令可以被处理单元1204执行。存储子系统1218也可以提供用于存储根据本公开使用的数据的储存库。
存储子系统1200也可以包括可被进一步连接到计算机可读存储介质1222的计算机可读存储介质读取器1220。与系统存储器1210一起,并且可选地与其相结合,计算机可读存储介质1222可以全面地表示用于临时和/或更持久地包含、存储、传输和检索计算机可读信息的远程、本地、固定和/或可移除的存储设备加存储介质。
包含代码或代码的部分的计算机可读存储介质1222也可以包括本领域已知或使用的任何适当的介质,包括存储介质和通信介质,诸如但不限于:以用于信息的存储和/或传输的任何方法或技术实现的易失性和非易失性、可移除和不可移除的介质。这可以包括有形的计算机可读存储介质,诸如RAM、ROM、电可擦除可编程ROM(EEPROM)、闪存存储器或其它存储器技术、CD-ROM、数字多功能盘(DVD)或其它光学存储装置、磁带盒、磁带、磁盘存储装置或其它磁存储设备,或者其它有形的计算机可读介质。这也可以包括非有形的计算机可读介质,诸如数据信号、数据传输、或者可以用于传输期望信息并且可以被计算系统1200访问的任何其它介质。
举例来说,计算机可读存储介质1222可以包括从不可移除的非易失性磁介质读取或写到其的硬盘驱动器、从可移除的非易失性磁盘读取或写到其的磁盘驱动器、以及从可移除的非易失性光盘(诸如CD ROM、DVD和盘或其它光学介质)读取或写到其的光盘驱动器。计算机可读存储介质1222可以包括但不限于:/>驱动器、闪存卡、通用串行总线(USB)闪存驱动器、安全数字(SD)卡、DVD盘、数字视频带等。计算机可读存储介质1222也可以包括基于非易失性存储器的固态驱动器(SSD)(诸如基于闪存存储器的SSD、企业闪存驱动器、固态ROM等)、基于易失性存储器的SSD(诸如基于固态RAM、动态RAM、静态RAM、DRAM的SSD)、磁阻RAM(MRAM)SSD、以及使用基于DRAM的SSD和基于闪存存储器的SSD的组合的混合SSD。盘驱动器及其关联的计算机可读介质可以为计算机系统1200提供计算机可读指令、数据结构、程序模块及其它数据的非易失性存储。
通信子系统1224提供到其它计算机系统和网络的接口。通信子系统1224用作用于从其它系统接收数据和从计算机系统1200向其它系统传输数据的接口。例如,通信子系统1224可以使计算机系统1200能够经由互联网连接到一个或多个设备。在一些实施例中,通信子系统1224可以包括用于访问无线语音和/或数据网络的射频(RF)收发器部件(例如,使用蜂窝电话技术、诸如3G、4G或EDGE(用于全球演进的增强型数据速率)的先进数据网络技术、WiFi(IEEE 802.11系列标准)、或其它移动通信技术、或其任何组合)、全球定位系统(GPS)接收器部件和/或其它部件。在一些实施例中,通信子系统1224可以提供有线网络连接(例如,以太网),作为无线接口的附加或者替代。
在一些实施例中,通信子系统1224也可以代表可以使用计算机系统1200的一个或多个用户接收结构化和/或非结构化的数据馈送1226、事件流1228、事件更新1230等形式的输入通信。
举例来说,通信子系统1224可以被配置为实时地从社交网络和/或其它通信服务的用户接收数据馈送1226,诸如馈送、/>更新、诸如丰富站点摘要(RSS)馈送的web馈送和/或来自一个或多个第三方信息源的实时更新。
此外,通信子系统1224也可以被配置为接收连续数据流形式的数据,这可以包括本质上可以是连续的或无界的没有明确终止的实时事件的事件流1228和/或事件更新1230。生成连续数据的应用的示例可以包括例如传感器数据应用、金融报价机、网络性能测量工具(例如,网络监视和流量管理应用)、点击流分析工具、汽车流量监视等。
通信子系统1224也可以被配置为向一个或多个数据库输出结构化和/或非结构化的数据馈送1226、事件流1228、事件更新1230等,该一个或多个数据库可以与耦合到计算机系统1200的一个或多个流式传输数据源计算机进行通信。
计算机系统1200可以是各种类型之一,包括手持便携式设备(例如,蜂窝电话、/>计算平板电脑、PDA)、可穿戴设备(例如,Google/>头戴式显示器)、PC、工作站、大型机、信息站、服务器机架、或任何其它数据处理系统。
由于计算机和网络的不断变化的本质,在图中绘出的计算机系统1200的描述仅仅要作为具体的示例。具有比图中绘出的系统更多或更少部件的许多其它配置是可能的。例如,定制的硬件也可以被使用和/或特定的元素可以用硬件、固件、软件(包括applets)或其组合来实现。另外,也可以采用到诸如网络输入/输出设备之类的其它计算设备的连接。基于本文提供的公开内容和教导,本领域普通技术人员将认识到实现各种实施例的其它方式和/或方法。
虽然已经描述了具体实施例,但是各种修改、变更、替代构造和等效形式也包含在本公开的范围内。实施例不限于在某些特定数据处理环境内操作,而是可以在多个数据处理环境内自由操作。此外,虽然已经使用特定系列的事务和步骤描述了实施例,但是本领域技术人员应该清楚本公开的范围不限于所描述系列的事务和步骤。上述实施例的各种特征和方面可以单独或联合使用。
另外,虽然已经使用硬件和软件的特定组合描述了实施例,但是应当认识到硬件和软件的其它组合也在本公开的范围内。实施例可以仅用硬件、或仅用软件、或使用它们的组合来实现。本文描述的各种处理可以以任何组合在相同的处理器或在不同的处理器上实现。因而,在组件或模块被描述为被配置为执行某些操作的情况下,可以通过例如设计电子电路来执行操作、通过对可编程电子电路(诸如微处理器)进行编程来执行操作、或通过其任何组合来完成这样的配置。处理可以使用多种技术进行通信,包括但不限于用于进程间通信的常规技术,并且不同的进程对可以使用不同的技术,或者同一进程对可以在不同时间使用不同的技术。
因而,说明书和附图被认为是说明性的而不是限制性的意义。但是,在不脱离权利要求中阐述的更广泛的精神和范围的情况下,显然可以对其进行添加、减少、删除和其它修改和改变。因此,虽然已经描述了具体的公开实施例,但这些并不旨在进行限制。各种修改和等效形式都在以下权利要求的范围内。
在描述所公开的实施例的上下文中(尤其在以下权利要求的上下文中)使用术语“一”和“一个”和“该”以及类似的指称应被解释为涵盖单数和复数两者,除非本文另有指示或与上下文明显矛盾。除非另有说明,否则术语“包括”、“具有”、“包含”和“含有”应被解释为开放式术语(即,意思是“包括但不限于”)。术语“连接”应被解释为部分或全部包含在内、附接到或连接在一起,即使中间存在一些东西。除非本文另有指示,否则本文中的值范围的描述仅旨在用作单独引用落入该范围内的每个单独值的简略方法,并且每个单独值被并入说明书中,就好像它在本文中单独描述一样。除非本文另有指示或与上下文明显矛盾,否则本文描述的所有方法都可以以任何合适的顺序执行。除非另有声明,否则本文提供的任何和全部示例或示例性语言(例如,“诸如”)的使用仅旨在更好地阐明实施例并且不对本公开的范围构成限制。说明书中的任何语言都不应被解释为指示任何未要求保护的元素对于本公开的实践是必不可少的。
除非另有明确说明,否则析取(disjunctive)语言(诸如短语“X、Y或Z中的至少一个”)旨在在上下文中被理解为用作一般地表示项目、术语等可以是X、Y或Z中的一者或者是它们的任何组合(例如,X、Y和/或Z)。因此,这种析取语言通常不旨在也不应暗示某些实施例需要X中的至少一个、Y中的至少一个或Z中的至少一个各自存在。
本文描述了本公开的优选实施例,包括已知用于实施本公开的最佳模式。这些优选实施例的变型对于本领域普通技术人员在阅读前述描述后会变得显而易见。普通技术人员应该能够适当地采用这样的变型并且可以以不同于本文具体描述的方式来实践本公开。因而,本公开包括在适用法律允许的情况下对所附权利要求中记载的主题的所有修改和等效形式。此外,除非在本文中另有指示,否则本公开包括上述元素在其所有可能的变型中的任何组合。
本文引用的所有参考文献(包括出版物、专利申请和专利)均以相同的程度通过引用并入本文,就好像指示每个参考文献单独且具体地通过引用并入并且在本文中全文阐述一样。
在前述的说明书中,本公开的各方面参考其具体实施例进行了描述,但本领域技术人员将认识到的是,本公开不限于此。上述公开的各个特征和方面可以被单独或联合使用。此外,在不脱离本说明书的更广泛精神和范围的情况下,实施例可以在除本文所述的环境和应用之外的任何数量的环境和应用中被使用。因而,本说明书和附图应当被认为是说明性而不是限制性的。各种修改和等同形式包括实施例中公开的特征的相关的、适当的组合。
Claims (20)
1.一种方法,包括:
由分布式计算系统实现初始数据存储库,初始数据存储库被配置为存储与初始数据存储库的用户相关联的数据,初始数据存储库具有初始存储状态并且被指定为主数据存储库;
由分布式计算系统实现具有目标存储状态的目标数据存储库;
由分布式计算系统将在初始数据存储库处存储的与用户相关联的数据的一部分迁移到目标数据存储库;以及
在迁移数据的该部分期间:
由分布式计算系统接收创建第一数据实体的请求,所述请求与键相关联;
由分布式计算系统响应于所述请求,确定初始数据存储库被指定为主数据存储库;
由分布式计算系统确定与初始数据存储库相关联的初始存储状态;
由分布式计算系统响应于初始存储状态的确定,核实所述键不存在于目标数据存储库中;以及
由分布式计算系统在初始数据存储库处创建第一数据实体,其中创建第一数据实体包括将第一数据实体提交到初始数据存储库。
2.如权利要求1所述的方法,还包括:
由分布式计算系统指定目标数据存储库为主数据存储库;
由分布式计算系统接收创建第二数据实体的第二请求,第二请求与第二键相关联;
由分布式计算系统响应于第二请求,确定目标数据存储库被指定为主数据存储库;
由分布式计算系统确定与目标数据存储库相关联的目标存储状态;
由分布式计算系统响应于目标存储状态的确定,核实第二键不存在于初始数据存储库中;以及
由分布式计算系统在目标数据存储库处创建第二数据实体,其中创建第二数据实体包括将第二数据实体提交到目标数据存储库。
3.如权利要求2所述的方法,其中第二数据实体包括目标数据存储库中的新的不可变数据,并且该方法还包括:
由分布式计算系统指定初始数据存储库为主数据存储库;
由分布式计算系统将存储在目标数据存储库处的数据的附加部分传输到初始数据存储库;
在传输数据的附加部分期间:
由分布式计算系统接收创建第三数据实体的第三请求,第三请求与第三键相关联;
由分布式计算系统响应于第三请求,确定初始数据存储库被指定为主数据存储库;
由分布式计算系统确定与初始数据存储库相关联的初始存储状态;
由分布式计算系统响应于初始存储状态的确定,核实第三键不存在于目标数据存储库中;以及
由分布式计算系统在初始数据存储库处创建第三数据实体,其中创建第三数据实体包括将第三数据实体提交到初始数据存储库。
4.如前述权利要求中的任一项所述的方法,其中初始存储状态可以为打开或关闭,并且其中目标存储状态可以为打开或关闭。
5.如前述权利要求中的任一项所述的方法,其中所述数据包括不可变数据、瞬态数据和键数据。
6.如权利要求5所述的方法,其中迁移数据的所述部分包括将不可变数据从初始数据存储库复制到目标数据存储库。
7.如前述权利要求中的任一项所述的方法,还包括:
由分布式计算系统在将第一数据实体提交到初始数据存储库之前确定初始存储状态;以及
由分布式计算系统将第一数据实体提交到初始数据存储库。
8.一种分布式计算系统,包括:
一个或多个处理器;以及
存储计算机可执行指令的一个或多个存储器,所述指令在用一个或多个处理器执行时,使得分布式计算系统:
实现初始数据存储库,初始数据存储库被配置为存储与初始数据存储库的用户相关联的数据,初始数据存储库具有初始存储状态并且被指定为主数据存储库;
实现具有目标存储状态的目标数据存储库;
将存储在初始数据存储库处的与用户相关联的数据的一部分迁移到目标数据存储库;以及
在迁移数据的该部分期间:
接收创建第一数据实体的请求,所述请求与键相关联;
响应于所述请求,确定初始数据存储库被指定为主数据存储库;
确定与初始数据存储库相关联的初始存储状态;
响应于初始存储状态的确定,核实所述键不存在于目标数据存储库中;以及
在初始数据存储库处创建第一数据实体,其中创建第一数据实体包括将第一数据实体提交到初始数据存储库。
9.如权利要求8所述的分布式计算系统,其中执行所述计算机可执行指令还使得分布式计算系统:
将目标数据存储库指定为主数据存储库;
接收创建第二数据实体的第二请求,第二请求与第二键相关联;
响应于第二请求,确定目标数据存储库被指定为主数据存储库;
确定与目标数据存储库相关联的目标存储状态;
响应于目标存储状态的确定,核实第二键不存在于初始数据存储库中;以及
在目标数据存储库处创建第二数据实体,其中创建第二数据实体包括将第二数据实体提交到目标数据存储库。
10.如权利要求9所述的分布式计算系统,其中第二数据实体包括新的不可变数据,并且其中执行所述计算机可执行指令还使得分布式计算系统:
将初始数据存储库指定为主数据存储库;
将存储在目标数据存储库处的数据的附加部分传输到初始数据存储库;
在传输数据的附加部分期间:
接收创建第三数据实体的第三请求,第三请求与第三键相关联;
响应于第三请求,确定初始数据存储库被指定为主数据存储库;
确定与初始数据存储库相关联的初始存储状态;
响应于初始存储状态的确定,核实第三键不存在于目标数据存储库中;以及
在初始数据存储库处创建第三数据实体,其中创建第三数据实体包括将第三数据实体提交到初始数据存储库。
11.如前述权利要求中的任一项所述的分布式计算系统,其中初始存储状态可以为打开或关闭,并且其中目标存储状态可以为打开或关闭。
12.如前述权利要求中的任一项所述的分布式计算系统,其中所述数据包括不可变数据、瞬态数据和键数据。
13.如权利要求12所述的分布式计算系统,其中迁移数据的所述部分包括将不可变数据从初始数据存储库复制到目标数据存储库。
14.如前述权利要求中的任一项所述的分布式计算系统,其中执行所述计算机可执行指令还使得分布式计算系统:
在将第一数据实体提交到初始数据存储库之前确定初始存储状态;以及
将第一数据实体提交到初始数据存储库。
15.一种存储计算机可执行指令的非暂态计算机可读介质,所述指令在由一个或多个处理器执行时,使得分布式计算系统至少:
实现初始数据存储库,初始数据存储库被配置为存储与初始数据存储库的用户相关联的数据,初始数据存储库具有初始存储状态并且被指定为主数据存储库;
实现具有目标存储状态的目标数据存储库;
将存储在初始数据存储库处的与用户相关联的数据的一部分迁移到目标数据存储库;以及
在迁移数据的该部分期间:
接收创建第一数据实体的请求,所述请求与键相关联;
响应于所述请求,确定初始数据存储库被指定为主数据存储库;
确定与初始数据存储库相关联的初始存储状态;
响应于初始存储状态的确定,核实所述键不存在于目标数据存储库中;以及
在初始数据存储库处创建第一数据实体,其中创建第一数据实体包括将第一数据实体提交到初始数据存储库。
16.如权利要求15所述的非暂态计算机可读介质,其中执行所述计算机可执行指令还使得分布式计算系统:
将目标数据存储库指定为主数据存储库;
接收创建第二数据实体的第二请求,第二请求与第二键相关联;
响应于第二请求,确定目标数据存储库被指定为主数据存储库;
确定与目标数据存储库相关联的目标存储状态;
响应于目标存储状态的确定,核实第二键不存在于初始数据存储库中;以及
在目标数据存储库处创建第二数据实体,其中创建第二数据实体包括将第二数据实体提交到目标数据存储库。
17.如权利要求16所述的非暂态计算机可读介质,其中第二数据实体包括新的不可变数据,并且其中执行所述计算机可执行指令还使得分布式计算系统:
将存储在目标数据存储库处的数据的附加部分传输到初始数据存储库;
在传输数据的附加部分期间:
接收创建第三数据实体的第三请求,第三请求与第三键相关联;
响应于第三请求,确定初始数据存储库被指定为主数据存储库;
确定与初始数据存储库相关联的初始存储状态;
响应于初始存储状态的确定,核实第三键不存在于目标数据存储库中;以及
在初始数据存储库处创建第三数据实体,其中创建第三数据实体包括将第三数据实体提交到初始数据存储库。
18.如前述权利要求中的任一项所述的非暂态计算机可读介质,其中初始存储状态可以为打开或关闭,并且其中目标存储状态可以为打开或关闭。
19.如前述权利要求中的任一项所述的非暂态计算机可读介质,其中所述数据包括不可变数据、瞬态数据和键数据。
20.如权利要求15所述的非暂态计算机可读介质,其中执行所述计算机可执行指令还使得分布式计算系统:
在将第一数据实体提交到初始数据存储库之前确定初始存储状态;以及
将第一数据实体提交到初始数据存储库。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/357,578 | 2021-06-24 | ||
US17/357,578 US20220414069A1 (en) | 2021-06-24 | 2021-06-24 | Techniques for safe database migration with no downtime |
PCT/US2022/032367 WO2022271437A1 (en) | 2021-06-24 | 2022-06-06 | Techniques for safe database migration with no downtime |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117769703A true CN117769703A (zh) | 2024-03-26 |
Family
ID=82404467
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202280053430.2A Pending CN117769703A (zh) | 2021-06-24 | 2022-06-06 | 无停机安全数据库迁移技术 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20220414069A1 (zh) |
EP (1) | EP4359945A1 (zh) |
CN (1) | CN117769703A (zh) |
WO (1) | WO2022271437A1 (zh) |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7266702B2 (en) * | 2002-10-21 | 2007-09-04 | Solid Information Technology Oy | Method and system for managing security material and services in a distributed database system |
US10671308B2 (en) * | 2018-08-07 | 2020-06-02 | International Business Machines Corporation | Private and fault-tolerant storage of segmented data |
EP3686751A1 (en) * | 2019-01-25 | 2020-07-29 | King.com Limited | Method and system for data handling |
WO2020177850A1 (en) * | 2019-03-04 | 2020-09-10 | Huawei Technologies Co., Ltd. | Database updates |
US11055010B2 (en) * | 2019-09-05 | 2021-07-06 | Microsoft Technology Licensing, Llc | Data partition migration via metadata transfer and access attribute change |
US11372827B2 (en) * | 2020-05-06 | 2022-06-28 | Amazon Technologies, Inc. | Record-by-record live migration using a lock store |
US11522975B2 (en) * | 2020-10-09 | 2022-12-06 | Sap Se | Double persistence layer using an in-memory map |
US20220382742A1 (en) * | 2021-05-28 | 2022-12-01 | Salesforce.Com, Inc. | Ensuring high availablity of replicated database management systems during upgrades |
-
2021
- 2021-06-24 US US17/357,578 patent/US20220414069A1/en active Pending
-
2022
- 2022-06-06 EP EP22738124.1A patent/EP4359945A1/en active Pending
- 2022-06-06 WO PCT/US2022/032367 patent/WO2022271437A1/en active Application Filing
- 2022-06-06 CN CN202280053430.2A patent/CN117769703A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
WO2022271437A1 (en) | 2022-12-29 |
US20220414069A1 (en) | 2022-12-29 |
EP4359945A1 (en) | 2024-05-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11537633B2 (en) | Asynchronous cross-region block volume replication | |
US20220191248A1 (en) | Techniques for generating network security policies for application components deployed in a computing environment | |
US11816470B2 (en) | Impact driven continuous deployment system | |
US20220342718A1 (en) | Techniques for consistent multi-tenant behavior in microservices based applications | |
US11785082B2 (en) | Domain replication across regions | |
US20230004404A1 (en) | Techniques for modifying a compute instance | |
US20220413903A1 (en) | Framework for migrating applications across public and private clouds | |
CN117321581A (zh) | 用于加速sql查询的确定性分布式高速缓存的技术 | |
US20240045771A1 (en) | Techniques for scalable distributed system backups | |
US10055448B2 (en) | Techniques to reduce contention windows | |
US11681666B2 (en) | “Bouncing” IO pattern for replication protocols | |
US20230055129A1 (en) | Techniques for utilizing patterns and logical entities | |
US11556557B2 (en) | Techniques for unifying ETL filter operators | |
US20220414069A1 (en) | Techniques for safe database migration with no downtime | |
US11966754B2 (en) | Cluster bootstrapping for distributed computing systems | |
US11777818B1 (en) | Drift resolver for enterprise applications | |
US12001453B2 (en) | Asynchronous cross-region block volume replication | |
US11366830B1 (en) | Techniques for live repartitioning of cross-service database shards | |
US20230126922A1 (en) | Host container mounting | |
US12001447B2 (en) | Techniques for unifying ETL filter operators | |
US11899680B2 (en) | Techniques for metadata value-based mapping during data load in data integration job | |
US20240005200A1 (en) | Generation of inference logic from training-time artifacts for machine learning model deployments | |
Efimov et al. | Bouncing” IO pattern for replication protocols |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication |