CN106789250A - 一种基于容器的服务多版本共存实现方法 - Google Patents
一种基于容器的服务多版本共存实现方法 Download PDFInfo
- Publication number
- CN106789250A CN106789250A CN201611201295.4A CN201611201295A CN106789250A CN 106789250 A CN106789250 A CN 106789250A CN 201611201295 A CN201611201295 A CN 201611201295A CN 106789250 A CN106789250 A CN 106789250A
- Authority
- CN
- China
- Prior art keywords
- service
- container
- client
- services set
- node
- 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
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/08—Configuration management of networks or network elements
- H04L41/085—Retrieval of network configuration; Tracking network configuration history
- H04L41/0859—Retrieval of network configuration; Tracking network configuration history by keeping history of different configuration generations or by rolling back to previous configuration versions
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer And Data Communications (AREA)
- Stored Programmes (AREA)
Abstract
一种基于容器的服务多版本共存实现方法,通过在服务端配置多个服务节点,每个服务节点内配置多个容器,每个容器装载不同的服务集,不仅使服务的多个版本共存,也使在服务共存环境中清晰地区分不同服务类型及同一服务类型的不同版本;利用容器区分新、老版本服务,当添加新服务或停止旧服务后,客户端能根据自身的版本自动筛选欲调用的服务版本,并从相应的容器内获得服务调用结果,减少因客户端与调用服务版本不相一致时的人为控制调用;多版本服务的共存使服务应用在升级过程不需要再通过重新启动加载新服务,简化服务升级的繁琐流程,实现分布式环境中的服务热部署。
Description
技术领域
本发明属于分布式服务领域,具体涉及一种基于容器的服务多版本共存实现方法。
背景技术
互联网企业,由于业务发展迅速、需求变化快等因素,需要软件应用能快速地实现业务以及响应客户需求的变化,所以分布式服务得到了广泛的应用。分布式服务的使用带来了如下3大好处:(1)独立高负载模块:将负载高的模块独立成一个服务,部署到独立的机器上,使高负载模块独享硬件资源,也避免高负载模块影响其它模块的正常使用。例如:产品模块可能是个访问量很大的模块,可以将其以服务的方式发布,其它模块调用其服务来访问其功能;(2)方便***容量的伸缩:当服务访问量增加时,独立的服务可通过简单的增加硬件的方式进行容量的扩充。而当服务访问量降低后,多余的服务可以停止,可节约硬件的使用。例如:上面的产品模块,当访问量增加后,可以直接增加产品服务来进行扩容,访问量降低后,多余的服务可进行停止,硬件回收;(3)利于功能模块的复用:对于多个***需要公用的功能模块,可以独立成独立服务,降低代码的重复。例如:多个***都有登陆模块,可以将其独立为服务的形式发布,避免登陆模块代码的重复。
分布式服务虽然带来上述优势,但同时也带来让人头痛的难题,即无法方便的对服务进行升降级。目前通用的服务升级流程包括:
步骤1:停止部分服务应用,对此部分服务进行升级操作,如果新服务的接口与老服务的接口不相同,则需要避免未升级的客户端访问到升级后的服务;
步骤2:停止部分客户端应用,升级客户端应用,并指定其访问升级后的服务;
步骤3:重复步骤1-步骤2,直至所有的服务全部升级完成;
相对于集中式服务部署,分布式服务分布的复杂难度高。其一是因为在分布式服务部署中,集中式的应用被切分成了多个应用,各个应用部署在多台机器上,发布量成倍增长,导致服务升降级时需要操作的机器成倍增长;其二是因为传统服务的发布需要重启服务,导致发布时间较长,可能需要数分钟至数小时之久,进一步增加了分布式服务发布的难度;其三是由于缺乏对服务的明确标示,无法区分新老服务,当新服务与老服务不兼容时,需要避免老客户端访问新服务。
如何突破传统服务发布需要重启的局限性,同时实现既享有分布式服务所带来的好处,又不会增加服务发布与升降级的难度是当前急于迫切解决的难题。
发明内容
为突破现有技术的局限性,本发明的目的是,通过在服务提供端配置多个服务节点,每个服务节点内配置多个容器,每个容器装载不同的服务集,不仅实现多版本服务的共存,也实现服务共存环境中清晰地区分不同服务类型及同一服务类型的不同版本;利用容器区分新、老版本服务,当添加新服务或停止旧服务后,客户端能根据自身的版本自动筛选欲调用的服务版本,并从相应的容器内获得服务调用结果,减少因客户端与调用服务版本不相一致时的人为控制调用;多版本服务的共存使服务应用在升级过程不需要再通过重新启动加载新服务,简化服务升级的繁琐流程,实现分布式环境中的服务热部署;
本发明的技术方案是:一种基于容器的服务多版本共存实现方法,其特征在于,通过在服务端(服务提供端)配置多个服务节点,每个服务节点内配置多个容器,每个容器装载不同的服务集,不仅使服务的多个版本共存,也使在服务共存环境中清晰地区分不同服务类型及同一服务类型的不同版本;利用容器区分新、老版本服务,当添加新服务或停止旧服务后,客户端能根据自身的版本自动筛选欲调用的服务版本,并从相应的容器内获得服务调用结果,减少因客户端与调用服务版本不相一致时的人为控制调用;多版本服务的共存使服务应用在升级过程不需要再通过重新启动加载新服务,简化服务升级的繁琐流程,实现分布式环境中的服务热部署;具体步骤如下:
步骤1:环境初始化,(1)服务端内配置多个服务节点,不同服务节点以IP地址和端口号作为唯一识别;(2)服务节点配置多个装载服务集的容器,并为不同容器分配唯一的ID号;(3)服务节点启动,并检查服务集的配置信息,配置信息指明当前需要发布的服务集名称和版本,以及这些服务集在服务节点内如何分配的信息;
所述服务集,是业务服务的集合,是业务服务在容器内部署的最小单位;每一次新服务发布前,服务节点要从服务集仓库中下载欲发布的服务集,获取服务集配置信息;服务集由服务集仓库统一管理,服务集仓库提供服务集的上传、下载及版本管理;
所述容器,是部署服务集的组件,是用于提供服务集运行的必要环境;
所述服务节点,是包含容器的服务应用;一台物理机能部署多个服务节点,一个服务节点内能部署多个容器;
特别地,所述服务集仓库和所述容器不同属于一个概念,所述服务集仓库中存储所有当前需要发布的服务集的配置信息,而所述容器是用于加载所述服务集仓库中某一个服务集的内容;
步骤2:服务节点运行过程中启动服务节点中的容器,服务节点按照经检查过的服务集配置信息,将各服务集装载入相应的容器中;每个容器仅装载一个服务集,且不同版本的服务集也由不同的容器装载;
特别地,在服务节点的运行过程中,服务节点能通过启动容器、停止容器、发布服务集的操作,动态地操作容器装载需要发布的服务集或停止正在运行的容器;
步骤3:由各个容器启动装载在各自内部的服务集,将服务集中当前需要对外发布的服务注册信息输入服务注册中心,注册消息包含需注册服务的名称、服务版本号、服务所在服务节点的IP地址和接口号,以及服务所在容器的ID号;
步骤4:服务注册中心接收到由服务节点内容器发送的服务注册信息后,存储服务注册信息,并提取服务名称、服务版本号、服务所在容器的ID号,并依据黑白名单规则,针对记录在白名单中的客户端,向它推送所有有关该注册服务的服务信息;针对记录在黑名单中的客户端,则拒绝推送;
步骤5:客户端接收由服务注册中心发送的服务名称、服务版本号、服务所在容器的ID号和服务所在容器的编号,并将接收到的上述信息缓存至本地,保存在客户端的服务列表中;
所述服务列表,存储关于某一项服务的服务名称、服务版本号、服务所在容器的ID号等;
步骤6:当客户端有服务调用需求时,从本地缓存中获取服务列表,当客户端有服务调用需求时,从本地缓存中获取服务列表,综合考虑客户端调用需求、客户端版本、调用服务的版本及调用服务的当前版本更新情况,在服务列表中进行筛选,确定唯一且合适的装载调用服务的服务节点和容器;筛选具体包括:(1)根据服务名称和版本号,从服务列表中筛选出符合要求的服务;(2)在服务列表中,如果匹配到服务名称,但是无法匹配版本号,则选择版本号最大的服务进行匹配;(3)从筛选出的服务中,依据相应的负载均衡算法逻辑,选择出装载该服务的唯一服务节点内的容器,向筛选出的容器发送服务调用请求;
特别地,步骤6中,客户端本地缓存有关于某一项服务多个版本的信息,客户端在服务调用过程中,能根据客户端版本和服务调用需求,选择合适的服务版本进行调用;
步骤7:客户端根据经步骤6筛选出的服务,将服务的服务名称、服务版本号、服务所在容器的ID号形成服务调用请求,按照服务所在服务节点的IP地址和接口号,将调用请求发送至对应的服务节点处理;
步骤8:服务节点接收到服务调用请求后,解析请求内容,获取欲调用服务所在容器的ID号,并根据容器ID号选择该服务所在的容器对服务调用请求进行处理;
步骤9:服务节点将服务调用请求发送至步骤8中已选择的容器,由接收调用请求的容器根据请求信息中的服务名称及服务版本号,找到容器中服务集内对应的服务,执行服务并将结果反馈至客户端;
步骤10:针对正在运行的服务节点,如欲向服务节点内添加服务集或卸载服务集时,由接收到请求的服务节点根据请求指令执行容器的启动或关闭;在新添服务集和卸载服务集的过程中,以容器隔离新添的服务集与其他服务集、欲卸载的服务集与其他服务集的联系,使客户端对其他容器内的服务集调用不会受到更新和卸载的影响。
在应用更新过程中需要新添服务集时,服务节点从服务集仓库中下载服务集,按照服务集配置信息启动服务节点内的容器,并加载新服务集至容器中;容器通过向注册中心发送服务注册信息,实现新版本服务的公开发布;
若是停止服务需要卸载服务集时,首先,注册中心从推送服务列表中删除欲停止的服务,并将最新的服务列表推送给所有客户端,以确保之后不会有请求访问欲停止服务的新请求;然后,注册中心通知服务节点停止服务,当服务节点接收到消息后,将停止服务所在的容器,并执行销毁容器的操作,包括停止服务的对外服务、取消在注册中心内的服务注册;
进一步地,当服务升级后,客户端仍能在未升级的情况下,正常继续对服务的调用,不会因服务的更新而间断服务的调用;在新版本服务添加成功后,依据客户端版本与服务版本的区别,有不同的服务调用逻辑:若客户端版本号与调用服务的老版本号一致,当服务新版本发布后,客户端按照版本号完全匹配优先原则,依然直接调用老版本服务;只有在服务老版本完全停止后,客户端才会自动访问新版本服务;若客户端版本号和调用服务的老版本号不一致,当服务新版本发布后,客户端直接获取新版本服务集。
本发明与其他技术方案相比较,具有有益效果:
(1)本发明通过在服务节点内设置多个容器,利用容器装载不同种类的服务,也包括同一服务的不同版本,使不同种类的服务、不同版本的服务之间相互隔离,保证多版本服务能在服务提供端的共存;
(2)本发明在服务节点运行时,通过直接操控服务节点内的容器启动或停止,执行服务的添加或卸载,并利用容器的隔离性,实现新添服务或卸载服务能独立于其他正常运行的服务,使服务的发布或停止不再经过传统服务发布的***重启步骤,减少服务发布或停止的时间,提高服务提供端的工作效率;
(3)本发明通过在客户端设置选择逻辑,实现在多版本服务共存的环境中,客户端的服务调用能自动匹配到欲调用服务的最适合版本,减少服务升级过程中因新、老服务不兼容而导致需要人为控制客户端访问的操作,减少服务升级、降级及服务发布的难度;
附图说明
图1为本发明实施例中一种基于容器的服务多版本实现方法的实施结构图
图2为本发明实施例中服务节点内的容器结构图
图3为本发明实施例中一种基于容器的服务多版本共存实现方法实施流程图
图4本发明实施例中客户端调用服务的流程示意图
具体实施例
为使本发明的技术方案、技术目的及技术效果更清晰明白,以下结合具体实施例,并参照附图,对本发明进一步详细说明。
图1为本发明实施例中一种基于容器的服务多版本实现方法的实施结构图,具体包括服务端101、注册中心102、客户端103、服务节点1和服务节点2,服务节点1中包含容器1-1和容器1-2,服务节点2包含容器2-1和容器2-2;其中服务端与注册中心相连,新服务的启动后,由服务端向注册中心传送该服务的注册信息;注册中心与客户端连接,用于将已发布服务的信息传送至客户端存储;客户端与服务端连接,一方面向服务端的服务节点发送服务调用请求,另一方面根据服务调用请求,从服务端获取需要的服务;
所述容器存在于服务节点中,是指装载服务集的服务单元;其中服务集是业务服务的集合,服务集的上传、下载、版本管理由服务集仓库执行;
所述服务节点存在于服务端内,是装载容器的服务应用;
所述服务端101用于向客户端103提供服务接口,服务端101内能包含多个服务节点,一个服务节点内能装载多个容器,且一个服务节点以唯一的IP地址和服务端口号作为身份标识;一个容器内装载一种服务,且每一个容器被分配有唯一的ID号;
所述注册中心102是已发布服务的信息聚合区,用于接收服务端发送的服务注册信息;每一次应用更新或停止导致的服务版本的变化,注册中心以新添或删除的方式,更新服务的注册信息;
所述客户端103是服务调用端;客户端调用服务时,在多版本服务共存的环境下,按照预设选择逻辑,在新版本服务发布后,能根据当前客户端的版本号,自动匹配最适合的服务版本进行调用;
图2为本发明实施例中服务节点内的容器结构图,服务节点内包含两类容器,即基础容器和业务容器;基础容器中加载业务容器公用且不对外提供服务的服务集,是业务容器1、业务容器2、业务容器3运行的基础环境;业务容器在服务节点启动时,由服务节点按照当前需要发布的服务集配置信息,装载服务集入相应业务容器
服务节点内创建有多个业务容器,每个业务容器在创建时由服务节点通过容器ID库提供唯一的ID号;当容器内装载入服务集后,自动启动对服务集的发布操作;
每一个业务容器内只能装载一种服务集,或同一种服务集的不同版本,使服务节点内的不同服务集之间相互隔离;本发明实施例中有服务集1和服务集2,其中服务集1的版本有V1.0和V2.0,按照容器装载单一服务的原则,容器1中只装载服务集1-V1.0,容器2中只装载服务集1-V2.0,容器3中只装载服务集2-V1.0;
图3为本发明实施例中一种基于容器的服务多版本共存实现方法实施流程图,本发明实施例在服务端配置多个服务节点,每个服务节点内配置多个容器,每个容器装载不同的服务集,用以区分不同的服务类型和同一类型服务的不同版本;同时利用不同容器装载不同服务,使各个服务之间相互隔离,使新版本服务和旧版本服务得以区分;在本发明实施例中,服务节点(192.168.1.100:9998)内设有业务容器1、业务容器2,其中业务容器1中装载服务集1-V1.0,业务容器2中装载服务集2-V1.0,现在因应用升级,服务节点(192.168.1.100:9998)的服务集1需要升级版本到2.0,并由注册中心对新版服务进行发布,具体步骤有:
步骤301:注册中心向服务节点(192.168.1.100:9998)发送“发布服务集1的V2.0版”的消息:
步骤302:服务节点(192.168.1.100:9998)接收到服务发布消息后,经消息内容解析后获取服务集1-V2.0的服务名称,根据服务名称从服务集仓库中下载服务集;
步骤303:服务节点(192.168.1.100:9998)创建并启动一个容器,根据容器ID库为新建的业务容器编号为“3”;业务容器3装载在服务节点(192.168.1.100:9998)内;
步骤304:服务节点(192.168.1.100:9998)将服务集1-V2.0装载入业务容器3中,因为服务集1-V1.0和服务集1-V2.0分布在不同的业务容器中,因而即将发布的服务集1-V2.0和已经发布的服务集1-V1.0之间相互隔离,并以容器ID作为区分;
步骤305:服务节点(192.168.1.100:9998)提取服务集1-V2.0的服务名称、服务版本号、容器ID、服务节点IP及端口号形成注册消息,发送至注册中心内存储,本发明实施例中的注册消息内容具体如下表:
表1:服务集1的注册信息
服务名称 | 服务版本号 | 容器ID | 服务节点IP及端口号 |
服务集1 | V2.0 | 3 | 192.168.1.100:9998 |
步骤306:由注册中心根据服务名称判断客户端是否有订阅过该服务的记录,若客户端订阅过相同服务,则将本次更新后的服务集信息发送至客户端,加入客户端的服务列表,缓存在客户端本地;若客户端没有订阅过相同服务,则在之后客户端有订阅需求时候,将更新后的服务集信息发送至客户端;
服务集1经过版本升级后,现在客户端本地的服务列表中如下:
表2:客户端本地的服务列表信息
服务名称 | 服务版本号 | 容器ID | 服务节点IP及端口号 |
服务集1 | V1.0 | 1 | 192.168.1.100:9998 |
服务集2 | V1.0 | 2 | 192.168.1.100:9998 |
服务集1 | V2.0 | 3 | 192.168.1.100:9998 |
V2.0版服务集1的信息和V1.0版服务集1的信息现同时存在于客户端本地的服务列表中时,客户端现欲调用服务集1,具体步骤参阅图4本发明实施例中客户端调用服务的流程示意图,包括:
步骤401:客户端根据欲调用服务的名称,在服务列表中进行完全匹配,匹配结果如下表:
服务名称 | 服务版本号 | 容器ID | 服务节点IP及端口号 |
服务集1 | V1.0 | 1 | 192.168.1.100:9998 |
服务集1 | V2.0 | 3 | 192.168.1.100:9998 |
步骤402:客户端根据欲调用服务的版本号,在服务列表进行匹配;本发明实施例中没有明确规定调用服务的版本号,返回最新版服务的信息,匹配结果如下:
服务名称 | 服务版本号 | 容器ID | 服务节点IP及端口号 |
服务集1 | V2.0 | 3 | 192.168.1.100:9998 |
步骤403:在分布式服务分布环境中,同一版本服务会分布在不同服务节点的业务容器内,经过服务筛选后,服务筛选结果可能不止一条;客户端需要在调用前根据路由规则,从步骤402中过滤的服务列表中,确定唯一一个服务,按照服务列表中记录的服务节点IP及端口号,将服务名称、服务版本号形成服务调用消息,按照服务节点的IP地址(192.168.1.100)和端口号(9998)发送至相应的服务节点;
步骤404:服务节点(192.168.1.100:9998)接收到服务调用请求,解析内容获取请求中的业务容器ID号,并将服务调用请求交由对应的业务容器处理;
在本发明实施例中,由业务容器3处理服务调用请求;
步骤405:业务容器3根据调用请求中的服务名称(服务集1),找到服务并执行,并将结果返回给客户端;
所属领域的普通技术人员应当理解:以上所述仅为本发明的具体实施例而已,并不用于限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (6)
1.一种基于容器的服务多版本共存实现方法,其特征在于,通过在服务端配置多个服务节点,每个服务节点内配置多个容器,每个容器装载不同的服务集,不仅使服务的多个版本共存,也使在服务共存环境中清晰地区分不同服务类型及同一服务类型的不同版本;利用容器区分新、老版本服务,当添加新服务或停止旧服务后,客户端能根据自身的版本自动筛选欲调用的服务版本,并从相应的容器内获得服务调用结果,减少因客户端与调用服务版本不相一致时的人为控制调用;多版本服务的共存使服务应用在升级过程不需要再通过重新启动加载新服务,简化服务升级的繁琐流程,实现分布式环境中的服务热部署;具体步骤如下:
步骤1:环境初始化,(1)服务端内配置多个服务节点,不同服务节点以IP地址和端口号作为唯一识别;(2)服务节点配置多个装载服务集的容器,并为不同容器分配唯一的ID号;(3)服务节点启动,并检查服务集的配置信息,并检查服务集的配置信息,配置信息指明当前需要发布的服务集名称和版本,以及这些服务集在服务节点内如何分配的信息;
所述服务集,是业务服务的集合,是业务服务在容器内部署的最小单位;每一次新服务发布前,服务节点要从服务集仓库中下载欲发布的服务集,获取服务集配置信息;服务集由服务集仓库统一管理,服务集仓库提供服务集的上传、下载及版本管理;
所述容器,是部署服务集的组件,是用于提供服务集运行的必要环境;
所述服务节点,是包含容器的服务应用;一台物理机能部署多个服务节点,一个服务节点内能部署多个容器;
步骤2:服务节点运行过程中启动服务节点中的容器,服务节点按照经检查过的服务集配置信息,将各服务集装载入相应的容器中;每个容器仅装载一个服务集,且不同版本的服务集也由不同的容器装载;
特别地,在服务节点的运行过程中,服务节点能通过启动容器、停止容器、发布服务集的操作,动态地操作容器装载需要发布的服务集或停止正在运行的容器;
步骤3:由各个容器启动装载在各自内部的服务集,将服务集中当前需要对外发布的服务注册信息输入服务注册中心,注册消息包含需注册服务的名称、服务版本号、服务所在服务节点的IP地址和接口号,以及服务所在容器的ID号;
步骤4:服务注册中心接收到由服务节点内容器发送的服务注册信息后,存储服务注册信息,并提取服务名称、服务版本号、服务所在容器的ID号,并依据黑白名单规则,针对记录在白名单中的客户端,向它推送所有有关该注册服务的服务信息;针对记录在黑名单中的客户端,则拒绝推送;
步骤5:客户端接收由服务注册中心发送的服务名称、服务版本号、服务所在容器的ID号和服务所在容器的编号,并将接收到的上述信息缓存至本地,保存在客户端的服务列表中;
所述服务列表,存储关于某一项服务的服务名称、服务版本号、服务所在容器的ID号等;
步骤6:当客户端有服务调用需求时,从本地缓存中获取服务列表,当客户端有服务调用需求时,从本地缓存中获取服务列表,综合考虑客户端调用需求、客户端版本、调用服务的版本及调用服务的当前版本更新情况,在服务列表中进行筛选,确定唯一且合适的装载调用服务的服务节点和容器;步骤6中,客户端本地缓存有关于某一项服务多个版本的信息,客户端在服务调用过程中,能根据客户端版本和服务调用需求,选择合适的服务版本进行调用;
步骤7:客户端根据经步骤6筛选出的服务,将服务的服务名称、服务版本号、服务所在容器的ID号形成服务调用请求,按照服务所在服务节点的IP地址和接口号,将调用请求发送至对应的服务节点处理;
步骤8:服务节点接收到服务调用请求后,解析请求内容,获取欲调用服务所在容器的ID号,并根据容器ID号选择该服务所在的容器对服务调用请求进行处理;
步骤9:服务节点将服务调用请求发送至步骤8中已选择的容器,由接收调用请求的容器根据请求信息中的服务名称及服务版本号,找到容器中服务集内对应的服务,执行服务并将结果反馈至客户端;
步骤10:针对正在运行的服务节点,如欲向服务节点内添加服务集或卸载服务集时,由接收到请求的服务节点根据请求指令执行容器的启动或关闭;在新添服务集和卸载服务集的过程中,以容器隔离新添的服务集与其他服务集、欲卸载的服务集与其他服务集的联系,使客户端对其他容器内的服务集调用不会受到更新和卸载的影响。
2.根据权利要求1所述的一种基于容器的服务多版本实现方法,其特征在于,步骤1中所述服务集仓库和所述容器不同属于一个概念,所述服务集仓库中存储所有当前需要发布的服务集的配置信息,而所述容器是用于加载所述服务集仓库中的某一个服务集的内容。
3.根据权利要求1所述的一种基于容器的服务多版本实现方法,其特征在于,步骤2中所述服务节点的运行过程中,服务节点能通过启动容器、停止容器、发布服务集的操作,动态地操作容器装载需要发布的服务集或停止正在运行的容器。
4.根据权利要求1所述的一种基于容器的服务多版本实现方法,其特征在于,步骤6中所述的综合客户端调用需求、客户端版本、调用服务的版本及调用服务的当前版本更新情况,对服务列表的筛选步骤包括:(1)根据服务名称和版本号,从服务列表中筛选出符合要求的服务;(2)在服务列表中,如果匹配到服务名称,但是无法匹配版本号,则选择版本号最大的服务进行匹配;(3)从筛选出的服务中,依据相应的负载均衡算法逻辑,选择出装载该服务的唯一服务节点内的容器,向筛选出的容器发送服务调用请求。
5.根据权利要求1所述的一种基于容器的服务多版本实现方法,其特征在于,在所述步骤10中,当应用更新过程中需要新添服务集时,服务节点从服务集仓库中下载服务集,按照服务集配置信息启动服务节点内的容器,并加载新服务集至容器中;容器通过向注册中心发送服务注册信息,实现新版本服务的公开发布;若是停止服务需要卸载服务集时,首先,注册中心从推送服务列表中删除欲停止的服务,并将最新的服务列表推送给所有客户端,以 确保之后不会有请求访问欲停止服务的新请求;然后,注册中心通知服务节点停止服务,当服务节点接收到消息后,将停止服务所在的容器,并执行销毁容器的操作,包括停止服务的对外服务、取消在注册中心内的服务注册。
6.根据权利要求1或4所述一种基于容器的服务多版本实现方法,其特征在于,所述客户端的本地缓存中存有关于某一项服务多个版本的信息,客户端在服务调用过程中,能根据客户端版本和服务调用需求,选择合适的服务版本进行调用;
当服务升级后,客户端仍能在未升级的情况下,正常继续对服务的调用,不会因服务的更新而间断服务的调用;在新版本服务添加成功后,依据客户端版本与服务版本的区别,有不同的服务调用逻辑:若客户端版本号与调用服务的老版本号一致,当服务新版本发布后,客户端按照版本号完全匹配优先原则,依然直接调用老版本服务;只有在服务老版本完全停止后,客户端才会自动访问新版本服务;若客户端版本号和调用服务的老版本号不一致,当服务新版本发布后,客户端直接获取新版本服务集。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611201295.4A CN106789250B (zh) | 2016-12-22 | 2016-12-22 | 一种基于容器的服务多版本共存实现方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611201295.4A CN106789250B (zh) | 2016-12-22 | 2016-12-22 | 一种基于容器的服务多版本共存实现方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106789250A true CN106789250A (zh) | 2017-05-31 |
CN106789250B CN106789250B (zh) | 2018-09-18 |
Family
ID=58899718
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201611201295.4A Active CN106789250B (zh) | 2016-12-22 | 2016-12-22 | 一种基于容器的服务多版本共存实现方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106789250B (zh) |
Cited By (30)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108170820A (zh) * | 2018-01-02 | 2018-06-15 | 联想(北京)有限公司 | 一种容器处理方法、控制服务器及分布式集群 |
CN108572845A (zh) * | 2018-03-15 | 2018-09-25 | 华为技术有限公司 | 分布式微服务集群的升级方法及相关*** |
CN108733406A (zh) * | 2018-05-22 | 2018-11-02 | 山大地纬软件股份有限公司 | 一种支持服务升级版本兼容的微服务开发管理***及方法 |
CN108989072A (zh) * | 2017-06-05 | 2018-12-11 | 阿里巴巴集团控股有限公司 | 一种部署、管理及调用组件的方法及装置 |
CN109150608A (zh) * | 2018-08-22 | 2019-01-04 | 苏州思必驰信息科技有限公司 | 用于语音对话平台的接口服务升级方法及*** |
CN109286604A (zh) * | 2017-07-21 | 2019-01-29 | 阿里巴巴集团控股有限公司 | 实现容器服务的方法、装置以及电子设备 |
CN109302483A (zh) * | 2018-10-17 | 2019-02-01 | 网宿科技股份有限公司 | 一种应用程序的管理方法及*** |
CN109995713A (zh) * | 2017-12-30 | 2019-07-09 | 华为技术有限公司 | 一种微服务框架中的服务处理方法及相关设备 |
CN110018913A (zh) * | 2018-11-29 | 2019-07-16 | 阿里巴巴集团控股有限公司 | 应用合并部署方法、装置、设备及计算机可读存储介质 |
CN110018962A (zh) * | 2019-04-11 | 2019-07-16 | 重庆猪八戒知识产权服务有限公司 | 基于分布式服务框架和注册中心的服务调试方法及*** |
CN110471683A (zh) * | 2019-08-06 | 2019-11-19 | 上海浦东发展银行股份有限公司***中心 | 一种基于智能dns的容器云应用蓝绿发布方法 |
CN110806878A (zh) * | 2019-10-30 | 2020-02-18 | 中国联合网络通信集团有限公司 | 服务管理方法、***和存储介质 |
CN111176723A (zh) * | 2019-12-31 | 2020-05-19 | 上海道客网络科技有限公司 | 基于服务网格和链路版本的服务多版本发布***与方法 |
CN111324361A (zh) * | 2018-12-14 | 2020-06-23 | ***通信集团北京有限公司 | 一种应用升级方法及设备 |
CN111368242A (zh) * | 2020-03-09 | 2020-07-03 | 苏州思必驰信息科技有限公司 | 语义资源发布***及方法和自然语言处理装置及方法 |
CN111741102A (zh) * | 2020-06-18 | 2020-10-02 | 中国银行股份有限公司 | 分布式微服务应用的升级方法及装置 |
CN111857763A (zh) * | 2019-04-30 | 2020-10-30 | 北京达佳互联信息技术有限公司 | 数据处理方法、装置、电子设备及存储介质 |
CN112016928A (zh) * | 2019-05-31 | 2020-12-01 | 华控清交信息科技(北京)有限公司 | 一种支付方法、装置和用于支付的装置 |
CN112083916A (zh) * | 2020-09-10 | 2020-12-15 | 艾普阳科技(深圳)有限公司 | 应用于集成开发环境的版本自适应方法及相关组件 |
CN112416459A (zh) * | 2020-11-23 | 2021-02-26 | 杭州当虹科技股份有限公司 | 一种解决微服务之间版本强依赖的*** |
CN112491942A (zh) * | 2019-09-12 | 2021-03-12 | 曙光信息产业(北京)有限公司 | 集群服务访问方法、装置和计算机设备 |
CN112799682A (zh) * | 2021-04-13 | 2021-05-14 | 杭州太美星程医药科技有限公司 | 一种数据采集与处理***及其运行多版本应用的方法 |
CN112988329A (zh) * | 2021-03-22 | 2021-06-18 | 北京思特奇信息技术股份有限公司 | 一种容器配置管理的方法和*** |
CN113296891A (zh) * | 2021-05-25 | 2021-08-24 | 和美(深圳)信息技术股份有限公司 | 基于平台的多场景知识图谱处理方法及装置 |
CN113821327A (zh) * | 2021-10-14 | 2021-12-21 | 北京皮尔布莱尼软件有限公司 | 一种实例调度方法、***及计算设备 |
CN113986976A (zh) * | 2021-10-29 | 2022-01-28 | 重庆大学 | 一种基于智能多缓存链式处理机的类处理方法与装置 |
CN114115985A (zh) * | 2022-01-25 | 2022-03-01 | 南京云联数科科技有限公司 | 多版本共存的应用服务***、传输方法、设备及存储介质 |
WO2022095678A1 (zh) * | 2020-11-04 | 2022-05-12 | 华云数据控股集团有限公司 | 一种消息推送方法及消息服务*** |
CN114760277A (zh) * | 2022-06-15 | 2022-07-15 | 云账户技术(天津)有限公司 | 一种访问容器化管理应用的方法及装置 |
CN117112123A (zh) * | 2023-02-13 | 2023-11-24 | 深圳市同行者科技有限公司 | 一种基于kubernetes的负载均衡方法和相关设备 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101807168A (zh) * | 2010-03-15 | 2010-08-18 | 北京航空航天大学 | 一种支持版本兼容的数字终端测试环境及其构建方法 |
CN105141452A (zh) * | 2015-08-07 | 2015-12-09 | 北京思特奇信息技术股份有限公司 | 一种基于cxf的高性能服务***及方法 |
US20160092250A1 (en) * | 2014-09-30 | 2016-03-31 | Amazon Technologies, Inc. | Dynamic code deployment and versioning |
CN105653328A (zh) * | 2015-12-29 | 2016-06-08 | 百度在线网络技术(北京)有限公司 | 大内存服务的多版本程序的并存方法和装置 |
-
2016
- 2016-12-22 CN CN201611201295.4A patent/CN106789250B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101807168A (zh) * | 2010-03-15 | 2010-08-18 | 北京航空航天大学 | 一种支持版本兼容的数字终端测试环境及其构建方法 |
US20160092250A1 (en) * | 2014-09-30 | 2016-03-31 | Amazon Technologies, Inc. | Dynamic code deployment and versioning |
CN105141452A (zh) * | 2015-08-07 | 2015-12-09 | 北京思特奇信息技术股份有限公司 | 一种基于cxf的高性能服务***及方法 |
CN105653328A (zh) * | 2015-12-29 | 2016-06-08 | 百度在线网络技术(北京)有限公司 | 大内存服务的多版本程序的并存方法和装置 |
Non-Patent Citations (2)
Title |
---|
DIRK MERKEL: "Docker:lightweight linux containers for consistent development and deployment", 《LINUX JOURNAL》 * |
刘伦: "基于SOA架构的OSGi平台的研究与应用", 《中国优秀硕士论文全文数据库 信息科技辑》 * |
Cited By (49)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108989072B (zh) * | 2017-06-05 | 2021-08-24 | 创新先进技术有限公司 | 一种部署、管理及调用组件的方法及装置 |
CN113852498B (zh) * | 2017-06-05 | 2023-05-23 | 创新先进技术有限公司 | 一种部署、管理及调用组件的方法及装置 |
CN108989072A (zh) * | 2017-06-05 | 2018-12-11 | 阿里巴巴集团控股有限公司 | 一种部署、管理及调用组件的方法及装置 |
CN113852498A (zh) * | 2017-06-05 | 2021-12-28 | 创新先进技术有限公司 | 一种部署、管理及调用组件的方法及装置 |
CN109286604B (zh) * | 2017-07-21 | 2022-01-07 | 阿里巴巴集团控股有限公司 | 实现容器服务的方法、装置以及电子设备 |
CN109286604A (zh) * | 2017-07-21 | 2019-01-29 | 阿里巴巴集团控股有限公司 | 实现容器服务的方法、装置以及电子设备 |
CN109995713B (zh) * | 2017-12-30 | 2020-11-27 | 华为技术有限公司 | 一种微服务框架中的服务处理方法及相关设备 |
CN109995713A (zh) * | 2017-12-30 | 2019-07-09 | 华为技术有限公司 | 一种微服务框架中的服务处理方法及相关设备 |
CN108170820A (zh) * | 2018-01-02 | 2018-06-15 | 联想(北京)有限公司 | 一种容器处理方法、控制服务器及分布式集群 |
CN108170820B (zh) * | 2018-01-02 | 2022-04-22 | 联想(北京)有限公司 | 一种容器处理方法、控制服务器及分布式集群 |
CN108572845A (zh) * | 2018-03-15 | 2018-09-25 | 华为技术有限公司 | 分布式微服务集群的升级方法及相关*** |
CN108733406A (zh) * | 2018-05-22 | 2018-11-02 | 山大地纬软件股份有限公司 | 一种支持服务升级版本兼容的微服务开发管理***及方法 |
CN108733406B (zh) * | 2018-05-22 | 2021-12-21 | 山大地纬软件股份有限公司 | 一种支持服务升级版本兼容的微服务开发管理***及方法 |
CN109150608A (zh) * | 2018-08-22 | 2019-01-04 | 苏州思必驰信息科技有限公司 | 用于语音对话平台的接口服务升级方法及*** |
CN109302483B (zh) * | 2018-10-17 | 2021-02-02 | 网宿科技股份有限公司 | 一种应用程序的管理方法及*** |
CN109302483A (zh) * | 2018-10-17 | 2019-02-01 | 网宿科技股份有限公司 | 一种应用程序的管理方法及*** |
US11316800B2 (en) | 2018-10-17 | 2022-04-26 | Wangsu Science & Technology Co., Ltd. | Method and system for managing applications |
CN110018913B (zh) * | 2018-11-29 | 2023-06-27 | 创新先进技术有限公司 | 应用合并部署方法、装置、设备及计算机可读存储介质 |
CN110018913A (zh) * | 2018-11-29 | 2019-07-16 | 阿里巴巴集团控股有限公司 | 应用合并部署方法、装置、设备及计算机可读存储介质 |
CN111324361A (zh) * | 2018-12-14 | 2020-06-23 | ***通信集团北京有限公司 | 一种应用升级方法及设备 |
CN110018962A (zh) * | 2019-04-11 | 2019-07-16 | 重庆猪八戒知识产权服务有限公司 | 基于分布式服务框架和注册中心的服务调试方法及*** |
CN111857763B (zh) * | 2019-04-30 | 2024-03-12 | 北京达佳互联信息技术有限公司 | 数据处理方法、装置、电子设备及存储介质 |
CN111857763A (zh) * | 2019-04-30 | 2020-10-30 | 北京达佳互联信息技术有限公司 | 数据处理方法、装置、电子设备及存储介质 |
CN112016928B (zh) * | 2019-05-31 | 2024-01-16 | 华控清交信息科技(北京)有限公司 | 一种支付方法、装置和用于支付的装置 |
CN112016928A (zh) * | 2019-05-31 | 2020-12-01 | 华控清交信息科技(北京)有限公司 | 一种支付方法、装置和用于支付的装置 |
CN110471683B (zh) * | 2019-08-06 | 2023-11-24 | 上海浦东发展银行股份有限公司***中心 | 一种基于智能dns的容器云应用蓝绿发布方法 |
CN110471683A (zh) * | 2019-08-06 | 2019-11-19 | 上海浦东发展银行股份有限公司***中心 | 一种基于智能dns的容器云应用蓝绿发布方法 |
CN112491942B (zh) * | 2019-09-12 | 2024-04-16 | 曙光信息产业(北京)有限公司 | 集群服务访问方法、装置和计算机设备 |
CN112491942A (zh) * | 2019-09-12 | 2021-03-12 | 曙光信息产业(北京)有限公司 | 集群服务访问方法、装置和计算机设备 |
CN110806878A (zh) * | 2019-10-30 | 2020-02-18 | 中国联合网络通信集团有限公司 | 服务管理方法、***和存储介质 |
CN111176723A (zh) * | 2019-12-31 | 2020-05-19 | 上海道客网络科技有限公司 | 基于服务网格和链路版本的服务多版本发布***与方法 |
CN111176723B (zh) * | 2019-12-31 | 2020-11-06 | 上海道客网络科技有限公司 | 基于服务网格和链路版本的服务多版本发布***与方法 |
CN111368242A (zh) * | 2020-03-09 | 2020-07-03 | 苏州思必驰信息科技有限公司 | 语义资源发布***及方法和自然语言处理装置及方法 |
CN111368242B (zh) * | 2020-03-09 | 2022-07-08 | 思必驰科技股份有限公司 | 语义资源发布***及方法和自然语言处理装置及方法 |
CN111741102A (zh) * | 2020-06-18 | 2020-10-02 | 中国银行股份有限公司 | 分布式微服务应用的升级方法及装置 |
CN111741102B (zh) * | 2020-06-18 | 2022-10-18 | 中国银行股份有限公司 | 分布式微服务应用的升级方法及装置 |
CN112083916A (zh) * | 2020-09-10 | 2020-12-15 | 艾普阳科技(深圳)有限公司 | 应用于集成开发环境的版本自适应方法及相关组件 |
WO2022095678A1 (zh) * | 2020-11-04 | 2022-05-12 | 华云数据控股集团有限公司 | 一种消息推送方法及消息服务*** |
CN112416459B (zh) * | 2020-11-23 | 2024-03-01 | 杭州当虹科技股份有限公司 | 一种解决微服务之间版本强依赖的*** |
CN112416459A (zh) * | 2020-11-23 | 2021-02-26 | 杭州当虹科技股份有限公司 | 一种解决微服务之间版本强依赖的*** |
CN112988329A (zh) * | 2021-03-22 | 2021-06-18 | 北京思特奇信息技术股份有限公司 | 一种容器配置管理的方法和*** |
CN112799682A (zh) * | 2021-04-13 | 2021-05-14 | 杭州太美星程医药科技有限公司 | 一种数据采集与处理***及其运行多版本应用的方法 |
CN113296891A (zh) * | 2021-05-25 | 2021-08-24 | 和美(深圳)信息技术股份有限公司 | 基于平台的多场景知识图谱处理方法及装置 |
CN113296891B (zh) * | 2021-05-25 | 2024-04-19 | 和美(深圳)信息技术股份有限公司 | 基于平台的多场景知识图谱处理方法及装置 |
CN113821327A (zh) * | 2021-10-14 | 2021-12-21 | 北京皮尔布莱尼软件有限公司 | 一种实例调度方法、***及计算设备 |
CN113986976A (zh) * | 2021-10-29 | 2022-01-28 | 重庆大学 | 一种基于智能多缓存链式处理机的类处理方法与装置 |
CN114115985A (zh) * | 2022-01-25 | 2022-03-01 | 南京云联数科科技有限公司 | 多版本共存的应用服务***、传输方法、设备及存储介质 |
CN114760277A (zh) * | 2022-06-15 | 2022-07-15 | 云账户技术(天津)有限公司 | 一种访问容器化管理应用的方法及装置 |
CN117112123A (zh) * | 2023-02-13 | 2023-11-24 | 深圳市同行者科技有限公司 | 一种基于kubernetes的负载均衡方法和相关设备 |
Also Published As
Publication number | Publication date |
---|---|
CN106789250B (zh) | 2018-09-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106789250A (zh) | 一种基于容器的服务多版本共存实现方法 | |
CN110324164B (zh) | 一种网络切片的部署方法及装置 | |
AU2009207774B2 (en) | Method and system for deploying non-backward compatible server versions in a client/server computing environment | |
CN102255752B (zh) | 一种服务器集群的配置管理***和方法 | |
CN101179430B (zh) | 一种分布式***软件版本更新控制装置及方法 | |
CN108733406B (zh) | 一种支持服务升级版本兼容的微服务开发管理***及方法 | |
RU2417416C2 (ru) | Развертывание решений в ферме серверов | |
CN113596110B (zh) | 一种面向异构云的云原生微服务平台 | |
CN100403263C (zh) | 按配置下载设备软件的方法 | |
CN107395729A (zh) | 一种消息队列的消费***、方法及装置 | |
CN101877650B (zh) | 一种自动更新软件版本的方法及*** | |
CN105827446A (zh) | 一种智能交通api网关及智能交通业务*** | |
CN101257406B (zh) | 网元发现方法和*** | |
WO2023045256A1 (zh) | 一种镜像的拉取方法、***、计算机设备及可读存储介质 | |
CA3084719A1 (en) | Service registration in a communications network | |
CN104937546A (zh) | 对按需重启执行重启循环、重启调度 | |
US7536688B2 (en) | Segmented virtual machine | |
CN107493191A (zh) | 一种集群节点及自调度容器集群*** | |
CN107168752A (zh) | 一种基于网元管理***的固件升级方法 | |
CN102087599A (zh) | 一种基于J2EE的Web应用***开发方法及装置 | |
WO2017107483A1 (zh) | 一种虚拟化网管文件下载负载均衡的方法及网管服务器 | |
CN104699536A (zh) | 活动组件进程空间分配方法及其相应的装置 | |
CN104793998B (zh) | 终端***资源管理方法及装置 | |
CN101854745A (zh) | 软件版本的传输方法及装置 | |
CN101354720A (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 |