一种基于微服务架构下的不重启动态参数刷新方法技术

技术编号:18951377 阅读:30 留言:0更新日期:2018-09-15 13:29
本发明专利技术公开了一种基于微服务架构下的不重启动态参数刷新方法,该方法基于配置中心的统一的参数配置管理,利用SpringMvc HTTP Long Polling技术将配置中心的配置参数,动态的刷新到微服务的本地缓存系统中;从而第一时间获得配置更新的推送。本发明专利技术可以进行动态扩展和刷新配置参数,以适应微服务的程序使用。该方法还考虑到了配置中心离线环境下微服务获取配置参数的容错机制。

A method of restarting dynamic parameters without restarting based on microservice architecture

The invention discloses a novel method of no-restart parameter refresh based on the micro-service architecture, which is based on the unified parameter configuration management of the configuration center and uses the Spring Mvc HTTP Long Polling technology to refresh the configuration parameters of the configuration center dynamically to the local cache system of the micro-service, so as to obtain the first time. You have to configure the updated push. The invention can dynamically expand and refresh configuration parameters to suit the application of micro service programs. The method also takes into account the fault-tolerant mechanism of configuration parameters in the configuration center offline environment.

【技术实现步骤摘要】
一种基于微服务架构下的不重启动态参数刷新方法
本专利技术属于软件
,涉及一种微服务架构下的微服务的不重启动态参数刷新机制,该机制基于HTTPLongPolling及统一的参数配置管理而实现,具体地说是一种基于微服务架构下的不重启动态参数刷新方法。
技术介绍
在微服务架构中,由于服务数量众多,各种配置资源比如服务地址,数据库,缓存,文件系统,消息队列,以及业务相关的配置等都需要进行配置与管理,并且一套系统也需要配置多个环境,如开发环境,测试环境,演示环境,生产环境,如果使用传统的配置文件管理方式,配置文件分散在各个项目中,不易于集中管理和维护。并且传统的配置信息处理方式是将配置信息写入xml、.properties等配置文件中,和应用一起打包,每次修改配置信息,都需要重新进行打包,效率极低,动态配置中心就是为了解决这一问题。动态配置中心也是一个微服务,配置中心每一次的配置修改,都能动态的刷新到注册的每个微服务之中去,每个微服务而不再需要重新打包与重启。要实现配置中心参数的扩展和微服务的配置参数动态刷新,不仅需要考虑到配置中心配置参数的作用范围,集群部署,分布式部署环境等,还要考虑动态刷新的高并发,高可用性,高容错率。那么需要对配置中心的动态刷新进行很好的规划并设计一种成熟可靠的刷新机制。
技术实现思路
鉴于配置中心的配置参数动态刷新的必要性,本专利技术的目的是提供一种基于微服务架构下的不重启动态参数刷新方法,该方法可以进行动态扩展和刷新配置参数,以适应微服务的程序使用。该方法还考虑到了配置中心离线环境下微服务获取配置参数的容错机制。本专利技术的目的通过以下技术方案实现:一种基于微服务架构下的不重启动态参数刷新方法,其特征在于:该方法基于配置中心的统一的参数配置管理,利用SpringMvcHTTPLongPolling技术将配置中心的配置参数,动态的刷新到微服务的本地缓存系统中;具体如下:1)建立一个配置参数的动态刷新集成框架,框架内容包括:配置中心服务端和配置中心客户端两个部分;配置中心服务端:是一个统一的参数配置管理微服务,为各微服务提供一个中心化的外部配置存储与管理服务系统;11)配置服务ConfigService:为配置中心客户端提供配置接口服务;提供配置更新推送接口(基于Httplongpolling);使用SpringDeferredResult实现异步请求处理,从而大大提升了服务性能;目前SpringBoot采用tomcatembed默认配置是最多10000个连接(可以调整),使用了4C8G的虚拟机实测可以支撑10000个连接(一个应用实例只会发起一个长连接),所以基本能够满足高可用需求。12)AdminService;提供配置管理接口,服务对象为Portal;提供配置修改、发布等接口。13)PortalServer;提供Web界面供用户管理配置配置中心客户端:为微服务应用提供配置获取、实时更新等功能,支持客户端Loadbalance、错误重试。2)接入配置中心:每一个微服务客户端标明自身的Id和接入的环境,获取到配置数据;应用方式:以jar包方式提供给微服务系统;动态更新:客户端和服务端保持一个长连接,从而第一时间获得配置更新的推送。配置中心服务端:所有使用配置中心的微服务都需要在配置中心中注册一个Id,用于接入时标识身份及相对应的配置参数集合;配置中心服务端在配置发布后实时推送到客户端,配置发布的过程如下:用户在Portal操作配置发布,Portal调用AdminService的接口操作发布;AdminService发布配置后,发送ReleaseMessage给各个ConfigService;ConfigService收到ReleaseMessage后,通知对应的客户端;配置中心发送发布消息到客户端过程如下:配置中心AdminService在配置发布后,通知所有的ConfigService有配置发布,从而ConfigService通知对应的客户端来拉取最新的配置;在实现上通过数据库实现一个简单的消息队列;实现方式如下:AdminService在配置发布后会往ReleaseMessage表插入一条消息记录,消息内容就是配置发布的配置信息关键值;ConfigService有一个线程会每秒扫描一次ReleaseMessage表,看看是否有新的消息记录;ConfigService如果发现有新的消息记录,那么通知到所有的消息监听器;NotificationController得到配置发布的关键值后,通知对应的客户端;配置中心客户端实现方式如下:客户端发起一个Http请求到ConfigService的NotificationController,不会立即返回结果,而是通过SpringDeferredResult把请求挂起,如果在30秒内没有该客户端关心的配置发布,那么返回Http状态码304给客户端;如果有该客户端关心的配置发布,NotificationControlle调用DeferredResult的setResult方法,传入有配置变化的配置参数信息,同时该请求立即返回;客户端从返回的结果中获取到配置变化的namespace后,立即请求ConfigService获取该配置参数的最新配置。本专利技术可以进行动态扩展和刷新配置参数,以适应微服务的程序使用。该方法还考虑到了配置中心离线环境下微服务获取配置参数的容错机制。附图说明图1是本专利技术的基础模型图;图2是本专利技术的系统架构图;图3是配置中心服务端配置发布后实时推送图;图4是配置中心发布版本消息实现方式图;图5是配置中心通知客户端实现方式图;图6是配置中心客户端获取推送消息实现方式图。具体实施方式以下结合附图和具体实例对本专利技术进行详细说明。本专利技术提出的配置中心动态参数刷新框架包括配置中心服务端和配置中心客户端两个部分。配置中心服务端所有使用配置中心的微服务都需要在配置中心中注册一个Id,用于接入时标识身份及相对应的配置参数集合。为了实现多环境,高可用集群,以及不同微服务配置集合间的配置共享,设计了私有参数和公共参数。为了便于配置参数管理而设计了命名空间加以分组来管理。图3展示了配置中心服务端在配置发布后实时推送到客户端的设计实现的。配置发布的大致过程:用户在Portal操作配置发布;Portal调用AdminService的接口操作发布;AdminService发布配置后,发送ReleaseMessage给各个ConfigService;ConfigService收到ReleaseMessage后,通知对应的客户端;图4展示了配置中心如何发送发布消息到客户端。配置中心AdminService在配置发布后,需要通知所有的ConfigService有配置发布,从而ConfigService可以通知对应的客户端来拉取最新的配置。考虑到配置中心配置参数数据持久化的重要性,以及为了尽可能减少外部依赖,在实现上是通过数据库实现一个简单的消息队列。实现方式如下:AdminService在配置发布后会往ReleaseMessage表插入一条消息记录,消息内容就是配置发布的配置信息关键值。ConfigService有一个线程会每秒扫描一次ReleaseMessage本文档来自技高网...

【技术保护点】
1.一种基于微服务架构下的不重启动态参数刷新方法,其特征在于:该方法基于配置中心的统一的参数配置管理,利用SpringMvc HTTP Long Polling技术将配置中心的配置参数,动态的刷新到微服务的本地缓存系统中;具体如下:1)建立一个配置参数的动态刷新集成框架,框架内容包括:配置中心服务端和配置中心客户端两个部分;配置中心服务端:是一个统一的参数配置管理微服务,为各微服务提供一个中心化的外部配置存储与管理服务系统;11)配置服务Config Service:为配置中心客户端提供配置接口服务,提供配置更新推送接口;12)Admin Service,提供配置管理接口,服务对象为Portal,提供配置修改、发布接口;13)Portal Server,提供Web界面供用户管理配置配置中心客户端,为微服务应用提供配置获取、实时更新功能,支持客户端Load balance、错误重试;2)接入配置中心:每一个微服务客户端标明自身的Id和接入的环境,获取到配置数据;应用方式:以jar包方式提供给微服务系统;动态更新:客户端和服务端保持一个长连接,从而第一时间获得配置更新的推送。

【技术特征摘要】
1.一种基于微服务架构下的不重启动态参数刷新方法,其特征在于:该方法基于配置中心的统一的参数配置管理,利用SpringMvcHTTPLongPolling技术将配置中心的配置参数,动态的刷新到微服务的本地缓存系统中;具体如下:1)建立一个配置参数的动态刷新集成框架,框架内容包括:配置中心服务端和配置中心客户端两个部分;配置中心服务端:是一个统一的参数配置管理微服务,为各微服务提供一个中心化的外部配置存储与管理服务系统;11)配置服务ConfigService:为配置中心客户端提供配置接口服务,提供配置更新推送接口;12)AdminService,提供配置管理接口,服务对象为Portal,提供配置修改、发布接口;13)PortalServer,提供Web界面供用户管理配置配置中心客户端,为微服务应用提供配置获取、实时更新功能,支持客户端Loadbalance、错误重试;2)接入配置中心:每一个微服务客户端标明自身的Id和接入的环境,获取到配置数据;应用方式:以jar包方式提供给微服务系统;动态更新:客户端和服务端保持一个长连接,从而第一时间获得配置更新的推送。2.根据权利要求1所述的基于微服务架构下的不重启动态参数刷新方法,其特征在于:配置中心服务端:所有使用配置中心的微服务都需要在配置中心中注册一个Id,用于接入时标识身份及相对应的配置参数集合;配置中心服务端在配置发布后实时推送到客户端,配置发布的过程如下:用户在Portal操作配置发布,Portal调用AdminService的接口操作发布;AdminService发布配置后,发送Relea...

【专利技术属性】
技术研发人员:徐磊顾永生张斌周捷高沈钢刘刚
申请(专利权)人:江苏电力信息技术有限公司国网江苏省电力公司
类型:发明
国别省市:江苏,32

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1