CN113032050A - 配置中心访问方法、系统、电子装置及存储介质 - Google Patents
配置中心访问方法、系统、电子装置及存储介质 Download PDFInfo
- Publication number
- CN113032050A CN113032050A CN202110429293.5A CN202110429293A CN113032050A CN 113032050 A CN113032050 A CN 113032050A CN 202110429293 A CN202110429293 A CN 202110429293A CN 113032050 A CN113032050 A CN 113032050A
- Authority
- CN
- China
- Prior art keywords
- client
- server
- configuration file
- configuration
- virtual user
- 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
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/445—Program loading or initiating
- G06F9/44505—Configuring for program initiating, e.g. using registry, configuration files
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1446—Point-in-time backing up or restoration of persistent data
- G06F11/1458—Management of the backup or restore process
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/602—Providing cryptographic facilities or services
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
- G06F21/6218—Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- General Health & Medical Sciences (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- Databases & Information Systems (AREA)
- Quality & Reliability (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请涉及一种云技术,揭露了一种配置中心访问方法,该方法包括:通过第一虚拟用户与Git仓库建立连接并对所述服务端进行鉴权;接收客户端通过第二虚拟用户发送的获取配置文件的请求;根据所述第二虚拟用户对所述客户端进行鉴权,当服务端和客户端均鉴权通过后,从所述Git仓库读取与所述请求相应的配置文件并发送给所述客户端。本申请还提供一种配置中心访问系统、电子装置及计算机可读存储介质。本申请提供的配置中心访问方法、系统、电子装置及计算机可读存储介质能够在原生配置中心的基础上,对服务端和客户端进行鉴权,且可在服务端无法正常连接Git仓库时由服务端对客户端进行本地鉴权,以保证访问时的安全性。
Description
技术领域
本申请涉及云技术,尤其涉及一种配置中心访问方法、系统、电子装置及计算机可读存储介质。
背景技术
针对时下主流的Spring Cloud生态框架的微服务,基于Spring Cloud Config的配置中心可以无缝适配,并整合同在Spring Cloud框架下的eureka、health等组件功能,以实现服务注册、服务健康状态监测、配置刷新、性能监控、日志收集等框架中包含的组件功能。
为了降低所述配置中心的结构耦合度,需要搭配一个版本管理工具git。配置中心服务端可以通过配置的形式,获取对应的git仓库中的配置文件,由git进行配置文件版本控制,配置中心客户端则通过访问服务端的地址并配置相应配置工程下的访问参数获取对应的配置文件。
但这种方式带来了一系列的问题,如使用的局限性、功能整合的复杂度等。在实际应用中,原生的Spring Cloud Config组件没有自带权限控制功能,无法保证安全。并且,由于客户端对服务端过度依赖的特点,在服务或网络异常条件下需要有灾备的措施。另外,对接git仓库先天存在并发量低下的缺点,针对大量节点的客户端访问,无法保证并发访问条件。因此,若要应用于生产环境,必定要进行改造及搭配其他组件对其优化。
发明内容
有鉴于此,本申请提出一种配置中心访问方法、系统、电子装置及计算机可读存储介质,以解决现有配置中心安全性低、客户端对服务端过度依赖、并发量低下的技术问题。
首先,为实现上述目的,本申请提出一种配置中心访问方法,该方法包括步骤:
通过第一虚拟用户与Git仓库建立连接并对所述服务端进行鉴权;
接收客户端通过第二虚拟用户发送的获取配置文件的请求;及
根据所述第二虚拟用户对所述客户端进行鉴权,当所述服务端和所述客户端均鉴权通过后,从所述Git仓库读取与所述请求相应的所述配置文件并发送给所述客户端。
可选地,所述通过第一虚拟用户与Git仓库建立连接并对所述服务端进行鉴权包括:
将所述第一虚拟用户及对应的第一令牌参数配置在所述服务端的配置文件中,其中,所述第一虚拟用户为在所述Git仓库上建立的用于管理所有客户端配置工程的管理员账号;
所述服务端通过所述第一虚拟用户向所述Git仓库发出连接请求以建立与所述Git仓库的连接,所述Git仓库根据所述第一令牌参数对所述服务端进行权限校验。
可选地,所述方法还包括:
当对所述客户端鉴权通过时,在所述服务端本地写入所述客户端鉴权的映射文件并加密;
当所述服务端连接所述Git仓库异常时,根据所述映射文件对所述客户端进行鉴权。
可选地,所述方法还包括:
当所述服务端每次启动或所述配置文件更新时,在本地即时备份或更新所述配置文件;
当所述服务端连接所述Git仓库异常时,从本地备份中获取所述客户端请求的所述配置文件并发送给所述客户端。
可选地,所述方法还包括:
设置所述客户端的本地缓存功能,以使所述客户端在每次从所述服务端接收到所述配置文件后,在本地缓存所述配置文件;
当所述客户端无法从所述服务端接收到所述配置文件时,从本地缓存中读取所述配置文件。
可选地,所述方法还包括:
在每次收到所述客户端的所述请求时,将获取的所述配置文件内容备份至Redis;
当所述服务端再收到所述客户端的相同请求时,从所述Redis获取对应的所述配置文件并发送给所述客户端。
可选地,所述方法还包括:
当所述Git仓库中的配置文件发生更改时,接收所述Git仓库自动触发的更新指令,并对所述Redis中的与所述发生更改的配置文件相应的配置文件进行更新。
此外,为实现上述目的,本申请还提供一种配置中心访问系统,所述系统包括:
连接模块,用于通过第一虚拟用户与Git仓库建立连接并对所述服务端进行鉴权;
接收模块,用于接收客户端通过第二虚拟用户发送的获取配置文件的请求;及
鉴权模块,用于根据所述第二虚拟用户对所述客户端进行鉴权,当所述服务端和所述客户端均鉴权通过后,从所述Git仓库读取与所述请求相应的所述配置文件并发送给所述客户端。
进一步地,为实现上述目的,本申请还提供一种电子装置,包括存储器、处理器,所述存储器上存储有可在所述处理器上运行的配置中心访问程序,所述配置中心访问程序被所述处理器执行时实现如上述的配置中心访问方法的步骤。
进一步地,为实现上述目的,本申请还提供一种计算机可读存储介质,所述计算机可读存储介质存储有配置中心访问程序,所述配置中心访问程序可被至少一个处理器执行,以使所述至少一个处理器执行如上述的配置中心访问方法的步骤。
相较于现有技术,本申请所提出的配置中心访问方法、系统、电子装置及计算机可读存储介质,可以在原生配置中心的基础上,针对服务端建立第一虚拟账户,针对客户端建立第二虚拟账户,所述服务端的微服务通过所述第一虚拟用户与Git仓库建立连接,所述客户端通过所述第二虚拟用户与所述服务端建立连接,则所述Git仓库可以根据所述第一虚拟账户和第二虚拟账户对所述服务端和所述客户端进行鉴权,在鉴权通过后才能获取所需的配置文件以保证访问时的安全性。
附图说明
图1为实现本申请各个实施例的一种应用环境架构图;
图2为本申请第一实施例提出的一种配置中心访问方法的流程图;
图3为本申请第二实施例提出的一种配置中心访问方法的流程图;
图4为本申请第三实施例提出的一种配置中心访问方法的流程图;
图5为本申请第四实施例提出的一种电子装置的硬件架构示意图;
图6为本申请第五实施例提出的一种配置中心访问系统的模块示意图;
图7为本申请第六实施例提出的一种配置中心访问系统的模块示意图;
本申请目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本申请,并不用于限定本申请。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
需要说明的是,在本申请中涉及“第一”、“第二”等的描述仅用于描述目的,而不能理解为指示或暗示其相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。另外,各个实施例之间的技术方案可以相互结合,但是必须是以本领域普通技术人员能够实现为基础,当技术方案的结合出现相互矛盾或无法实现时应当认为这种技术方案的结合不存在,也不在本申请要求的保护范围之内。
请参阅图1,图1为实现本申请各个实施例的一种应用环境架构图。本申请可应用于包括,但不仅限于配置中心的服务端1、客户端3和Git仓库5的应用环境中。
其中,所述服务端1用于通过与Git仓库5之间的连接和鉴权,在收到客户端3的获取配置文件的请求后,从Git仓库5中为所述客户端3获取相应的配置文件并发送给客户端3。所述Git仓库5为一个版本管理工具,用于对所述服务端1和客户端3进行鉴权和提供所述配置文件。所述客户端3接收到所述配置文件后,根据所述配置文件进行微服务的启动。
所述服务端1可以是机架式服务器、刀片式服务器、塔式服务器或机柜式服务器等计算设备,可以是独立的服务器,也可以是多个服务器所组成的服务器集群。所述客户端3可以为PC(Personal Computer,个人电脑)、手机、平板电脑、便携计算机、可穿戴设备等终端设备。
所述服务端1、客户端3和Git仓库5之间通过有线或无线网络通信连接,以进行数据传输和交互。所述配置中心可以包括一个或多个服务端1,每个服务端1可以连接一个或多个客户端3。
实施例一
参阅图2所示,为本申请第一实施例提出的一种配置中心访问方法的流程示意图。在本实施例中,根据不同的需求,图2所示的流程图中的步骤的执行顺序可以改变,某些步骤可以省略。下面以配置中心服务端作为执行主体对该方法进行说明。
该方法包括:
S200,通过第一虚拟用户与Git仓库建立连接和鉴权。
具体地,配置中心服务端微服务引入Spring Cloud Config组件后,使用Git仓库自带的private token参数进行身份认证。在Git仓库上建立一个管理所有客户端配置工程的第一虚拟用户,作为所述服务端的连接账号,生成对应的private token(第一令牌参数)后配置在所述服务端的配置文件中,并使用Git仓库的API进行权限校验。也就是说,所述服务端的微服务只能通过所述第一虚拟用户的private token(第一令牌参数)与Git仓库建立连接。
所述第一虚拟用户作为服务端配置文件管理用户,具备读写工作目录下所有配置文件的权限,即管理员账号。
所述配置中心可以包括一个或多个服务端,例如服务端A、服务端B,每个所述服务端分别具有对应的第一虚拟用户和本地配置文件。
S202,接收客户端通过第二虚拟用户发送的获取配置文件的请求。
具体地,所述客户端引入所述服务端集成的依赖后,创建Git仓库中对应配置工程的第二虚拟用户并授权,生成private token(第二令牌参数)后配置于所述客户端的本地配置文件中。所述客户端通过第二虚拟用户与所述服务端建立连接,向所述服务端发送获取配置文件的请求。所述客户端的本地配置文件同时包含所述服务端的地址,待访问配置文件所在的分支,标识等。
所述第二虚拟用户作为客户端用户,仅具有相应系统配置文件读写的功能,防止越权请求或修改其他系统配置目录下文件的功能。
S204,根据所述第二虚拟用户对所述客户端进行鉴权,通过后从所述Git仓库读取相应的所述配置文件并发送给所述客户端。
具体地,所述服务端收到所述客户端发送的请求后,根据所述第二虚拟用户对应的private token(第二令牌参数),采用与所述第一虚拟用户类似的方式进行鉴权。当所述服务端和所述客户端均鉴权通过后,所述服务端根据所述请求中的工程信息,包含文件名,分支,标识,从所述Git仓库中获取相应的配置文件,并发送给所述客户端。其中,对所述服务端鉴权通过后,才能成功建立所述服务端与所述Git仓库之间的连接,从所述Git仓库中获取所述配置文件;对所述客户端鉴权通过后,所述服务端才能成功接收到所述客户端发送的请求,并向所述客户端传送所请求的配置文件。
所述客户端接收到所述配置文件后,根据所述配置文件进行微服务的启动。所述客户端启动微服务的具体过程可以采用任意现有的技术方式完成,在此不再赘述。
可选地,该方法还可以包括:
(1)所述服务端在对所述客户端鉴权通过时,在本地写入一个客户端鉴权的映射文件并加密。
具体地,所述服务端每次接收到所述客户端的请求并鉴权通过时,将在本地写入一个客户端鉴权的映射文件并加密。所述映射文件可以作为所述服务端与所述Git仓库断开连接时,所述服务端本地仍能进行高可用校验的依据。所述映射文件会随着每次请求时的鉴权进行更新。
(2)当所述服务端连接所述Git仓库异常时,根据所述映射文件对所述客户端进行鉴权。
具体地,当所述服务端连接所述Git仓库异常时,所述服务端无法通过所述Git仓库的API对所述第二虚拟用户进行权限校验。此时,可以采用所述映射文件中的内容在所述服务端本地完成对所述第二虚拟用户的鉴权。
本实施例提供的配置中心访问方法,可以基于Spring Cloud Config的配置中心进行访问权限控制,在原生配置中心的基础上,对服务端和客户端进行鉴权,且可在服务端无法正常连接Git仓库时由服务端对客户端进行本地鉴权,以保证访问时的安全性。
实施例二
参阅图3所示,为本申请第二实施例提出的一种配置中心访问方法的流程示意图。在本实施例中,所述配置中心访问方法在上述第一实施例的基础上,还包括步骤S300-S304。可以理解,本方法实施例中的流程图不用于对执行步骤的顺序进行限定。根据需要,还可以对该流程图中的部分步骤进行添加或删减。
该方法包括以下步骤:
S300,所述服务端每次启动或文件更新时,在本地即时备份或更新所述配置文件。
具体地,所述服务端配置了每个配置工程对应的本地存储的配置文件的路径,每次所述服务端启动或文件更新时,所述服务端在本地即时备份或更新相应的配置文件。例如,所述服务端备份有配置工程A对应的配置文件A,和配置工程B对应的配置文件B。当有客户端请求所述配置工程A的配置文件时,所述服务端从Git仓库读取最新的配置文件A’,在发送给所述客户端的同时也可以根据配置文件A’将本地的配置文件A进行更新。另外,当所述Git仓库中发生配置文件更新时,也可以主动触发更新指令至所述服务端,使所述服务端对本地备份的配置文件进行相应更新。例如,所述服务端每次启动微服务时,根据Git仓库中提交文件修改的版本号和本地缓存配置文件版本号是否一致决定是否更新本地备份的所述配置文件。
S302,当所述服务端连接所述Git仓库异常时,从本地备份中获取所述客户端请求的所述配置文件并发送给所述客户端。
具体地,当所述服务端连接所述Git仓库异常时,无法从所述Git仓库中读取最新的配置文件发送给所述客户端。此时,所述服务端可以从本地备份中获取所述客户端请求的所述配置文件,然后发送给所述客户端。也就是说,所述服务端可以应急使用本地已备份的配置文件为客户端提供服务。
S304,设置所述客户端的本地缓存功能,以使所述客户端在每次从所述服务端接收到所述配置文件后,在本地缓存所述配置文件。
具体地,在服务端集成的依赖中设置所述客户端的本地缓存功能,配置默认的路径存储供每个客户端自行缓存各自配置文件。客户端本地配置文件还可以包含可选配置的本地缓存配置文件的路径(若无配置,则默认以服务端配置的路径作为缓存路径),以及是否启用本地缓存功能的配置。
所述客户端访问所述服务端(发出请求)时,首先判断是否从远程的所述服务端获取到所需的配置文件。当所述客户端从所述服务端接收到所述配置文件时,根据所述服务端默认配置的路径或所述客户端自定义配置的路径对接收到的所述配置文件进行本地缓存。
当所述客户端无法从所述服务端接收到所述配置文件时,从本地缓存中读取所述配置文件,进行微服务的启动。
具体地,当所述客户端发出请求后未接收到所述服务端返回的配置文件(可能是所述服务端不可用或两端之间的连接出现异常)时,所述客户端可以读取本地缓存的配置文件,载入Spring Cloud上下文中进行微服务的启动。
本实施例提供的配置中心访问方法,可以在服务端本地备份客户端请求的配置文件,从而在服务端连接Git仓库异常时将本地已备份的配置文件提供客户端请求使用。另外,通过设置客户端的本地缓存功能,让客户端缓存于本地的配置文件可在服务端不可用时进行应急启动,降低业务系统对配置中心服务端的依赖程度,提高可用性。
实施例三
参阅图4所示,为本申请第三实施例提出的一种配置中心访问方法的流程示意图。在本实施例中,所述配置中心访问方法在上述第一实施例或第二实施例的基础上,还包括步骤S400-S402。可以理解,本方法实施例中的流程图不用于对执行步骤的顺序进行限定。根据需要,还可以对该流程图中的部分步骤进行添加或删减。
该方法包括以下步骤:
S400,所述服务端在每次收到所述客户端的请求时,将获取的所述配置文件内容备份至Redis。
具体地,本实施例在原生服务端的基础上引入Redis,降低服务端在每次收到客户端请求时都需要与Git仓库建立I/O连接所损耗的性能。每次收到客户端请求时,所述服务端将根据请求的工程信息,包含文件名,分支,标识,以及鉴权通过后从Git仓库获取的配置文件内容进行备份至Redis。
S402,当所述服务端再收到所述客户端的相同请求时,从所述Redis获取对应的所述配置文件并发送给所述客户端。
具体地,后续所述服务端再接收到所述客户端的请求时,若所述请求中的工程信息与之前的请求相同,则从所述Redis获取对应的所述配置文件,将Redis中的所述配置文件内容返回给客户端。上述方式可以保证多实例节点的客户端访问时所需的高并发请求的顺利进行。
值得注意的是,在本实施例中,当所述Git仓库中的配置文件发生更改时,自动触发所述Redis中相应配置文件的更新。
具体地,配置所述Git仓库中的文件更改自动触发接口。当所述Git仓库中的配置文件发生更改时,会请求此接口触发对服务端缓存的Redis中的相应配置文件进行更新,保证客户端每次请求时都能获取到最新的配置文件。
另外,本申请使用Spring Cloud中的actuator组件,进行所述服务端的服务监控及所述客户端的配置刷新。在本实施例中,需要裁剪所述actuator组件,保留/health,/refresh,/metrics,/info这四个基本的功能端口,以消除泄露数据库信息暴露等问题的风险。裁剪后的依赖集成至所述服务端的依赖中。所述客户端可根据自身需求调用/refresh接口刷新微服务中的配置内容,所述服务端也可以根据涉及的定时任务调用的/health等接口监控收集服务状态,当超过阈值时进行告警。
本实施例提供的配置中心访问方法,可以在应对多实例多节点的客户端请求时,利用每次请求时在Redis中记录的配置文件及时提供服务,避免了原生服务端每次都需要读取Git仓库带来的并发访问瓶颈,且通过在Git仓库设置的文件修改触发接口,可以自动灵活地更新Redis中对应的配置文件信息。另外,整合Actuator组件裁剪后的依赖,在保证安全的基础上,提供客户端的刷新,及服务端定时监控节点健康状态的功能,可以有效地对配置服务进行扩展。
实施例四
参阅图5所示,为本申请第四实施例提出一种电子装置2的硬件架构示意图。
本实施例中,所述电子装置2可包括,但不仅限于,可通过系统总线相互通信连接存储器11、处理器12、网络接口13。需要指出的是,图5仅示出了具有组件11-13的电子装置2,但是应理解的是,并不要求实施所有示出的组件,可以替代的实施更多或者更少的组件。在本实施例中,所述电子装置2可以是所述服务端1。
其中,所述存储器11至少包括一种类型的可读存储介质,所述可读存储介质包括闪存、硬盘、多媒体卡、卡型存储器(例如,SD或DX存储器等)、随机访问存储器(RAM)、静态随机访问存储器(SRAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、可编程只读存储器(PROM)、磁性存储器、磁盘、光盘等。在一些实施例中,所述存储器11可以是所述电子装置2的内部存储单元,例如该电子装置2的硬盘或内存。在另一些实施例中,所述存储器11也可以是所述电子装置2的外部存储设备,例如该电子装置2上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。当然,所述存储器11还可以既包括所述电子装置2的内部存储单元也包括其外部存储设备。本实施例中,所述存储器11通常用于存储安装于所述电子装置2的操作系统和各类应用软件,例如配置中心访问系统200的程序代码等。此外,所述存储器11还可以用于暂时地存储已经输出或者将要输出的各类数据。
所述处理器12在一些实施例中可以是中央处理器(Central Processing Unit,CPU)、控制器、微控制器、微处理器、或其他数据处理芯片。该处理器12通常用于控制所述电子装置2的总体操作。本实施例中,所述处理器12用于运行所述存储器11中存储的程序代码或者处理数据,例如运行所述的配置中心访问系统200等。
所述网络接口13可包括无线网络接口或有线网络接口,该网络接口13通常用于在所述电子装置2与其他电子设备之间建立通信连接。
实施例五
参阅图6所示,为本申请第五实施例提出一种配置中心访问系统200的模块示意图。
本实施例中,所述配置中心访问系统200包括一系列的存储于存储器11上的计算机程序指令,当该计算机程序指令被处理器12执行时,可以实现本申请各实施例的配置中心访问操作。在一些实施例中,基于该计算机程序指令各部分所实现的特定的操作,配置中心访问系统200可以被划分为一个或多个模块。例如,在图6中,所述配置中心访问系统200可以被分割成连接模块201、接收模块202、鉴权模块203。其中:
所述连接模块201,用于通过第一虚拟用户与Git仓库建立连接和鉴权。
具体地,配置中心服务端微服务引入Spring Cloud Config组件后,使用Git仓库自带的private token参数进行身份认证。在Git仓库上建立一个管理所有客户端配置工程的第一虚拟用户,作为所述服务端的连接账号,生成对应的private token后配置在所述服务端的配置文件中,并使用Git仓库的API进行权限校验。也就是说,所述服务端的微服务只能通过所述第一虚拟用户的private token与Git仓库建立连接。
所述第一虚拟用户作为服务端配置文件管理用户,具备读写工作目录下所有配置文件的权限,即管理员账号。
所述配置中心可以包括一个或多个服务端,例如服务端A、服务端B,每个所述服务端分别具有对应的第一虚拟用户和本地配置文件。
所述接收模块202,用于接收客户端通过第二虚拟用户发送的获取配置文件的请求。
具体地,所述客户端引入所述服务端集成的依赖后,创建Git仓库中对应配置工程的第二虚拟用户并授权,生成private token后配置于所述客户端的本地配置文件中。所述客户端通过第二虚拟用户与所述服务端建立连接,向所述服务端发送获取配置文件的请求。所述客户端的本地配置文件同时包含所述服务端的地址,待访问配置文件所在的分支,标识等。
所述第二虚拟用户作为客户端用户,仅具有相应系统配置文件读写的功能,防止越权请求或修改其他系统配置目录下文件的功能。
所述鉴权模块203,用于根据所述第二虚拟用户对所述客户端进行鉴权,通过后从所述Git仓库读取相应的所述配置文件并发送给所述客户端。
具体地,所述服务端收到所述客户端发送的请求后,根据所述第二虚拟用户对应的private token,采用与所述第一虚拟用户类似的方式进行鉴权。当所述服务端和所述客户端均鉴权通过后,所述服务端根据所述请求中的工程信息,包含文件名,分支,标识,从所述Git仓库中获取相应的配置文件,并发送给所述客户端。
所述客户端接收到所述配置文件后,根据所述配置文件进行微服务的启动。
可选地,所述鉴权模块203还用于对所述客户端鉴权通过时,在本地写入一个客户端鉴权的映射文件并加密。
具体地,所述服务端每次接收到所述客户端的请求并鉴权通过时,将在本地写入一个客户端鉴权的映射文件并加密。所述映射文件可以作为所述服务端与所述Git仓库断开连接时,所述服务端本地仍能进行高可用校验的依据。所述映射文件会随着每次请求时的鉴权进行更新。
所述鉴权模块203还用于当所述服务端连接所述Git仓库异常时,根据所述映射文件对所述客户端进行鉴权。
具体地,当所述服务端连接所述Git仓库异常时,所述服务端无法通过所述Git仓库的API对所述第二虚拟用户进行权限校验。此时,可以采用所述映射文件中的内容在所述服务端本地完成对所述第二虚拟用户的鉴权。
本实施例提供的配置中心访问系统,可以基于Spring Cloud Config的配置中心进行访问权限控制,在原生配置中心的基础上,对服务端和客户端进行鉴权,且可在服务端无法正常连接Git仓库时由服务端对客户端进行本地鉴权,以保证访问时的安全性。
实施例六
参阅图7所示,为本申请第六实施例提出一种配置中心访问系统200的模块示意图。在本实施例中,所述配置中心访问系统200除了包括第五实施例中的所述连接模块201、接收模块202、鉴权模块203之外,还包括备份模块204、获取模块205、设置模块206。
所述备份模块204,用于在所述服务端每次启动或文件更新时,在本地即时备份或更新所述配置文件。
具体地,所述服务端配置了每个配置工程对应的本地存储的配置文件的路径,每次所述服务端启动或文件更新时,所述服务端在本地即时备份或更新相应的配置文件。例如,所述服务端备份有配置工程A对应的配置文件A,和配置工程B对应的配置文件B。当有客户端请求所述配置工程A的配置文件时,所述服务端从Git仓库读取最新的配置文件A’,在发送给所述客户端的同时也可以根据配置文件A’将本地的配置文件A进行更新。另外,当所述Git仓库中发生配置文件更新时,也可以主动触发更新指令至所述服务端,使所述服务端对本地备份的配置文件进行相应更新。例如,所述服务端每次启动微服务时,根据Git仓库中提交文件修改的版本号和本地缓存配置文件版本号是否一致决定是否更新本地备份的所述配置文件。
所述获取模块205,用于当所述服务端连接所述Git仓库异常时,从本地备份中获取所述客户端请求的所述配置文件并发送给所述客户端。
具体地,当所述服务端连接所述Git仓库异常时,无法从所述Git仓库中读取最新的配置文件发送给所述客户端。此时,所述服务端可以从本地备份中获取所述客户端请求的所述配置文件,然后发送给所述客户端。也就是说,所述服务端可以应急使用本地已备份的配置文件为客户端提供服务。
所述设置模块206,用于设置所述客户端的本地缓存功能,以使所述客户端在每次从所述服务端接收到所述配置文件后,在本地缓存所述配置文件。
具体地,在服务端集成的依赖中设置所述客户端的本地缓存功能,配置默认的路径存储供每个客户端自行缓存各自配置文件。客户端本地配置文件还可以包含可选配置的本地缓存配置文件的路径(若无配置,则默认以服务端配置的路径作为缓存路径),以及是否启用本地缓存功能的配置。
所述客户端访问所述服务端(发出请求)时,首先判断是否从远程的所述服务端获取到所需的配置文件。当所述客户端从所述服务端接收到所述配置文件时,根据所述服务端默认配置的路径或所述客户端自定义配置的路径对接收到的所述配置文件进行本地缓存。
当所述客户端无法从所述服务端接收到所述配置文件时,从本地缓存中读取所述配置文件,进行微服务的启动。
具体地,当所述客户端发出请求后未接收到所述服务端返回的配置文件(可能是所述服务端不可用或两端之间的连接出现异常)时,所述客户端可以读取本地缓存的配置文件,载入Spring Cloud上下文中进行微服务的启动。
所述备份模块204,还用于在每次收到所述客户端的请求时,将获取的所述配置文件内容备份至Redis。
具体地,本实施例在原生服务端的基础上引入Redis,降低服务端在每次收到客户端请求时都需要与Git仓库建立I/O连接所损耗的性能。每次收到客户端请求时,所述服务端将根据请求的工程信息,包含文件名,分支,标识,以及鉴权通过后从Git仓库获取的配置文件内容进行备份至Redis。
所述获取模块205,还用于当所述服务端再收到所述客户端的相同请求时,从所述Redis获取对应的所述配置文件并发送给所述客户端。
具体地,后续所述服务端再接收到所述客户端的请求时,若所述请求中的工程信息与之前的请求相同,则从所述Redis获取对应的所述配置文件,将Redis中的所述配置文件内容返回给客户端。上述方式可以保证多实例节点的客户端访问时所需的高并发请求的顺利进行。
本实施例提供的配置中心访问系统,可以在服务端本地备份客户端请求的配置文件,从而在服务端连接Git仓库异常时将本地已备份的配置文件提供客户端请求使用。另外,通过设置客户端的本地缓存功能,让客户端缓存于本地的配置文件可在服务端不可用时进行应急启动,降低业务系统对配置中心服务端的依赖程度,提高可用性。并且,本系统在应对多实例多节点的客户端请求时,利用每次请求时在Redis中记录的配置文件及时提供服务,避免了原生服务端每次都需要读取Git仓库带来的并发访问瓶颈。
实施例七
本申请还提供了另一种实施方式,即提供一种计算机可读存储介质,所述计算机可读存储介质存储有配置中心访问程序,所述配置中心访问程序可被至少一个处理器执行,以使所述至少一个处理器执行如上述的配置中心访问方法的步骤。
上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本申请各个实施例所述的方法。
以上仅为本申请的优选实施例,并非因此限制本申请的专利范围,凡是利用本申请说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本申请的专利保护范围内。
Claims (10)
1.一种配置中心访问方法,应用于配置中心服务端,其特征在于,所述方法包括:
通过第一虚拟用户与Git仓库建立连接并对所述服务端进行鉴权;
接收客户端通过第二虚拟用户发送的获取配置文件的请求;及
根据所述第二虚拟用户对所述客户端进行鉴权,当所述服务端和所述客户端均鉴权通过后,从所述Git仓库读取与所述请求相应的配置文件并发送给所述客户端。
2.如权利要求1所述的方法,其特征在于,所述通过第一虚拟用户与Git仓库建立连接并对所述服务端进行鉴权包括:
将所述第一虚拟用户及对应的第一令牌参数配置在所述服务端的配置文件中,其中,所述第一虚拟用户为在所述Git仓库上建立的用于管理所有客户端配置工程的管理员账号;
所述服务端通过所述第一虚拟用户向所述Git仓库发出连接请求以建立与所述Git仓库的连接,所述Git仓库根据所述第一令牌参数对所述服务端进行权限校验。
3.如权利要求1所述的方法,其特征在于,所述方法还包括:
当对所述客户端鉴权通过时,在所述服务端本地写入所述客户端鉴权的映射文件并加密;
当所述服务端连接所述Git仓库异常时,根据所述映射文件对所述客户端进行鉴权。
4.如权利要求1所述的方法,其特征在于,所述方法还包括:
当所述服务端每次启动或所述配置文件更新时,在本地即时备份或更新所述配置文件;
当所述服务端连接所述Git仓库异常时,从本地备份中获取所述客户端请求的所述配置文件并发送给所述客户端。
5.如权利要求1或4所述的方法,其特征在于,所述方法还包括:
设置所述客户端的本地缓存功能,以使所述客户端在每次从所述服务端接收到所述配置文件后,在本地缓存所述配置文件;
当所述客户端无法从所述服务端接收到所述配置文件时,从本地缓存中读取所述配置文件。
6.如权利要求1所述的方法,其特征在于,所述方法还包括:
在每次收到所述客户端的所述请求时,将获取的所述配置文件内容备份至Redis;
当所述服务端再收到所述客户端的相同请求时,从所述Redis获取对应的所述配置文件并发送给所述客户端。
7.如权利要求6所述的方法,其特征在于,所述方法还包括:
当所述Git仓库中的配置文件发生更改时,接收所述Git仓库自动触发的更新指令,并对所述Redis中的与所述发生更改的配置文件相应的配置文件进行更新。
8.一种配置中心访问系统,其特征在于,所述系统包括:
连接模块,用于通过第一虚拟用户与Git仓库建立连接并对所述服务端进行鉴权;
接收模块,用于接收客户端通过第二虚拟用户发送的获取配置文件的请求;及
鉴权模块,用于根据所述第二虚拟用户对所述客户端进行鉴权,当所述服务端和所述客户端均鉴权通过后,从所述Git仓库读取与所述请求相应的配置文件并发送给所述客户端。
9.一种电子装置,其特征在于,所述电子装置包括存储器、处理器,所述存储器上存储有可在所述处理器上运行的配置中心访问程序,所述配置中心访问程序被所述处理器执行时实现如权利要求1-7中任一项所述的配置中心访问方法的步骤。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有配置中心访问程序,所述配置中心访问程序可被至少一个处理器执行,以使所述至少一个处理器执行如权利要求1-7中任一项所述的配置中心访问方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110429293.5A CN113032050A (zh) | 2021-04-21 | 2021-04-21 | 配置中心访问方法、系统、电子装置及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110429293.5A CN113032050A (zh) | 2021-04-21 | 2021-04-21 | 配置中心访问方法、系统、电子装置及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113032050A true CN113032050A (zh) | 2021-06-25 |
Family
ID=76457209
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110429293.5A Pending CN113032050A (zh) | 2021-04-21 | 2021-04-21 | 配置中心访问方法、系统、电子装置及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113032050A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113986374A (zh) * | 2021-10-22 | 2022-01-28 | 上海浦东发展银行股份有限公司 | 一种基于鉴权认证的配置信息更新方法、客户端、服务器 |
CN115941779A (zh) * | 2022-11-17 | 2023-04-07 | 中国平安人寿保险股份有限公司 | 一种接口管理方法和装置、电子设备及存储介质 |
CN116192878A (zh) * | 2023-04-27 | 2023-05-30 | 北京微吼时代科技有限公司 | 一种基于Git的配置同步方法及系统 |
-
2021
- 2021-04-21 CN CN202110429293.5A patent/CN113032050A/zh active Pending
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113986374A (zh) * | 2021-10-22 | 2022-01-28 | 上海浦东发展银行股份有限公司 | 一种基于鉴权认证的配置信息更新方法、客户端、服务器 |
CN115941779A (zh) * | 2022-11-17 | 2023-04-07 | 中国平安人寿保险股份有限公司 | 一种接口管理方法和装置、电子设备及存储介质 |
CN115941779B (zh) * | 2022-11-17 | 2024-04-19 | 中国平安人寿保险股份有限公司 | 一种接口管理方法和装置、电子设备及存储介质 |
CN116192878A (zh) * | 2023-04-27 | 2023-05-30 | 北京微吼时代科技有限公司 | 一种基于Git的配置同步方法及系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113032050A (zh) | 配置中心访问方法、系统、电子装置及存储介质 | |
US10437680B2 (en) | Relay apparatus, relay method, and computer program product | |
US7584201B2 (en) | Management of mobile-device data | |
US20070294414A1 (en) | Thin client system using session managing server and session managing method | |
JP6585072B2 (ja) | 不揮発性メモリ又はセキュア素子へのデータの読み込みを安全に行うこと | |
JP2006319811A (ja) | データバックアップシステム | |
CN107682172B (zh) | 控制中心装置、业务系统处理的方法及介质 | |
US10235048B2 (en) | Data processing method and smart device | |
CN110222535B (zh) | 区块链配置文件的处理装置、方法及存储介质 | |
CN109460252B (zh) | 基于git的配置文件处理方法、装置和计算机设备 | |
CN110602136B (zh) | 集群访问方法和相关产品 | |
CN104980926A (zh) | 移动终端的远程控制方法及装置 | |
CN111966529A (zh) | 一种数据库文件实时增量同步备份的方法及系统 | |
CN105303103A (zh) | 保护移动终端中的服务进程的方法和移动终端 | |
CN109831521B (zh) | 缓存实例管理方法、装置、计算机设备和存储介质 | |
CN115396421A (zh) | 数据传输与过滤方法、装置、电子设备及存储介质 | |
CN108491466B (zh) | 电子装置、访问指令信息获取方法及存储介质 | |
CN101616002B (zh) | 一种用户身份验证方法及装置 | |
CN115935414A (zh) | 基于区块链的数据校验方法、装置、电子设备和存储介质 | |
CN114443166B (zh) | 一种共享文件处理方法、装置及介质 | |
CN107172082B (zh) | 一种文件共享方法及系统 | |
CN111654398B (zh) | 一种更新配置的方法、装置、计算机设备及可读存储介质 | |
CN110321251B (zh) | 基于网络块设备的数据备份方法、装置、设备和存储介质 | |
CN112947337A (zh) | 组态同步方法、装置及电子设备 | |
CN112685203A (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 |