CN113254159B - 有状态服务的迁移方法、装置、计算机设备及存储介质 - Google Patents
有状态服务的迁移方法、装置、计算机设备及存储介质 Download PDFInfo
- Publication number
- CN113254159B CN113254159B CN202110666279.7A CN202110666279A CN113254159B CN 113254159 B CN113254159 B CN 113254159B CN 202110666279 A CN202110666279 A CN 202110666279A CN 113254159 B CN113254159 B CN 113254159B
- Authority
- CN
- China
- Prior art keywords
- service
- node
- stateful
- service node
- migration
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- 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/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/485—Task life-cycle, e.g. stopping, restarting, resuming execution
- G06F9/4856—Task life-cycle, e.g. stopping, restarting, resuming execution resumption being on a different machine, e.g. task migration, virtual machine migration
-
- 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/4557—Distribution of virtual machine instances; Migration and load balancing
-
- 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45575—Starting, stopping, suspending or resuming virtual machine instances
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本申请公开了一种有状态服务的迁移方法、装置、计算机设备及存储介质,涉及互联网技术领域。所述方法包括:接收服务调用方发送的服务请求,服务请求用于调用有状态服务,服务请求为服务调用方通过路由策略确定出第一服务节点后发送的;在第一服务节点上不存在有状态服务的情况下,获取第二服务节点的信息,第二服务节点为有状态服务当前所在的服务节点;在满足单点服务迁移条件的情况下,将有状态服务从第二服务节点迁移至第一服务节点,单点服务迁移条件用于确定有状态服务在迁移后的唯一服务节点为第一服务节点;向服务调用方发送服务请求的响应。本申请提供了一种针对分布式服务调度架构的高效的有状态服务的迁移方法。
Description
技术领域
本申请涉及互联网技术领域,特别涉及一种有状态服务的迁移方法、装置、计算机设备及存储介质。
背景技术
有状态服务是在运行过程中依赖服务状态的服务,即运行服务时需要依靠上下文。有状态服务无法由多个服务节点同时运行,通常只由1个服务节点来运行。在服务器运行并且对外提供服务的过程中,可能会因为服务器扩缩容、物理机宕机或者虚拟机宕机等情况,导致服务需要从一个服务节点迁移到另一个服务节点。
相关技术中的服务节点采用中心部署形式,也即服务系统包括一个中心仲裁节点和下属的多个服务节点。各个服务节点定期向中心仲裁节点上报服务信息,服务信息用于指示正在该服务节点上运行的服务。中心仲裁节点根据全局的服务信息确定有状态服务在迁移后所在的服务节点。
但在各个服务节点向中心仲裁节点上报服务信息的过程中,存在有状态服务在多点运行而导致数据冲突的情况。例如,有状态服务S原先在服务节点X上运行;新增服务节点Y在收到服务调用方发送的服务请求后,开始运行S;而服务节点X在未收到中心仲裁节点作出服务迁移仲裁之前,保持S的运行。此时,S同时在服务节点X和服务节点Y上运行,并且服务节点X和服务节点Y上运行的S可能出现数据不一致的情况。如何避免有状态服务在多点运行,是需要解决的问题。
发明内容
本申请实施例提供了一种有状态服务的迁移方法、装置、计算机设备及存储介质,使得分布式服务调度架构中的服务节点能够唯一确定有状态服务迁移后的服务节点并进行有状态服务的迁移,保证有状态服务的正常运行。所述技术方案如下:
根据本申请的一个方面,提供了一种有状态服务的迁移方法,所述方法包括:
接收服务调用方发送的服务请求,所述服务请求用于调用所述有状态服务,所述服务请求为所述服务调用方通过路由策略确定出所述第一服务节点后发送的;
在所述第一服务节点上不存在所述有状态服务的情况下,获取第二服务节点的信息,所述第二服务节点为所述有状态服务当前所在的服务节点;
在满足单点服务迁移条件的情况下,将所述有状态服务从所述第二服务节点迁移至所述第一服务节点,所述单点服务迁移条件用于确定所述有状态服务在迁移后的唯一服务节点为所述第一服务节点;
向所述服务调用方发送所述服务请求的响应。
根据本申请的另一方面,提供了一种有状态服务的迁移装置,所述装置包括:
接收模块,用于接收服务调用方发送的服务请求,所述服务请求用于调用所述有状态服务,所述服务请求为所述服务调用方通过路由策略确定出所述第一服务节点后发送的;
获取模块,用于在所述第一服务节点上不存在所述有状态服务的情况下,获取第二服务节点的信息,所述第二服务节点为所述有状态服务当前所在的服务节点;
迁移模块,用于在满足单点服务迁移条件的情况下,将所述有状态服务从所述第二服务节点迁移至所述第一服务节点,所述单点服务迁移条件用于确定所述有状态服务在迁移后的唯一服务节点为所述第一服务节点;
发送模块,用于向所述服务调用方发送所述服务请求的响应。
根据本申请的另一方面,提供了一种计算机设备,所述计算机设备包括处理器和存储器,所述存储器中存储有至少一条指令,所述指令由所述处理器加载并执行以实现如本申请各个方面提供的有状态服务的迁移方法。
根据本申请的另一方面,提供了一种计算机可读存储介质,所述存储介质中存储有计算机指令,所述计算机指令由处理器加载并执行以实现如本申请各个方面提供的有状态服务的迁移方法。
根据本申请的一个方面,提供了一种计算机程序产品,该计算机程序产品包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述有状态服务的迁移方法。
本申请实施例至少包括如下有益效果:
在接收到服务调用方发送的服务请求后,通过获取有状态服务当前所在的第二服务节点信息判断本服务节点是否为有状态服务原本即所在的服务节点;在满足单点服务迁移条件的情况下,即,确定了有状态服务在迁移后的唯一服务节点为本服务节点,进行有状态服务的迁移,将有状态服务从第二服务节点迁移至第一服务节点,提供了一种在分布式服务调度架构中保证有状态服务在单点运行的有状态服务的迁移方法,避免了有状态服务在多点运行而导致的数据冲突。
附图说明
为了更清楚地介绍本申请实施例中的技术方案,下面将对本申请实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
图1是本申请一个示例性实施例提供的一种一致性哈希算法的示意图;
图2是本申请一个示例性实施例提供的一种有状态服务的迁移方法的应用场景示意图;
图3是本申请一个示例性实施例提供的一种分布式服务调度架构框架的示意图;
图4是本申请一个示例性实施例提供的一种有状态服务的迁移方法的流程示意图;
图5是本申请一个示例性实施例提供的一种有状态服务的迁移方法的流程示意图;
图6是本申请一个示例性实施例提供的一种有状态服务的迁移方法的流程示意图;
图7是本申请一个示例性实施例提供的一种有状态服务的迁移装置的结构框图;
图8是本申请一个示例性实施例提供的计算机设备的框图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。
在本申请的描述中,需要理解的是,术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性。在本申请的描述中,需要说明的是,除非另有明确的规定和限定,术语“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本申请中的具体含义。此外,在本申请的描述中,除非另有说明,“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。
为了本申请实施例所示方案易于理解,下面对本申请实施例中出现的名词进行介绍。
服务:服务器在运行过程中的某类功能,对外提供服务接口,服务内容包括逻辑功能、数据处理等。服务作为一个相对独立的功能模块,服务实体可以是独立运行的进程、线程、轻量级协程或者其中的部分代码逻辑。一种服务可以对应多个服务实体。以游戏服务器为例,游戏服务器可以提供的服务有排行榜服务、工会服务、战场服务,等等。
服务状态:服务在运行过程中的暂存上下文,主要由保存于内存中的中间数据构成,随着服务过程的变化而变化。
有状态服务:在提供功能处理能力过程中,需要依赖服务状态来维持服务逻辑的正确性和完整性的服务,即需要结合暂存的上下文提供服务。例如,用户在商城里购买商品,经过将商品放入购物车、确认订单、付款等多个步骤;服务器在提供购买服务时,需要将用户挑选的商品或购物车内的商品作为中间数据存入内存,在用户付款时,根据中间数据(即用户挑选的商品信息或购物车内的商品信息)提供后续服务。
服务迁移:服务因为某种原因(扩缩容、宕机等),从一个服务节点转移到另一个服务节点,并提供持续服务能力的过程。
路由策略:用于在服务存在多个服务节点可以提供服务的情况下,选择特定的服务实体的方法。对于运行过程需要依赖服务状态的有状态服务,需要通过路由策略确定有状态服务对应的唯一服务实体。
一致性哈希算法:适用于分布式架构的路由策略,用于在动态的服务节点拓扑中选择特定的服务节点提供服务。一致性哈希算法由服务器架构提供,在全局服务表相同,键值相同的情况下,通过一致性哈希算法得到的计算结果在每个服务节点上都保证一致。
一致性哈希算法的原理如图1所示。将空间抽象为一个环形(哈希环)。各个服务节点通过一致性哈希计算映射为哈希环上的虚拟节点,各个虚拟节点按照节点标号按顺序分布在哈希环上。每个有状态服务都具有键数据,键数据用于唯一标识该有状态服务。以游戏中的有状态服务S为例,键数据可能为游戏用户身份码(User Identity,UID),或者,工会编号,等等。将有状态服务S的键数据通过一致性哈希计算得到该键数据的虚拟标号,选择与该虚拟标号最接近的虚拟节点标号对应的服务实体,运行有状态服务S。
当有服务节点出现故障离线时,将该故障离线的服务节点对应的虚拟节点从哈希环上删除,并将该虚拟节点对应的虚拟数值域分配给顺时针或逆时针方向的下一个虚拟节点;当有新增的服务节点加入时,计算得到其虚拟节点标号,在哈希环上添加该虚拟节点,并且将其逆时针或顺时针方向上对应的值域划分给新加入的虚拟节点。
示例性的,图1中svr2-1映射到哈希环上的虚拟节点标号为2500,svr1-2映射到哈希环上虚拟节点标号为4000,有状态服务的键数据通过一致性哈希计算得到的虚拟标号为3000,距离虚拟标号3000最近的虚拟节点标号为2500,因此,选择标号为2500的虚拟节点所对应的服务节点svr2-1提供服务。
相关技术中通过部署中心仲裁节点来确定服务迁移后所在的服务节点,但在这种模式下,有可能出现在中心仲裁节点作出仲裁之前服务已经同时在多个服务节点上运行的情况;对于运行过程依赖上下文的有状态服务来说,会造成数据不一致的问题。本申请提出的方法基于分布式服务调度架构模型,提供了一种高效的有状态服务的迁移方法,通过确定有状态服务在迁移后的唯一服务节点,保证了有状态服务在单点运行,避免了多点运行而导致的数据冲突问题。
图2示出了本申请一个示例性实施例的一种有状态服务的迁移方法的应用场景示意图。
图2中的R1、R2、……、Rn代表不同的服务调用方,服务调用方通过路由策略在多个服务节点中选取一个服务节点,发送服务请求;S代表一种有状态服务,当前时刻运行在服务节点1上;数据库用于存储有状态服务的元数据和服务状态,元数据用于指示S当前所在的服务节点,服务状态为S当前所在的服务节点定期存入数据库中的S的服务状态,即S在运行过程中产生的中间数据。
图2中的服务中心用于存储全局的服务信息,各个服务节点在发生变动时会向服务中心上报服务节点信息;同时,各个服务节点也会定期从服务中心获取全局的服务信息来更新本地全局路由表。服务节点信息包括服务节点名称Server、服务节点识别码EntityID以及虚拟节点编号Vnode,其中,服务节点识别码EntityID为唯一标识该服务节点的识别码,虚拟节点标号Vnode为该服务节点通过一致性哈希算法(Consistent HashAlgorithm)映射到哈希环上的标号。需要注意的是,由于各个服务节点获取本地全局路由表存在同步时延,因此各个服务节点上的本地全局路由表可能存在差异。
示例性的,服务器在运行过程中扩容,新增服务节点3,服务节点3向服务中心上报自身的服务节点信息,包括服务节点名称SN3、服务节点识别码1.2.15.3,以及虚拟节点标号2500。在服务节点3加入之后,根据虚拟节点的划分,有状态服务S应该从服务节点1SN1迁移到服务节点3SN3上。
服务调用方Rn的全局路由表已新增SN3的服务信息,因此Rn通过一致性哈希计算后得到S在哈希环上的虚拟标号,并确定S所在的服务节点为SN3,因此Rn向SN3发送服务请求;由于本地全局路由表的更新延迟,服务调用方R1的全局路由表中还未新增SN3的服务信息,因此R1通过一致性哈希计算后得到S在哈希环上的虚拟标号,并确定S所在的服务节点为SN1,因此R1向SN1发送服务请求。
SN3在收到Rn的服务请求后,发现S当前不在SN3上运行。SN3从数据库中获取S当前所在的服务节点为SN1,由于SN1与SN3不是同一个节点,因此SN3发现服务迁移。SN3通过一致性哈希计算,得到S所在服务节点应该为SN3,即为自身服务节点。因此,SN3告知SN1将S下线,并且SN3从DB中获取S的服务状态,生成有状态服务S’,开始向Rn提供服务。
SN1删除S后,告知R1服务状态已迁移;SN3生成S’后,告知Rn服务S’正常服务。
图3示出了本申请一个示例性实施例提供的分布式服务调度架构框架的示意图。
图3中所示的服务中心即为图2应用场景中所示的服务中心,用于汇总全局各个服务节点的服务信息。各个服务节点在本节点发生变动时向服务中心上报服务信息,同时各个服务节点也会订阅服务中心的全局服务信息,即定期从服务中心中获取全局服务信息。服务调度,即服务所在的节点位置,是根据服务信息计算得到的。
逻辑层中所示的每个边车Sidecar和其对应的服务器XXServer组合起来,代表一个服务节点。服务器中包括了订阅模块、健康上报模块、部分服务信息模块和本地服务信息模块,边车中包括了从服务中心获取到的全局服务信息。逻辑层中各个服务节点都通过上报本地服务信息和订阅服务中心的信息,获取最新的本地全局服务信息。
如图3所示的分布式服务调度架构模型优点在于,采用去中心化的架构,使得中心节点无较大的通信压力,保障了本申请有状态服务的迁移方法的实施。
图4示出了本申请一个示例性实施例提供的有状态服务的迁移方法的流程示意图。示例性的,该方法可应用于由图3所示的分布式服务调度架构中,由采用分布式部署的多个服务节点中的第一服务节点执行。该方法包括如下步骤:
步骤320:接收服务调用方发送的服务请求;
服务请求为服务调用方发送的,用于调用有状态服务的请求。服务请求为服务调用方通过路由策略确定出第一服务节点后发送的。
示例性的,服务调用方R需要调用有状态服务S。服务调用方R获取全局服务信息,通过路由策略,例如一致性哈希算法,确定出第一服务节点为运行有状态服务S的服务节点,即向第一服务节点发送服务请求。第一服务节点接收服务调用方发送的服务请求。
步骤340:在第一服务节点上不存在有状态服务的情况下,获取第二服务节点的信息;
第二服务节点为有状态服务当前所在的服务节点。第二服务节点的信息存储在共享存储空间中,例如,第二服务节点的信息以元数据的形式存储在数据库中。
第一服务节点在接收到服务调用方发送的服务请求后,判断本服务节点上是否存在服务调用方需要调用的有状态服务。在第一服务节点上不存在该有状态服务的情况下,获取第二服务节点的信息。
示例性的,第一服务节点接收到服务调用方R发送的对有状态服务S进行调用的服务请求后,发现本服务节点上不存在有状态服务S,第一服务节点即获取数据库中的元数据,该元数据用于指示有状态服务S当前所在的第二服务节点的信息。
在第一服务节点与第二服务节点相同的情况下,则说明有状态服务当前所在的服务节点即为第一服务节点,并没有发生需要服务迁移的情况。第一服务节点可能由于宕机或其他原因而造成第一服务节点上不存在有状态服务。在该情况下,进行有状态服务的初始化或宕机还原流程即可,无需进行服务迁移。
步骤360:在满足单点服务迁移条件的情况下,将有状态服务从第二服务节点迁移至第一服务节点;
单点服务迁移条件用于确定有状态服务在迁移后的唯一服务节点为第一服务节点。
示例性的,根据路由策略确定第三服务节点,第三服务节点为根据路由策略确定的用于唯一提供有状态服务的服务节点;在第一服务节点与第三服务节点是同一个服务节点的情况下,将有状态服务从第二服务节点迁移至第一服务节点。即,在第一服务节点与第二服务节点不是同一个服务节点,且第一服务节点与第三服务节点是同一个服务节点的情况下,将有状态服务从第二服务节点迁移至第一服务节点。也即,单点服务迁移条件为第一服务节点与第二服务节点不是同一个服务节点,且第一服务节点与第三服务节点是同一个服务节点。
示例性的,选择一致性哈希算法为路由策略,根据一致性哈希算法确定第三服务节点的过程如下:将有状态服务的键数据通过一致性哈希算法计算得到第一虚拟键标号,键数据用于唯一标识有状态服务,虚拟键标号为有状态服务映射到哈希环上的虚拟标号,哈希环为经过一致性哈希计算后对应的环形空间;将哈希环上与虚拟键标号距离最近的虚拟节点标号对应的服务节点确定为第三服务节点,虚拟节点标号为服务节点映射到哈希环上的虚拟标号。
示例性的,将哈希环上与虚拟键标号距离最近的虚拟节点标号对应的服务节点确定为第三服务节点时,选择将哈希环上与虚拟键标号在哈希环的顺时针方向上距离最近的虚拟节点标号对应的服务节点确定为第三服务节点;或者,将哈希环上与虚拟键标号在哈希环的逆时针方向上距离最近的虚拟节点标号对应的服务节点确定为第三服务节点;或者,将哈希环上与虚拟键标号差值最小的虚拟节点标号对应的服务节点确定为第三服务节点。
本申请对在哈希环上确定第三服务节点的方法不加以限制;本方法对路由策略的选择也不加以限制。
在满足单点服务迁移条件的情况下,将有状态服务从第二服务节点迁移至第一服务节点。
示例性的,获取有状态服务的服务状态;通过服务状态在第一服务节点上生成有状态服务。
服务节点定期将该服务节点上运行的有状态服务的服务状态存入共享存储空间,共享存储空间用于存储有状态服务的服务状态。因此,共享存储空间和运行有状态服务的服务节点的内存中都可能存有有状态服务的服务状态。
示例性的,获取有状态服务的服务状态时,从共享存储空间获取有状态服务的第一服务状态,第一服务状态为第二服务节点定期存入共享存储空间的该有状态服务的服务状态;或者,从第二服务节点获取有状态服务上的第二服务状态,第二服务状态为有状态服务存在第二服务节点内存中的服务状态;或者,通过获取共享存储空间中的第一服务状态和第二服务节点上的第二服务状态,在第一服务节点上生成有状态服务,第一服务状态为第二服务节点定期存入共享存储空间的有状态服务的服务状态,第二服务状态为有状态服务存在第二服务节点内存中的服务状态。
可选地,在第一服务节点上生成有状态服务的同时,第一服务节点向第二服务节点发送迁移消息,该迁移消息用于指示第二服务节点将有状态服务下线。
步骤380:向服务调用方发送服务请求的响应。
在第一服务节点完成有状态服务的迁移之后,向服务调用方发送服务请求的响应,该响应用于指示有状态服务已迁移至第一服务节点。
示例性的,在第一服务节点完成有状态服务的迁移之后,向服务调用方发送“正常服务”消息,用于指示有状态服务已迁移完成,第一服务节点可以正常提供服务。
可选地,在服务调用方由于全局服务信息更新不及时而向第二服务节点发送服务请求的情况下,第二服务节点向服务调用方发送服务请求的响应,该响应用于指示有状态服务已迁移至别的服务节点。
示例性的,有状态服务由第二服务节点迁移至第一服务节点,第二服务节点接收到服务调用方发送的服务请求后,向服务调用方发送“服务已迁移”的响应消息,用于指示有状态服务已迁移至别的服务节点。服务调用方在接收到第二服务节点发送的响应消息后,决策是否回滚或者进行服务超时处理,即返回上一步骤或者进行重试操作。
综上所述,本申请实施例提供的有状态服务的迁移方法,在第一服务节点接收到服务请求且第一服务节点上不存在有状态服务的情况下,通过获取第二服务节点信息并且在满足单点服务迁移条件的情况下,进行服务迁移,将有状态服务从第二服务节点迁移至第一服务节点,提供了一种在分布式服务调度架构中,没有中心仲裁节点分配有状态服务迁移后的服务节点的情况下,保证有状态服务仅在单点运行的有状态服务的迁移方法;此外,该方法在服务迁移完成之后向服务调用方发送服务请求的响应,使得服务调用方可以根据服务请求的响应消息做出决策,进行重试或回滚,为业务侧提供了决策机制。
有状态服务发生迁移存在两种可能的情况:一种情况是有状态服务原先在服务节点S1上,由于加入了新的服务节点S2,根据有状态服务的路由策略,有状态服务S应该由服务节点S1迁移到服务节点S2;另一种情况是有状态服务原先在服务节点S1上,由于S1灰度或者故障或者缩容摘除,根据有状态服务的路由策略,有状态服务S应该由服务节点S1迁移到服务节点S2。
在以上两种情况的任一情况发生的情况下,发生服务迁移。接收到服务请求的服务节点S2需要从数据库DB中查询有状态服务S原先所在的服务节点信息;然后通过最新的全局服务信息,计算有状态服务迁移后所在的服务节点;最后,在确认满足服务迁移的条件时,发起服务迁移,将有状态服务S在原先的服务节点S1下线,并且通过数据库DB和服务器进程间通信,将有状态服务S的服务状态发送至迁移后的服务节点S2,进行正常的服务,将服务结果回传给服务调用方。
基于上述简要阐述的有状态服务的迁移方法的流程,可以将本申请中提供的有状态服务的迁移方法按照服务迁移的不同阶段可分为三个流程部分,分别为服务迁移发现部分、服务迁移仲裁部分,以及服务迁移实施部分。通过下述实施例对这三部分进行详细说明。
图5示出了本申请一个示例性实施例提供的有状态服务的迁移方法的流程示意图。示例性的,该方法可应用于由图3所示的分布式服务调度架构中。该方法以有状态服务为S,接收到服务请求的服务节点为第一服务节点S2,路由策略为一致性哈希算法,共享存储空间为数据库DB,用于存储有状态服务S当前所在节点的信息为Meta数据为例,展示有状态服务的迁移方法。具体实施步骤如下:
第一部分:服务迁移发现
步骤620:接收服务请求后发现有状态服务S不在服务节点S2上;
服务节点S2接收服务调用方发送的服务请求,该服务请求为服务调用方通过一致性哈希算法确定出的提供有状态服务S的服务节点后发送的,该服务请求用于调用有状态服务S。
S2在接收到服务请求后,发现S不在S2上,因此需要执行后续步骤判断是否需要将S迁移至S2。
步骤622:从数据库DB获取元数据Meta数据,获取有状态服务S当前所在的服务节点S1;
DB是作为共享存储空间的数据库,DB中的Meta数据用于指示S当前所在的服务节点。
S2在发现S不在自身服务节点之后,从DB中获取Meta数据;通过Meta数据获取S当前所在的节点为S1,即第二服务节点为S1。
步骤624:判断服务节点S1和服务节点S2是否为同一个服务节点;
S2在确定第二服务节点为S1后,判断第一服务节点是否等于第二服务节点,即判断S2和S1是否为同一个服务节点。
在S2和S1是同一个服务节点的情况下,表示S2即为当前运行S的服务节点;而S不在服务节点S2上的原因可能是因为S2发生故障后又恢复。因此,进入S的初始化流程或宕机还原流程。接着,跳转至步骤662,从DB中恢复S的服务状态并运行S提供服务。
在S2和S1不是同一个服务节点的情况下,表示需要进行有状态服务的迁移,即发现服务迁移。因此,进入后续服务迁移流程。
步骤626:判断服务节点S1、服务节点S2是否在本地全局路由表;
在实施服务迁移仲裁之前,判断第一服务节点S2和第二服务节点S1是否在本地全局路由表。
在S1和S2都在本地全局路由表的情况下,跳转至步骤640,直接进入服务迁移仲裁流程。
在S1和S2不在本地全局路由表的情况下,说明本地全局路由表可能不是最新的状态,需要通过服务中心获取最新的全局服务信息。
步骤628:强更本地全局路由表;
通过服务中心获取最新的全局服务信息,即更新本地全局路由表。
由于各个服务节点原本定期从服务中心获取全局服务信息以更新本地全局路由表,因此,这里的特殊更新称为强更。
第二部分:服务迁移仲裁
步骤640:计算有状态服务S的第三服务节点;
通过本地全局路由表计算S的第三服务节点,即S在服务迁移后所在的服务节点。
示例性的,采用一致性哈希算法基于本地全局路由表计算得到S的第三服务节点。
步骤642:判断仲裁结果是否为服务节点S2;
判断步骤640中计算得到的S的第三服务节点是否为S2。
在计算得到的S的第三服务节点为S2的情况下,即仲裁结果为S2,也即第三服务节点与第一服务节点是同一个服务节点,表明S进行服务迁移后所在的服务节点为S2,也即服务请求发送到了正确的服务节点,则进入服务迁移实施流程。
在计算得到的S所在的服务节点不是S2的情况下,即仲裁结果不为S2,表明按照最新的全局路由表,运行S的服务节点并不是S2,因此跳转至步骤664b,即服务节点S2向服务调用方返回请求结果:服务已迁移。
第三部分:服务迁移实施
步骤660:告知服务节点S1将有状态服务S下线;
通过上述步骤确定了将S从第二服务节点S1迁移至第一服务节点S2,因此S2向S1发送消息,告知S1将S下线,保证S的单点运行。
步骤662:从数据库DB恢复有状态服务S的服务状态,提供服务;
S2通过获取S的服务状态在S2上生成S,并向服务调用方提供服务。
示例性的,S2通过访问DB获取S的服务状态,在S2上生成S,并通过在S2上运行S提供服务。
可选地,S2通过DB获取S的服务状态后,通过接收S1发送的存储在S1内存中的S的最新的服务状态,更新通过DB获取到的S的服务状态。
步骤660和步骤662是串行执行的,其串行性通过异步事务封装保证。串行执行步骤660和步骤662能够保证同一时间有状态服务S只在一个服务节点上运行。
步骤664a:返回请求结果:正常服务;
在S2经过故障恢复或者服务迁移后,S2上恢复运行S并提供服务,向服务调用方返回请求结果:正常服务。
步骤664b:返回请求结果:服务已迁移;
在服务迁移仲裁的结果不是S2的情况下,说明S已经迁移,则S2上不会生成S,并且S2向服务调用方返回请求结果:服务已迁移。
步骤666:结束。
总的来说,本申请的有状态服务的迁移方法中,数据库中的元数据Meta数据提供了服务迁移发现的能力;服务中心提供了全局唯一性的服务迁移仲裁能力;路由策略,例如一致性哈希算法,提供了全局统一服务映射能力;异步事务封装提供了服务迁移流程事务的完整性保障;对服务请求的响应消息给业务侧提供了处理服务迁移的容错能力。
综上所述,本申请实施例提供的有状态服务的迁移方法,在第一阶段通过判断第一服务节点与第二服务节点是否为同一节点来完成服务迁移发现,在第二阶段通过判断第一服务节点与第三服务节点是否为同一节点来完成服务迁移仲裁,在第三阶段进行服务迁移实施,并向服务调用方,即业务侧发送服务请求的响应,提供了一种在分布式服务调度架构中全局唯一确定服务迁移后服务所在的服务节点并进行服务迁移的有状态服务的迁移方法,保证了有状态服务单点运行,避免了数据冲突,并且在不停机的状态下完成有状态服务的迁移,对其他服务无影响,能够做到基本无损;此外,本申请实施例提供的有状态服务的迁移方法,通过向服务调用方发送服务请求的响应,使得服务调用方能够根据该响应结果进入错误处理流程,提供了服务调用方的容错能力。
上述展示了有状态服务的迁移方法的具体步骤,以下展示本申请提供的有状态服务的迁移方法在实际应用中的实施。
图6示出了以在游戏中提供排行榜服务为例,展现有状态服务的迁移过程。
如图6所示,图中Client为游戏客户端,可看作服务调用方;Gamesvr为一个后台游戏服务进程,主要负责玩家游戏逻辑;RedisDB为作为共享存储空间的数据库;Ranksvr1和Ranksvr2为提供排行榜服务的两个服务节点。
首先展示整体流程,标号见图6中各个主体间的箭头,整体流程可分为以下步骤:
1.在服务调用方需要调用排行榜服务时,Gamesvr向Ranksvr1发送服务请求;
2.Ranksvr1发现本服务节点上不存在排行榜服务,于是通过访问DB获取排行榜服务所在服务节点的位置为Ranksvr2;
3.Ranksvr1通过服务迁移仲裁确定需要进行服务迁移,则向Ranksvr2发送排行榜服务迁移请求;
4.Ranksvr2将内存中存储的且并没有存入数据库RedisDB中的排行榜服务的服务状态通过进程间通信发送给Ranksvr1;
5.Ranksvr1通过访问RedisDB获取Ranksvr2存入RedisDB的排行榜服务的服务状态;
6.Ranksvr1将Ranksvr2发送的排行榜服务的服务状态和从RedisDB中获取的排行榜服务的服务状态结合,通过排序、裁剪、固化等处理,生成排行榜服务,并提供服务。
其次,对于Ranksvr1来说,在接收到调用排行榜服务的服务请求后,发现自身不存在排行榜服务。Ranksvr1从DB获取Meta数据;根据Meta数据,在通过服务迁移仲裁后确定需要实施服务迁移;Ranksvr1在接收到Ranksvr2发送的排行榜服务的服务状态后更新服务状态;Ranksvr1从DB获取Ranksvr2存入DB的排行榜服务的服务状态;最后,Ranksvr1通过对收到的排行榜的信息进行排序、裁剪、固化等处理,提供排行榜服务。
最后,对于Ranksvr2来说,在接收到Ranksvr1发送的将排行榜服务下线的消息后,将Meta数据和排行榜服务状态存入DB,并将内存中的未存入DB的排行榜服务状态发送给Ranksvr1,删除内存中有关排行榜服务的服务状态,将排行榜服务下线。
本申请提供的有状态服务的迁移方法在应用中稳定运行。针对有状态服务,对业务侧屏蔽有状态服务迁移的细节,提供可靠性、可用性良好的服务。本申请提供的方法中的有状态服务的迁移过程不需要停机或者暂停所有的服务,在不影响其他服务的情况下实现有状态服务的动态迁移,可以提供基本无损的服务,且性能开销小,高质量的完成服务迁移。
此外,本申请提供的有状态服务的迁移方法通过共享存储空间中指示有状态服务当前所在的服务节点的Meta数据和全局路由信息即可唯一确定有状态服务迁移的信息,无需引入其他额外数据或者全局架构单元,具有高可用性,对架构无侵入影响;并且,本申请提供的有状态服务的迁移方法可在多种实际应用场景中使用,具有可扩展性和可复用性。
下述为本申请装置实施例,可以用于执行本申请方法实施例。对于本申请装置实施例中未披露的细节,请参照本申请方法实施例。
图7是本申请一个示例性实施例提供的一种有状态服务的迁移装置的结构框图。所述装置包括:
接收模块820,用于接收服务调用方发送的服务请求,所述服务请求用于调用所述有状态服务,所述服务请求为所述服务调用方通过路由策略确定出所述第一服务节点后发送的;
获取模块840,用于在所述第一服务节点上不存在所述有状态服务的情况下,获取第二服务节点的信息,所述第二服务节点为所述有状态服务当前所在的服务节点;
迁移模块860,用于在满足单点服务迁移条件的情况下,将所述有状态服务从所述第二服务节点迁移至所述第一服务节点,所述单点服务迁移条件用于确定所述有状态服务在迁移后的唯一服务节点为所述第一服务节点;
发送模块880,用于向所述服务调用方发送所述服务请求的响应。
在一个可能的设计中,所述迁移模块860包括确定子模块862和迁移子模块864;所述确定子模块862,用于根据所述路由策略确定第三服务节点,所述第三服务节点为根据所述路由策略确定的用于唯一提供所述有状态服务的服务节点;所述迁移子模块864,用于在所述第一服务节点与所述第三服务节点是同一个服务节点的情况下,将所述有状态服务从所述第二服务节点迁移至所述第一服务节点。
在一个可能的设计中,所述确定子模块862,用于将所述有状态服务的键数据通过一致性哈希算法计算得到第一虚拟键标号,所述键数据用于唯一标识所述有状态服务,所述虚拟键标号为所述有状态服务映射到哈希环上的虚拟标号,所述哈希环为经过一致性哈希计算后对应的环形空间;所述确定子模块862,还用于将所述哈希环上与所述虚拟键标号距离最近的虚拟节点标号对应的服务节点确定为所述第三服务节点,所述虚拟节点标号为所述服务节点映射到哈希环上的虚拟标号。
在一个可能的设计中,所述确定子模块862,用于将所述哈希环上与所述虚拟键标号在所述哈希环的顺时针方向上距离最近的虚拟节点标号对应的服务节点确定为所述第三服务节点;或,将所述哈希环上与所述虚拟键标号在所述哈希环的逆时针方向上距离最近的虚拟节点标号对应的服务节点确定为所述第三服务节点;或,将所述哈希环上与所述虚拟键标号差值最小的虚拟节点标号对应的服务节点确定为所述第三服务节点。
在一个可能的设计中,所述迁移子模块864,用于在所述第一服务节点与所述第二服务节点不是同一个服务节点,且所述第一服务节点与所述第三服务节点是同一个服务节点的情况下,将所述有状态服务从所述第二服务节点迁移至所述第一服务节点。
在一个可能的设计中,所述迁移子模块864,用于获取所述有状态服务的服务状态;所述迁移子模块864,还用于通过所述服务状态在所述第一服务节点上生成所述有状态服务。
在一个可能的设计中,所述迁移子模块864,用于从共享存储空间获取所述有状态服务的第一服务状态,所述共享存储空间用于存储所述有状态服务的服务状态,所述第一服务状态为所述第二服务节点定期存入所述共享存储空间的所述有状态服务的服务状态;或,从所述第二服务节点获取所述有状态服务上的第二服务状态,所述第二服务状态为所述有状态服务存在所述第二服务节点内存中的服务状态;或,通过获取共享存储空间中的第一服务状态和所述第二服务节点上的第二服务状态,在所述第一服务节点上生成所述有状态服务,所述共享存储空间用于存储所述有状态服务的服务状态,所述第一服务状态为所述第二服务节点定期存入所述共享存储空间的所述有状态服务的服务状态,所述第二服务状态为所述有状态服务存在所述第二服务节点内存中的服务状态。
在一个可能的设计中,所述发送模块880,用于向所述第二服务节点发送迁移消息,所述迁移消息用于指示所述第二服务节点将所述有状态服务下线。
在一个可能的设计中,所述发送模块880,用于向所述服务调用方发送响应消息,所述响应消息用于指示所述第一服务节点正常提供所述有状态服务。
图8是根据一示例性实施例示出的一种服务器的结构示意图。所述服务器1300包括中央处理单元(Central Processing Unit,CPU)1301、包括随机存取存储器(RandomAccess Memory,RAM)1302和只读存储器(Read-Only Memory,ROM)1303的系统存储器1304,以及连接系统存储器1304和中央处理单元1301的系统总线1305。所述计算机设备1300还包括帮助计算机设备内的各个器件之间传输信息的基本输入/输出系统(Input/Output,I/O系统)1306,和用于存储操作系统1313、应用程序1314和其他程序模块1315的大容量存储设备1307。
所述基本输入/输出系统1306包括有用于显示信息的显示器1308和用于用户输入信息的诸如鼠标、键盘之类的输入设备1309。其中所述显示器1308和输入设备1309都通过连接到系统总线1305的输入输出控制器1310连接到中央处理单元1301。所述基本输入/输出系统1306还可以包括输入输出控制器1310以用于接收和处理来自键盘、鼠标、或电子触控笔等多个其他设备的输入。类似地,输入输出控制器1310还提供输出到显示屏、打印机或其他类型的输出设备。
所述大容量存储设备1307通过连接到系统总线1305的大容量存储控制器(未示出)连接到中央处理单元1301。所述大容量存储设备1307及其相关联的计算机设备可读介质为计算机设备1300提供非易失性存储。也就是说,所述大容量存储设备1307可以包括诸如硬盘或者只读光盘(Compact Disc Read-Only Memory,CD-ROM)驱动器之类的计算机设备可读介质(未示出)。
不失一般性,所述计算机设备可读介质可以包括计算机设备存储介质和通信介质。计算机设备存储介质包括以用于存储诸如计算机设备可读指令、数据结构、程序模块或其他数据等信息的任何方法或技术实现的易失性和非易失性、可移动和不可移动介质。计算机设备存储介质包括RAM、ROM、可擦除可编程只读存储器(Erasable Programmable ReadOnly Memory,EPROM)、带电可擦可编程只读存储器(Electrically ErasableProgrammable Read-Only Memory,EEPROM),CD-ROM、数字视频光盘(Digital Video Disc,DVD)或其他光学存储、磁带盒、磁带、磁盘存储或其他磁性存储设备。当然,本领域技术人员可知所述计算机设备存储介质不局限于上述几种。上述的系统存储器1304和大容量存储设备1307可以统称为存储器。
根据本公开的各种实施例,所述服务器1300还可以通过诸如因特网等网络连接到网络上的远程计算机设备运行。也即计算机设备1300可以通过连接在所述系统总线1305上的网络接口单元1312连接到网络1311,或者说,也可以使用网络接口单元1312来连接到其他类型的网络或远程计算机设备系统(未示出)。
所述存储器还包括一个或者一个以上的程序,所述一个或者一个以上程序存储于存储器中,中央处理器1301通过执行该一个或一个以上程序来实现上述有状态服务的迁移方法的全部或者部分步骤。
在示例性实施例中,还提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由处理器加载并执行以实现上述各个方法实施例提供的有状态服务的迁移方法。
在示例性实施例中,还提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中,通信设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该通信设备执行上述方面所述的有状态服务的迁移方法。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本申请的可选实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (15)
1.一种有状态服务的迁移方法,其特征在于,由采用分布式部署的多个服务节点中的第一服务节点执行,所述方法包括:
接收服务调用方发送的服务请求,所述服务请求用于调用所述有状态服务,所述服务请求为所述服务调用方通过路由策略确定出所述第一服务节点后发送的;
在所述第一服务节点上不存在所述有状态服务的情况下,获取第二服务节点的信息,所述第二服务节点为所述有状态服务当前所在的服务节点;
在满足单点服务迁移条件的情况下,将所述有状态服务从所述第二服务节点迁移至所述第一服务节点,所述单点服务迁移条件用于确定所述有状态服务在迁移后的唯一服务节点为所述第一服务节点;
向所述服务调用方发送所述服务请求的响应。
2.根据权利要求1所述的方法,其特征在于,所述在满足单点服务迁移条件的情况下,将所述有状态服务从所述第二服务节点迁移至所述第一服务节点,包括:
根据所述路由策略确定第三服务节点,所述第三服务节点为根据所述路由策略确定的用于唯一提供所述有状态服务的服务节点;
在所述第一服务节点与所述第三服务节点是同一个服务节点的情况下,将所述有状态服务从所述第二服务节点迁移至所述第一服务节点。
3.根据权利要求2所述的方法,其特征在于,所述根据路由策略确定第三服务节点,包括:
将所述有状态服务的键数据通过一致性哈希算法计算得到第一虚拟键标号,所述键数据用于唯一标识所述有状态服务,所述虚拟键标号为所述有状态服务映射到哈希环上的虚拟标号,所述哈希环为经过一致性哈希计算后对应的环形空间;
将所述哈希环上与所述虚拟键标号距离最近的虚拟节点标号对应的服务节点确定为所述第三服务节点,所述虚拟节点标号为所述服务节点映射到哈希环上的虚拟标号。
4.根据权利要求3所述的方法,其特征在于,所述将所述哈希环上与所述虚拟键标号距离最近的虚拟节点标号对应的服务节点确定为所述第三服务节点,包括:
将所述哈希环上与所述虚拟键标号在所述哈希环的顺时针方向上距离最近的虚拟节点标号对应的服务节点确定为所述第三服务节点;
或,
将所述哈希环上与所述虚拟键标号在所述哈希环的逆时针方向上距离最近的虚拟节点标号对应的服务节点确定为所述第三服务节点;
或,
将所述哈希环上与所述虚拟键标号差值最小的虚拟节点标号对应的服务节点确定为所述第三服务节点。
5.根据权利要求2至4任一所述的方法,其特征在于,所述在所述第一服务节点与所述第三服务节点是同一个服务节点的情况下,将所述有状态服务从所述第二服务节点迁移至所述第一服务节点,包括:
在所述第一服务节点与所述第二服务节点不是同一个服务节点,且所述第一服务节点与所述第三服务节点是同一个服务节点的情况下,将所述有状态服务从所述第二服务节点迁移至所述第一服务节点。
6.根据权利要求2至4任一所述的方法,其特征在于,所述将所述有状态服务从所述第二服务节点迁移至所述第一服务节点,包括:
获取所述有状态服务的服务状态;
通过所述服务状态在所述第一服务节点上生成所述有状态服务。
7.根据权利要求6所述的方法,其特征在于,所述获取所述有状态服务的服务状态,包括:
从共享存储空间获取所述有状态服务的第一服务状态,所述共享存储空间用于存储所述有状态服务的服务状态,所述第一服务状态为所述第二服务节点定期存入所述共享存储空间的所述有状态服务的服务状态;
或,
从所述第二服务节点获取所述有状态服务上的第二服务状态,所述第二服务状态为所述有状态服务存在所述第二服务节点内存中的服务状态;
或,
通过获取共享存储空间中的第一服务状态和所述第二服务节点上的第二服务状态,在所述第一服务节点上生成所述有状态服务,所述共享存储空间用于存储所述有状态服务的服务状态,所述第一服务状态为所述第二服务节点定期存入所述共享存储空间的所述有状态服务的服务状态,所述第二服务状态为所述有状态服务存在所述第二服务节点内存中的服务状态。
8.根据权利要求6所述的方法,其特征在于,所述方法还包括:
向所述第二服务节点发送迁移消息,所述迁移消息用于指示所述第二服务节点将所述有状态服务下线。
9.根据权利要求1所述的方法,其特征在于,所述向所述服务调用方发送所述服务请求的响应,包括:
向所述服务调用方发送响应消息,所述响应消息用于指示所述第一服务节点正常提供所述有状态服务。
10.一种有状态服务的迁移装置,其特征在于,所述装置包括:
接收模块,用于接收服务调用方发送的服务请求,所述服务请求用于调用所述有状态服务,所述服务请求为所述服务调用方通过路由策略确定出第一服务节点后发送的;
获取模块,用于在所述第一服务节点上不存在所述有状态服务的情况下,获取第二服务节点的信息,所述第二服务节点为所述有状态服务当前所在的服务节点;
迁移模块,用于在满足单点服务迁移条件的情况下,将所述有状态服务从所述第二服务节点迁移至所述第一服务节点,所述单点服务迁移条件用于确定所述有状态服务在迁移后的唯一服务节点为所述第一服务节点;
发送模块,用于向所述服务调用方发送所述服务请求的响应。
11.根据权利要求10所述的装置,其特征在于,
所述迁移模块,用于根据所述路由策略确定第三服务节点,所述第三服务节点为根据所述路由策略确定的用于唯一提供所述有状态服务的服务节点;
所述迁移模块,还用于在所述第一服务节点与所述第三服务节点是同一个服务节点的情况下,将所述有状态服务从所述第二服务节点迁移至所述第一服务节点。
12.根据权利要求11所述的装置,其特征在于,
所述迁移模块,用于在所述第一服务节点与所述第二服务节点不是同一个服务节点,且所述第一服务节点与所述第三服务节点是同一个服务节点的情况下,将所述有状态服务从所述第二服务节点迁移至所述第一服务节点。
13.根据权利要求11所述的装置,其特征在于,
所述迁移模块,用于获取所述有状态服务的服务状态;
所述迁移模块,还用于通过所述服务状态在所述第一服务节点上生成所述有状态服务。
14.一种计算机设备,其特征在于,所述设备包括处理器,与所述处理器相连的存储器,以及存储在所述存储器上的程序指令,所述处理器执行的所述程序指令时实现如权利要求1至9任一所述的有状态服务的迁移方法。
15.一种计算机可读存储介质,所述存储介质中存储有程序指令,其特征在于,所述程序指令被处理器执行时实现如权利要求1至9任一所述的有状态服务的迁移方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110666279.7A CN113254159B (zh) | 2021-06-16 | 2021-06-16 | 有状态服务的迁移方法、装置、计算机设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110666279.7A CN113254159B (zh) | 2021-06-16 | 2021-06-16 | 有状态服务的迁移方法、装置、计算机设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113254159A CN113254159A (zh) | 2021-08-13 |
CN113254159B true CN113254159B (zh) | 2022-10-21 |
Family
ID=77188177
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110666279.7A Active CN113254159B (zh) | 2021-06-16 | 2021-06-16 | 有状态服务的迁移方法、装置、计算机设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113254159B (zh) |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109614226A (zh) * | 2018-11-20 | 2019-04-12 | 武汉烽火信息集成技术有限公司 | 一种基于Kubernetes的有状态应用存储管理方法 |
EP3493058A1 (en) * | 2017-12-04 | 2019-06-05 | Thomson Licensing | Method and device for migrating a stateful function |
CN110308965A (zh) * | 2019-05-31 | 2019-10-08 | 中国科学院计算技术研究所 | 云数据中心的基于规则的启发式虚拟机分配方法及系统 |
CN110413381A (zh) * | 2019-08-02 | 2019-11-05 | 中国工商银行股份有限公司 | 用于对应用服务容器化的方法和装置 |
CN111338806A (zh) * | 2020-05-20 | 2020-06-26 | 腾讯科技(深圳)有限公司 | 一种业务控制方法及装置 |
CN111880929A (zh) * | 2020-07-07 | 2020-11-03 | 腾讯科技(深圳)有限公司 | 一种实例管理方法及装置、计算机设备 |
CN112506647A (zh) * | 2020-11-19 | 2021-03-16 | 杭州电魂网络科技股份有限公司 | 有状态服务器负载均衡的方法、系统、装置和存储介质 |
CN112559118A (zh) * | 2019-09-25 | 2021-03-26 | 北京国双科技有限公司 | 应用数据迁移方法、装置、电子设备及存储介质 |
CN112764926A (zh) * | 2021-01-19 | 2021-05-07 | 汉纳森(厦门)数据股份有限公司 | 一种基于负载感知的数据流动态负载均衡策略分析方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11190549B2 (en) * | 2019-04-23 | 2021-11-30 | Zebware Ab | Method and devices for enabling portability of data and client between cloud service providers |
-
2021
- 2021-06-16 CN CN202110666279.7A patent/CN113254159B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP3493058A1 (en) * | 2017-12-04 | 2019-06-05 | Thomson Licensing | Method and device for migrating a stateful function |
CN109614226A (zh) * | 2018-11-20 | 2019-04-12 | 武汉烽火信息集成技术有限公司 | 一种基于Kubernetes的有状态应用存储管理方法 |
CN110308965A (zh) * | 2019-05-31 | 2019-10-08 | 中国科学院计算技术研究所 | 云数据中心的基于规则的启发式虚拟机分配方法及系统 |
CN110413381A (zh) * | 2019-08-02 | 2019-11-05 | 中国工商银行股份有限公司 | 用于对应用服务容器化的方法和装置 |
CN112559118A (zh) * | 2019-09-25 | 2021-03-26 | 北京国双科技有限公司 | 应用数据迁移方法、装置、电子设备及存储介质 |
CN111338806A (zh) * | 2020-05-20 | 2020-06-26 | 腾讯科技(深圳)有限公司 | 一种业务控制方法及装置 |
CN111880929A (zh) * | 2020-07-07 | 2020-11-03 | 腾讯科技(深圳)有限公司 | 一种实例管理方法及装置、计算机设备 |
CN112506647A (zh) * | 2020-11-19 | 2021-03-16 | 杭州电魂网络科技股份有限公司 | 有状态服务器负载均衡的方法、系统、装置和存储介质 |
CN112764926A (zh) * | 2021-01-19 | 2021-05-07 | 汉纳森(厦门)数据股份有限公司 | 一种基于负载感知的数据流动态负载均衡策略分析方法 |
Non-Patent Citations (3)
Title |
---|
"STRATFram:A framework for describing and evaluating elasticity strategies for service-based business processes in the cloud";A. Ben Jrad;《Future Generation Computer Systems》;20190831;第97卷;第69-89页 * |
"可扩展的有状态服务";wangleineo;《https://zhuanlan.zhihu.com/p/25874641》;20170320;第1-8页 * |
"服务集成框架的负载均衡研究";屈威;《中国优秀硕士学位论文全文数据库 信息科技辑》;20200615(第06期);第I138-330页 * |
Also Published As
Publication number | Publication date |
---|---|
CN113254159A (zh) | 2021-08-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20240204978A1 (en) | Interface for digital operator platform including response caching | |
JP5695324B2 (ja) | スプリットブレイン状況におけるメジャーグループを決定するための方法、システム、及びコンピュータ読み取り可能な記録媒体 | |
US8055735B2 (en) | Method and system for forming a cluster of networked nodes | |
KR102013004B1 (ko) | 확장 가능한 환경에서의 동적 로드 밸런싱 기법 | |
CN111400112B (zh) | 分布式集群的存储系统的写入方法、装置及可读存储介质 | |
CN108881512B (zh) | Ctdb的虚拟ip均衡分配方法、装置、设备及介质 | |
US9015308B2 (en) | Multilayer distributed processing system | |
US10367676B1 (en) | Stable leader selection for distributed services | |
CN100359508C (zh) | 用于处理集群计算机系统的合并协议的方法和装置 | |
CN112015595B (zh) | 主从数据库的切换方法、计算设备及存储介质 | |
US8751711B2 (en) | Storage topology manager | |
JP6231675B2 (ja) | トランザクション処理方法および装置 | |
CN113055461B (zh) | 一种基于ZooKeeper的无人集群分布式协同指挥控制方法 | |
CN112749178A (zh) | 一种保证数据一致性的方法及相关设备 | |
CN108810166A (zh) | 路由管理方法、系统、计算机设备及计算机可读存储介质 | |
US11522966B2 (en) | Methods, devices and systems for non-disruptive upgrades to a replicated state machine in a distributed computing environment | |
CN113254159B (zh) | 有状态服务的迁移方法、装置、计算机设备及存储介质 | |
US11061719B2 (en) | High availability cluster management of computing nodes | |
Pankowski | Consistency and availability of Data in replicated NoSQL databases | |
US11290318B2 (en) | Disaster recovery of cloud resources | |
CN110502460B (zh) | 数据处理的方法和节点 | |
CN108683533B (zh) | 配置更新方法、配置更新的响应方法及服务器、系统 | |
US20230118525A1 (en) | Recovery of a software-defined data center | |
JP2006113828A (ja) | 作業負荷管理可能なクラスタシステム | |
US11354197B2 (en) | Recovery of a software-defined data center |
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 | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 40051677 Country of ref document: HK |
|
GR01 | Patent grant | ||
GR01 | Patent grant |