CN112689015A - 跨集群服务发现实现集群迁移的方法、系统及计算机设备 - Google Patents
跨集群服务发现实现集群迁移的方法、系统及计算机设备 Download PDFInfo
- Publication number
- CN112689015A CN112689015A CN202011556787.1A CN202011556787A CN112689015A CN 112689015 A CN112689015 A CN 112689015A CN 202011556787 A CN202011556787 A CN 202011556787A CN 112689015 A CN112689015 A CN 112689015A
- Authority
- CN
- China
- Prior art keywords
- cluster
- service
- old
- new
- instance
- 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.)
- Granted
Links
Images
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Hardware Redundancy (AREA)
Abstract
本申请涉及一种跨集群服务发现实现集群迁移的方法、系统、计算机设备以及存储介质,针对服务从旧集群迁移至新集群的提出的全新方案,在服务迁移时,建立起新旧集群中服客户端与服务端之间连接,根据新旧集群服务之间的名称映射关系,在新旧集群中部署相同的服务,先以实例作为“测试”添加到新集群的服务单,当该实例未发生异常时,则表明新集群可以安全承接该服务,则将预设服务对应的其他实例添加至新集群服务端,实现服务在新旧集群之间安全迁移。
Description
技术领域
本申请涉及计算机网络技术领域,特别是涉及一种跨集群服务发现实现集群迁移的方法、系统、计算机设备和存储介质。
背景技术
随着各大云服务商的发展,企业web服务上云或迁移云的越来越多,这其中就涉及一个集群平滑迁移的问题。在微服务化的大态势下,对于中大型公司来说这其中将涉及几十甚至几百套服务需要迁移,服务间链路错综复杂,如何快速、平滑地迁移,这将是一个风险超高的大工程。
传统技术中,集群迁移主要有以下两种方式。第一种:一次性布署所有服务、整体切流量,将各服务全量布署到新集群(机房),布署完成后全量测试,并统一接入各种入口流量,这种方式存在迁移风险高的缺陷;第二种:根据服务依赖情况,从上游往下游逐层迁移:如集群中有A、B、C三个服务,依赖关系是A依赖B,B依赖C。先迁移A服务,在新集群布署完A服务后,将A服务的域名流量指向新集群,然后再逐步迁B、C,这种集群迁移方式由于新服务集群第一次全量接入流量时风险仍然较高。
可见传统集群迁移方式存在迁移风险高的缺陷。
发明内容
基于此,有必要针对上述技术问题,提供一种迁移安全的跨集群服务发现实现集群迁移的方法、系统、计算机设备和存储介质。
一种跨集群服务发现实现集群迁移的方法,应用于待迁移的集群,待迁移的集群包括新集群和旧集群;
跨集群服务发现实现集群迁移的方法包括:
建立新集群客户端以及旧集群客户端与新集群服务端的连接,并建立新集群客户端以及旧集群客户端与旧集群服务端的连接;
读取预设的新集群服务与旧集群服务之间的名称映射关系;
根据名称映射关系,在新集群以及旧集群中分别部署相同的预设服务;
随机选择预设服务对应的实例添加至新集群服务端;
当检测到添加的实例未发生异常时,将预设服务对应的实例添加至新集群服务端。
在其中一个实施例中,跨集群服务发现实现集群迁移的方法还包括:
当检测到添加的实例发生异常时,在新集群服务端中将添加的实例摘除。
在其中一个实施例中,当检测到添加的实例未发生异常时,将预设服务对应的实例添加至新集群服务端之后,还包括:
在旧集群服务端中逐步摘除预设服务的实例。
在其中一个实施例中,读取预设的新集群服务与旧集群服务之间的名称映射关系之前,还包括:
配置新集群服务与旧集群服务之间的名称映射关系;
将名称映射关系缓存至代理端,代理端分别与新集群服务端以及旧集群服务端连接。
在其中一个实施例中,配置新集群服务与旧集群服务之间的名称映射关系包括:
基于golang语言创建监听线程;
执行监听线程,监听新集群以及旧集群之间实例变更,得到实例变更数据;
根据实例变更数据,配置新集群服务与旧集群服务之间的名称映射关系。
在其中一个实施例中,根据名称映射关系,在新集群以及旧集群中分别部署相同的预设服务之前,还包括:
将新集群的实例列表以及旧集群的实例列表合并,得到合并后的实例列表;
将合并后的实例列表加载至旧集群客户端。
在其中一个实施例中,当检测到添加的实例未发生异常时,将预设服务对应的实例添加至新集群服务端包括:
当检测到添加的实例未发生异常时,将预设服务对应的实例逐一添加至新集群服务端。
一种跨集群服务发现实现集群迁移的系统,应用于待迁移的集群,待迁移的集群包括新集群和旧集群;
跨集群服务发现实现集群迁移的系统包括:
连接建立模块,用于建立新集群客户端以及旧集群客户端与新集群服务端的连接,并建立新集群客户端以及旧集群客户端与旧集群服务端的连接;
映射关系读取模块,用于读取预设的新集群服务与旧集群服务之间的名称映射关系;
部署模块,用于根据名称映射关系,在新集群以及旧集群中分别部署相同的预设服务;
实例添加模块,用于随机选择预设服务对应的实例添加至新集群服务端;
服务迁移模块,用于当检测到添加的实例未发生异常时,将预设服务对应的实例添加至新集群服务端。
一种计算机设备,包括存储器和处理器,存储器存储有计算机程序,处理器执行计算机程序时实现以下步骤:
建立新集群客户端以及旧集群客户端与新集群服务端的连接,并建立新集群客户端以及旧集群客户端与旧集群服务端的连接;
读取预设的新集群服务与旧集群服务之间的名称映射关系;
根据名称映射关系,在新集群以及旧集群中分别部署相同的预设服务;
随机选择预设服务对应的实例添加至新集群服务端;
当检测到添加的实例未发生异常时,将预设服务对应的实例添加至新集群服务端。
一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:
建立新集群客户端以及旧集群客户端与新集群服务端的连接,并建立新集群客户端以及旧集群客户端与旧集群服务端的连接;
读取预设的新集群服务与旧集群服务之间的名称映射关系;
根据名称映射关系,在新集群以及旧集群中分别部署相同的预设服务;
随机选择预设服务对应的实例添加至新集群服务端;
当检测到添加的实例未发生异常时,将预设服务对应的实例添加至新集群服务端。
上述跨集群服务发现实现集群迁移的方法、系统、计算机设备以及存储介质,针对服务从旧集群迁移至新集群的提出的全新方案,在服务迁移时,建立起新旧集群中服客户端与服务端之间连接,根据新旧集群服务之间的名称映射关系,在新旧集群中部署相同的服务,先以实例作为“测试”添加到新集群的服务单,当该实例未发生异常时,则表明新集群可以安全承接该服务,则将预设服务对应的其他实例添加至新集群服务端,实现服务在新旧集群之间安全迁移。
附图说明
图1为一个实施例中跨集群服务发现实现集群迁移的方法的应用环境图;
图2为一个实施例中跨集群服务发现实现集群迁移的方法的流程示意图;
图3为一个应用实例中双集群服务发现的架构示意图;
图4为另一个实施例中跨集群服务发现实现集群迁移的方法的流程示意图;
图5为一个实施例中跨集群服务发现实现集群迁移的装置的结构框图;
图6为一个实施例中计算机设备的内部结构图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
本申请提供的跨集群服务发现实现集群迁移的方法,可以应用于如图1所示的应用环境中。其中,迁移中间件控制服务从旧集群迁移至新集群中,在旧集群和新集群中均包括有客户端和服务端,迁移中间件建立新集群客户端以及旧集群客户端与新集群服务端的连接,并建立新集群客户端以及旧集群客户端与旧集群服务端的连接;读取预设的新集群服务与旧集群服务之间的名称映射关系;根据名称映射关系,在新集群以及旧集群中分别部署相同的预设服务;随机选择预设服务对应的实例添加至新集群服务端;监测添加的实例是否发生异常;若无异常,则将预设服务对应的实施例添加至新集群服务端。
在一个实施例中,如图2所示,提供了一种跨集群服务发现实现集群迁移的方法,应用于待迁移的集群,其具体包括以下步骤:
S100:建立新集群客户端以及旧集群客户端与新集群服务端的连接,并建立新集群客户端以及旧集群客户端与旧集群服务端的连接。
服务注册发现系统已是一定规模的公司必备底层服务,内部访问均通过该服务名映射到具体的IP端口。常见服务注册发现系统(以下简称ns),有一个客户端(ns client),一个服务端(ns admin)。A服务通过B的服务名来调用B服务中的具体实例。其中流程是A通过服务注册发现client端解析B服务的真实ip+port,然后调用该ip+port。类似DNS(DomainName System,域名解析系统)解析的过程,新旧集群,由于各自是独立的环境,必然各自都有一套完整的服务注册发现系统。在待迁移的集群中包括有旧集群和新集群,服务需要从旧集群迁移至新集群中,新旧集群中均包括有各自的客户端和服务端,在这里区别于常规迁移方式中旧集群和新集群客户端只与所处集群服务端连接的方式,建立起新集群客户端与新集群服务端以及与旧集群服务端之间的连接,并且建立旧集群客户端与新集群服务端以及与旧集群服务端之间连,即新旧集群客户端均分别与新旧集群的两个服务端连接,具体网络架构可以参见图1。
S200:读取预设的新集群服务与旧集群服务之间的名称映射关系。
预设的名称映射关系是预先设置针对新集群和旧集群之间的名称映射关系。由于在新集群和旧集群之间针对相同的服务或实例其采取的命名可能存在不同(存在更名的情况),为了确保新旧集群能够同时准确识别相同的服务或实例,因此需要获取两者之间预设的名称映射关系。具体来说,该预设的名称映射关系可以通过监测新旧集群中实例变化数据,即识别针对相同的实例操作数据时,其对应的变化数据包括哪些,分析这部分数据即可得到两者之间的名称映射关系。
S300:根据名称映射关系,在新集群以及旧集群中分别部署相同的预设服务。
预设服务是随机选择的服务,该服务在新旧集群都支持提供。如图3所示,新旧集群都支持提供B服务,根据名称映射关系,在新旧集群分别部署相同规模的B服务。
S400:随机选择预设服务对应的实例添加至新集群服务端。
在一个服务中存在有多实例,从中随机选择任意实例添加到新集群服务端。具体来说,可以随机选择实例添加至新集群服务端,例如随机选择一个实例添加至新集群服务端,还可以随机选择多个实例同时添加到新集群服务端,为提高集群迁移的安全性,一般会选择较少的实例作为“测试”添加至新集群服务端,一般选择1个实例作为“测试”添加至新集群服务端。假设B服务对应有实例1、实例2、实例3、实例4共计4个实例,在这里随机选择其中一个实例,例如选择实例3,将实例3添加至新集群服务端。
S500:当检测到添加的实例未发生异常时,将预设服务对应的实例添加至新集群服务端。
针对上述S400的添加的实例,检测该实例是否发生异常,若未发生异常,则表明该实例已经成功在新集群服务端执行,新集群服务端可以正常支持预设服务的运行,因此,将预设服务对应的实例添加到新集群服务端。继续以上述实例为例,添加实例3至新集群服务端之后,在新集群中检测实例3的运行状态,当检测到实例3未发生异常时,将B服务对应的剩余实例1、实例2以及实例4添加至新集群服务端,从而实现新集群承接所有B服务实例的流量,即完成B服务从旧集群迁移至新集群。
上述跨集群服务发现实现集群迁移的方法,针对服务从旧集群迁移至新集群的提出的全新方案,在服务迁移时,建立起新旧集群中服客户端与服务端之间连接,根据新旧集群服务之间的名称映射关系,在新旧集群中部署相同的服务,先以实例作为“测试”添加到新集群的服务单,当该实例未发生异常时,则表明新集群可以安全承接该服务,则将预设服务对应的其他实例添加至新集群服务端,实现服务在新旧集群之间安全迁移。
如图4所示,在其中一个实施例中,跨集群服务发现实现集群迁移的方法还包括:
S600:当检测到添加的实例发生异常时,在新集群服务端中将添加的实例摘除。
针对添加的实例,当检测到该实例发生异常时,表明新集群服务端无法承载预设服务对应的实例,本次迁移存在很大的风险,因此,不再继续进行本次迁移,将依赖该服务的上游服务从旧集群打到新集群的流量快速摘除。继续以上述实施例为例,添加实例3至新集群服务端之后,检测实例3的运行情况,当检测到实例3发生异常时,在新集群服务端中将添加的实例摘除,避免占用新集群服务端有限的硬件资源。
如图4所示,在其中一个实施例中,S500之后,还包括:
S520:在旧集群服务端中逐步摘除预设服务的实例。
预设服务已经成功从旧集群迁移至新集群中,旧集群无需在承载预设服务对应的流量,无需再继续给预设服务提供硬件资源的支持,此时,可以释放旧集群服务端针对预设服务提供的硬件资源,包括带宽、处理资源以及缓存资源等。因此,可以在旧集群服务端中逐步摘除预设服务的实例,以将上述资源释放。继续以上述实施例为例,在旧集群服务端中逐步摘除B服务的实例,以释放B服务在旧集群服务端上占用的资源。
在其中一个实施例中,读取预设的新集群服务与旧集群服务之间的名称映射关系之前,还包括:
配置新集群服务与旧集群服务之间的名称映射关系;将名称映射关系缓存至代理端,代理端分别与新集群服务端以及旧集群服务端连接。
如图3所示,在实际应用中,还可以增设代理端(agent),代理端分别与新集群服务端以及旧集群服务端连接,代理端中缓存有新旧集群服务之间的名称映射关系,在需要的时候方便新旧集群服务端读取。在实际应用中,由于新旧集群同一服务的名字可能不同(存在更名的需求),因而需要在代理端配置新旧集群服务之间的名称映射关系,具体是新旧集群中服务器之间的名称映射关系。
在其中一个实施例中,配置新集群服务与旧集群服务之间的名称映射关系包括:基于golang语言创建监听线程;执行监听线程,监听新集群以及旧集群之间实例变更,得到实例变更数据;根据实例变更数据,配置新集群服务与旧集群服务之间的名称映射关系。
在本实施例中,通过基于golang语言创建的监听线程,监听新集群以及旧集群之间的实例变更,得到实例变更数据,进一步分析两个集群针对相同实例对应的实例变更数据,从而能够配置出新集群服务与旧集群服务之间的名称映射关系。在实际应用中,调用存储用的etcd.ns,在代理端(agent)用golang语言实现,监听两套etcd集群(新集群和旧集群)的实例变更,上游应用通过ns agent去读取某个服务的实例时,当代理端(agent)发现在新etcd集群无法获取该服务信息,即去旧集群获取该服务信息。
在其中一个实施例中,根据名称映射关系,在新集群以及旧集群中分别部署相同的预设服务之前,还包括:
将新集群的实例列表以及旧集群的实例列表合并,得到合并后的实例列表;将合并后的实例列表加载至旧集群客户端。
在旧集群侧,当旧集群客户端缓存某服务的实例列表时,将新集群的实例列表也合并进去,以便在后续处理中调用。
在其中一个实施例中,当检测到添加的实例未发生异常时,将预设服务对应的实例添加至新集群服务端包括:
当检测到添加的实例未发生异常时,将预设服务对应的实例逐一添加至新集群服务端。
当检测到添加的实例未发生异常时,针对预设服务其他的实例,在这里选择逐一添加至新集群服务端。采取逐一添加的方式确保了添加的安全与可靠,降低服务迁移的风险;另外,也有利于后期回滚/回切操作。
整体来说,在实际应用场景中本申请跨集群服务发现实现集群迁移的方法具体实现包括以下内容:
网络架构调整方面
1、改造双边集群的ns客户端(client),同时连接两个服务端(admin),在旧集群客户端缓存某服务的实例列表时,将新ns集群的实例列表也合并进去。
2、由于新旧集群同一服务的名字可能不同(存在更名的需求),因而需要在代理端(agent)配置新旧服务名映射关系。
3、存储B服务迁到新集群,但B服务依赖的下游C服务尚未迁移到新机房的情况,因而新集群的ns客户端也需要能够解析B服务的服务名。
改造后迁移实际操作流程方面
1、在旧集群的ns客户端配好新旧服务名称映射关系。
2、B服务在新集群布署好后,将B服务的一个实例添加到新集群的ns服务端。
3、旧集群调用B服务的流量,一部分自然打到新集群添加的实例中。
4、观察该实例服务是否异常。
5、有异常,将新该实例从新集群的ns服务端中摘除,旧集群即也发现不了该实例,实现了流量快速摘除。
6、无异常,将新集群的所有实例,添加到新集群ns服务端中,实现流量全量接入。
7、逐步摘除旧集群B服务的ns实例,所有流量即自然打到新集群。
更进一步来说,如图3所示,本申请跨集群服务发现实现集群迁移的方法具体包括以下步骤:
1、旧集群部署有B服务,在新集群布署相应规模的B服务。
2、在旧集群的ns代理端配置B服务在新旧集群的名称映射(因为在新集群该服务有可能改名)。
3、将新集群B服务的某一个实例,添加到新集群的ns服务端。(此时旧集群的ns代理会将新旧集群的B服务所有实例合并。当旧集群依赖B的上游服务A通过ns代理端获取B服务的所有实例时,也会拿到B服务在新集群注册的实例,新集群添加的那个B实例自然接入了A服务的部分流量)
4、观察新集群B服务的实例有无异常,当无异常时,将新集群B服务的所有实例均注册到新集群的ns服务端中,即实现了新集群所有实例承接流量。
5、观察新集群所有实例无异常后,将旧集群B服务的所有实例在旧集群ns服务端中注销,即实现了旧集群释放所有调用B服务占用的流量,流量全量路由到了新集群。
整体来说,在实际应用中,本申请跨集群服务发现实现集群迁移的方法基于服务注册发现,新机房单实例维度接入多个上游流量;服务逐个布署,逐个切流,复杂事情简单化;切换过程无需业务上下游联动,纯运维侧新机房挂载实例即可;遇故障秒级回切。
应该理解的是,虽然上述各流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,上述各流程图中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
本申请还提供一种跨集群服务发现实现集群迁移的系统,应用于待迁移的集群,待迁移的集群包括新集群和旧集群;
如图5所示,跨集群服务发现实现集群迁移的系统包括:
连接建立模块100,用于建立新集群客户端以及旧集群客户端与新集群服务端的连接,并建立新集群客户端以及旧集群客户端与旧集群服务端的连接;
映射关系读取模块200,用于读取预设的新集群服务与旧集群服务之间的名称映射关系;
部署模块300,用于根据名称映射关系,在新集群以及旧集群中分别部署相同的预设服务;
实例添加模块400,用于随机选择预设服务对应的实例添加至新集群服务端;
服务迁移模块500,用于当检测到添加的实例未发生异常时,将预设服务对应的实例添加至新集群服务端。
上述跨集群服务发现实现集群迁移的系统,针对服务从旧集群迁移至新集群的提出的全新方案,在服务迁移时,建立起新旧集群中服客户端与服务端之间连接,根据新旧集群服务之间的名称映射关系,在新旧集群中部署相同的服务,先以实例作为“测试”添加到新集群的服务单,当该实例未发生异常时,则表明新集群可以安全承接该服务,则将预设服务对应的其他实例添加至新集群服务端,实现服务在新旧集群之间安全迁移。
在其中一个实施例中,跨集群服务发现实现集群迁移的系统还包括中止模块,用于当检测到添加的实例发生异常时,在新集群服务端中将添加的实例摘除。
在其中一个实施例中,当检测到添加的实例未发生异常时,将预设服务对应的实例添加至新集群服务端之后,还包括:
在旧集群服务端中逐步摘除预设服务的实例。
在其中一个实施例中,跨集群服务发现实现集群迁移的系统还包括映射关系配置模块,用于配置新集群服务与旧集群服务之间的名称映射关系;将名称映射关系缓存至代理端,代理端分别与新集群服务端以及旧集群服务端连接。
在其中一个实施例中,映射关系配置模块还用于基于golang语言创建监听线程;执行监听线程,监听新集群以及旧集群之间实例变更,得到实例变更数据;根据实例变更数据,配置新集群服务与旧集群服务之间的名称映射关系。
在其中一个实施例中,部署模块300还用于将新集群的实例列表以及旧集群的实例列表合并,得到合并后的实例列表;将合并后的实例列表加载至旧集群客户端。
在其中一个实施例中,服务迁移模块500还用于当检测到添加的实例未发生异常时,将预设服务对应的实例逐一添加至新集群服务端。
关于跨集群服务发现实现集群迁移的装置的具体限定可以参见上文中对于跨集群服务发现实现集群迁移的方法的限定,在此不再赘述。上述跨集群服务发现实现集群迁移的装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是服务器,其内部结构图可以如图6所示。该计算机设备包括通过系统总线连接的处理器、存储器和网络接口。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于存储预设数据。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种跨集群服务发现实现集群迁移的方法。
本领域技术人员可以理解,图6中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现以下步骤:
建立新集群客户端以及旧集群客户端与新集群服务端的连接,并建立新集群客户端以及旧集群客户端与旧集群服务端的连接;
读取预设的新集群服务与旧集群服务之间的名称映射关系;
根据名称映射关系,在新集群以及旧集群中分别部署相同的预设服务;
随机选择预设服务对应的实例添加至新集群服务端;
当检测到添加的实例未发生异常时,将预设服务对应的实例添加至新集群服务端。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:
当检测到添加的实例发生异常时,在新集群服务端中将添加的实例摘除。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:
在旧集群服务端中逐步摘除预设服务的实例。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:
配置新集群服务与旧集群服务之间的名称映射关系;将名称映射关系缓存至代理端,代理端分别与新集群服务端以及旧集群服务端连接。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:
基于golang语言创建监听线程;执行监听线程,监听新集群以及旧集群之间实例变更,得到实例变更数据;根据实例变更数据,配置新集群服务与旧集群服务之间的名称映射关系。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:
将新集群的实例列表以及旧集群的实例列表合并,得到合并后的实例列表;将合并后的实例列表加载至旧集群客户端。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:
当检测到添加的实例未发生异常时,将预设服务对应的实例逐一添加至新集群服务端。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:
建立新集群客户端以及旧集群客户端与新集群服务端的连接,并建立新集群客户端以及旧集群客户端与旧集群服务端的连接;
读取预设的新集群服务与旧集群服务之间的名称映射关系;
根据名称映射关系,在新集群以及旧集群中分别部署相同的预设服务;
随机选择预设服务对应的实例添加至新集群服务端;
当检测到添加的实例未发生异常时,将预设服务对应的实例添加至新集群服务端。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
当检测到添加的实例发生异常时,在新集群服务端中将添加的实例摘除。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
在旧集群服务端中逐步摘除预设服务的实例。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
配置新集群服务与旧集群服务之间的名称映射关系;将名称映射关系缓存至代理端,代理端分别与新集群服务端以及旧集群服务端连接。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
基于golang语言创建监听线程;执行监听线程,监听新集群以及旧集群之间实例变更,得到实例变更数据;根据实例变更数据,配置新集群服务与旧集群服务之间的名称映射关系。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
将新集群的实例列表以及旧集群的实例列表合并,得到合并后的实例列表;将合并后的实例列表加载至旧集群客户端。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
当检测到添加的实例未发生异常时,将预设服务对应的实例逐一添加至新集群服务端。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(Read-OnlyMemory,ROM)、磁带、软盘、闪存或光存储器等。易失性存储器可包括随机存取存储器(Random Access Memory,RAM)或外部高速缓冲存储器。作为说明而非局限,RAM可以是多种形式,比如静态随机存取存储器(Static Random Access Memory,SRAM)或动态随机存取存储器(Dynamic Random Access Memory,DRAM)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。
Claims (10)
1.一种跨集群服务发现实现集群迁移的方法,其特征在于,应用于待迁移的集群,所述待迁移的集群包括新集群和旧集群;
所述跨集群服务发现实现集群迁移的方法包括:
建立新集群客户端以及旧集群客户端与新集群服务端的连接,并建立新集群客户端以及旧集群客户端与旧集群服务端的连接;
读取预设的新集群服务与旧集群服务之间的名称映射关系;
根据所述名称映射关系,在所述新集群以及所述旧集群中分别部署相同的预设服务;
随机选择所述预设服务对应的实例添加至所述新集群服务端;
当检测到添加的实例未发生异常时,将所述预设服务对应的实例添加至所述新集群服务端。
2.根据权利要求1所述的方法,其特征在于,还包括:
当检测到添加的实例发生异常时,在所述新集群服务端中将添加的实例摘除。
3.根据权利要求1所述的方法,其特征在于,所述当检测到添加的实例未发生异常时,将所述预设服务对应的实例添加至所述新集群服务端之后,还包括:
在所述旧集群服务端中逐步摘除所述预设服务的实例。
4.根据权利要求1所述的方法,其特征在于,所述读取预设的新集群服务与旧集群服务之间的名称映射关系之前,还包括:
配置新集群服务与旧集群服务之间的名称映射关系;
将所述名称映射关系缓存至代理端,所述代理端分别与所述新集群服务端以及所述旧集群服务端连接。
5.根据权利要求4所述的方法,其特征在于,所述配置新集群服务与旧集群服务之间的名称映射关系包括:
基于golang语言创建监听线程;
执行所述监听线程,监听所述新集群以及所述旧集群之间实例变更,得到实例变更数据;
根据所述实例变更数据,配置新集群服务与旧集群服务之间的名称映射关系。
6.根据权利要求1所述的方法,其特征在于,所述根据所述名称映射关系,在所述新集群以及所述旧集群中分别部署相同的预设服务之前,还包括:
将所述新集群的实例列表以及所述旧集群的实例列表合并,得到合并后的实例列表;
将所述合并后的实例列表加载至所述旧集群客户端。
7.根据权利要求1所述的方法,其特征在于,所述当检测到添加的实例未发生异常时,将所述预设服务对应的实例添加至所述新集群服务端包括:
当检测到添加的实例未发生异常时,将所述预设服务对应的实例逐一添加至所述新集群服务端。
8.一种跨集群服务发现实现集群迁移的系统,其特征在于,应用于待迁移的集群,所述待迁移的集群包括新集群和旧集群;
所述跨集群服务发现实现集群迁移的系统包括:
连接建立模块,用于建立新集群客户端以及旧集群客户端与新集群服务端的连接,并建立新集群客户端以及旧集群客户端与旧集群服务端的连接;
映射关系读取模块,用于读取预设的新集群服务与旧集群服务之间的名称映射关系;
部署模块,用于根据所述名称映射关系,在所述新集群以及所述旧集群中分别部署相同的预设服务;
实例添加模块,用于随机选择所述预设服务对应的实例添加至所述新集群服务端;
服务迁移模块,用于当检测到添加的实例未发生异常时,将所述预设服务对应的实例添加至所述新集群服务端。
9.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至7中任一项所述的方法的步骤。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至7中任一项所述的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011556787.1A CN112689015B (zh) | 2020-12-24 | 2020-12-24 | 跨集群服务发现实现集群迁移的方法、系统及计算机设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011556787.1A CN112689015B (zh) | 2020-12-24 | 2020-12-24 | 跨集群服务发现实现集群迁移的方法、系统及计算机设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112689015A true CN112689015A (zh) | 2021-04-20 |
CN112689015B CN112689015B (zh) | 2023-06-06 |
Family
ID=75453082
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011556787.1A Active CN112689015B (zh) | 2020-12-24 | 2020-12-24 | 跨集群服务发现实现集群迁移的方法、系统及计算机设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112689015B (zh) |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140195687A1 (en) * | 2013-01-09 | 2014-07-10 | Microsoft Corporation | Service Migration across Cluster Boundaries |
CN106055698A (zh) * | 2016-06-14 | 2016-10-26 | 智者四海(北京)技术有限公司 | 数据迁移方法、代理节点及数据库实例 |
CN110377395A (zh) * | 2019-07-03 | 2019-10-25 | 无锡华云数据技术服务有限公司 | 一种Kubernetes集群中的Pod迁移方法 |
CN110888666A (zh) * | 2019-12-12 | 2020-03-17 | 北京中电普华信息技术有限公司 | 基于应用负载均衡的灰度发布方法在云服务系统中的应用 |
CN111538719A (zh) * | 2020-04-30 | 2020-08-14 | 深圳前海微众银行股份有限公司 | 数据迁移方法、装置、设备及计算机存储介质 |
CN112055087A (zh) * | 2020-09-10 | 2020-12-08 | 厦门市美亚柏科信息股份有限公司 | 一种Mongodb集群快速部署、迁移和维护的方法及系统 |
CN112099918A (zh) * | 2019-09-13 | 2020-12-18 | 谷歌有限责任公司 | 容器化环境中的集群的实时迁移 |
-
2020
- 2020-12-24 CN CN202011556787.1A patent/CN112689015B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140195687A1 (en) * | 2013-01-09 | 2014-07-10 | Microsoft Corporation | Service Migration across Cluster Boundaries |
CN106055698A (zh) * | 2016-06-14 | 2016-10-26 | 智者四海(北京)技术有限公司 | 数据迁移方法、代理节点及数据库实例 |
CN110377395A (zh) * | 2019-07-03 | 2019-10-25 | 无锡华云数据技术服务有限公司 | 一种Kubernetes集群中的Pod迁移方法 |
CN112099918A (zh) * | 2019-09-13 | 2020-12-18 | 谷歌有限责任公司 | 容器化环境中的集群的实时迁移 |
CN110888666A (zh) * | 2019-12-12 | 2020-03-17 | 北京中电普华信息技术有限公司 | 基于应用负载均衡的灰度发布方法在云服务系统中的应用 |
CN111538719A (zh) * | 2020-04-30 | 2020-08-14 | 深圳前海微众银行股份有限公司 | 数据迁移方法、装置、设备及计算机存储介质 |
CN112055087A (zh) * | 2020-09-10 | 2020-12-08 | 厦门市美亚柏科信息股份有限公司 | 一种Mongodb集群快速部署、迁移和维护的方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN112689015B (zh) | 2023-06-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10474521B2 (en) | Service directory and fault injection management systems and methods | |
CN110581855B (zh) | 应用控制方法、装置、电子设备和计算机可读存储介质 | |
US9092331B1 (en) | System and method for statistical application-agnostic fault detection | |
CN112003961A (zh) | 一种kubernetes中资源暴露方法、系统、设备以及介质 | |
CN110602208B (zh) | 一种分布式微服务治理系统及系统的构建方法 | |
US20170250873A1 (en) | Distribued system for self updating agents and analytics | |
US10797952B1 (en) | Intelligent rollback analysis of configuration changes | |
US20190332495A1 (en) | Automatic creation of application-centric extended metadata for a storage appliance | |
CN109697078B (zh) | 非高可用性组件的修复方法、大数据集群和容器服务平台 | |
CN111090452A (zh) | 服务环境的切换方法及计算机可读存储介质 | |
CN109714188A (zh) | 基于Zookeeper的配置数据管理方法、设备和存储介质 | |
US20130332625A1 (en) | Dynamic redirection of network traffic within a system under test | |
CN115617610A (zh) | 一种基于Kubernetes的旁路无侵入式应用运行中的全行为监测方法及系统 | |
CN111683139A (zh) | 用于均衡负载的方法和装置 | |
CN112732428A (zh) | 数据采集方法、装置、电子设备和存储介质 | |
US20240137278A1 (en) | Cloud migration data analysis method using system process information, and system thereof | |
CN115048137A (zh) | 灰度发布方法、api网关、平台及存储介质 | |
CN113760461A (zh) | 一种版本升级方法及计算机可读存储介质 | |
CN112689015A (zh) | 跨集群服务发现实现集群迁移的方法、系统及计算机设备 | |
CN111722932B (zh) | 用于应用系统的控制方法和装置、计算机系统和存储介质 | |
CN113918373A (zh) | 一种内存泄露监控方法、内存泄露检测方法及相应装置 | |
US20070083796A1 (en) | Methods and systems for forecasting status of clustered computing systems | |
CN109672551B (zh) | 跨数据中心应用发布方法、设备、存储介质及装置 | |
CN111209197A (zh) | 应用程序持续集成测试方法、系统、设备和存储介质 | |
CN115242874B (zh) | 应用开发阶段的网络请求代理优化方法、系统、设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |