Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >微服务架构:动态配置中心搭建

微服务架构:动态配置中心搭建

作者头像
烂猪皮
发布于 2020-11-02 06:33:30
发布于 2020-11-02 06:33:30
9290
举报
文章被收录于专栏:JAVA烂猪皮JAVA烂猪皮

微服务架构中,服务之间有着错综复杂的依赖关系,每个服务都有自己的依赖配置,在运行期间很多配置会根据访问流量等因素进行调整,传统的配置信息处理方式是将配置信息写入xml、.properties等配置文件中,和应用一起打包,每次修改配置信息,都需要重新进行打包,效率极低,动态配置中心就是为了解决这一问题。动态配置中心也是一个微服务,我们把微服务中需要动态配置的配置文件存放在远程git私有仓库上,微服务会去服务器读取配置信息,当我们在本地修改完代码push到git服务器,git服务器端hooks自动检测是否有配置文件更新,如果有,git服务端通过消息队列给配置中心发消息,通知配置中心刷新配置文件。

因此微服务读取到的就是最新的配置信息,实现了运行期动态配置。理解了配置中心的原理,下面来介绍应用Spring Cloud框架的configserver搭建动态配置中心的整个过程。


1、Git私有仓库搭建

由于所有配置文件放在Git远程私有仓库上,我们需要搭建Git私有仓库。

1)安装git

# cd /etc/yum.repos.d/

# wget http://geekery.altervista.org/geekery-el5-x86_64.repo

# cd /data/soft/

# wget http://packages.sw.be/rpmforge-release/rpmforge-release-0.5.2-2.el5.rf.x86_64.rpm

# rpm -ivh rpmforge-release-0.5.2-2.el5.rf.x86_64.rpm

# yum -y install git

# git --version

2)搭建git仓库

a、创建一个git用户,用来运行git服务

命令:$ sudo adduser git

b、创建证书登录

收集所有需要登录的用户的公钥,就是他们自己的id_rsa.pub文件,把所有公钥加入到/home/git/.ssh/authorized_keys文件里,一行一个。

c、初始化git仓库

选定或创建一个目录作为Git仓库,如:/home/git/microservice.git,将此目录初始化为git仓库

命令:$ sudo git init --bare microservice.git

$ sudo chown -R git:git microservice.git

d、克隆远程仓库

命令:$ git clone git@192.168.0.136:microservice.git

3)在本地安装git客户端

以上操作完成Git服务端私有仓库搭建后,需要在本地安装Git客户端,并且把公钥加入到服务端的/.ssh/authorized_keys配置文件中,这样就可以在本地克隆服务端代码并向服务端进行推送了。本地Git客户端的安装可参照Git教程。


2、安装消息队列

在远程机器上安装消息队列(rabbitmq)并启动。

3、配置中心相关配置文件

配置中心(配置服务,例如:sample-config)的配置文件application.yml,添加如下配置:

1)configserver的git配置

configserver根据配置的Git服务器地址,去服务器上读取相应的配置文件信息。

uri: 用户名、远程Git服务器地址、私有仓库地址

username: Git服务器用户名(搭建仓库时创建的用户)

password: 用户密码

2)消息队列配置

当Git服务端检测到配置文件有更新时,会通过消息队列通知configserver刷新配置文件。

rabbitmq配置:

host: 消息队列的地址

port: 消息队列端口

username: 用户名

password: 密码

3)Dockerfile配置

由于采用ssh协议访问Git服务器时,需要手动输入确认连接信息,因此在这里我们需要屏蔽此检查。我们需要新建一个配置文件config(无后缀名)跟Dockerfile一起放在容器中,并在Dockerfile中进行配置(新建/.ssh目录,将config文件添加到此目录下)。

部署在容器中的文件:

config文件配置:

Dockerfile配置:


4、在服务中添加消息总线依赖配置

在需要将配置文件放到配置中心进行动态配置的服务中,添加消息总线的配置。

在服务的pom.xml文件中添加依赖:

<dependency>

<groupId>org.springframework.cloud</groupId>

<artifactId>spring-cloud-starter-bus-amqp</artifactId>

</dependency>

5、在Git服务端编写服务端hook

当本地Git客户端向服务端仓库推送更新时,Git服务端需要检测配置文件是否有更新,如果有,则需要向configserver发请求通知它刷新配置文件。这就需要用到服务端hook。在Git服务端的/.git/hooks/目录下,创建post-receive文件(无后缀名),并添加相应的脚本,当Git客户端推送更新,服务端更新完文件后会自动执行此post-receive文件脚本。

6、在本地Git客户端提交修改并推送到Git服务端

在本地更新配置文件后,提交到本地Git仓库,然后将本地更新push到Git服务端。

相关Git命令:

$ git add xxx.xml xx.yml -------将修改的配置文件xxx.xml、xx.yml添加到暂存区

$ git commit -m “xxxxxx”-----将暂存区文件提交到本地Git仓库

$ git push origin master ------将本地更新推送到服务端

以上就是利用configserver实现动态配置中心的整个过程,整个配置完成后就可以在本地修改配置文件push到Git服务器,我们的微服务就可以动态读取到最新的配置了。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-10-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 JAVA烂猪皮 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
SpringCloud微服务技术栈的配置中心SpringCloud Config
随着微服务架构的快速发展,现代化的应用架构越来越依赖于云原生架构、容器化和Kubernetes。在这种背景下,Spring Cloud已经成为了Java开发人员选择构建微服务的首选框架之一。 本文将介绍如何使用Spring Cloud Config作为SpringBoot微服务体系结构的配置中心,让您轻松管理配置信息并独立部署。
青山师
2023/05/05
1860
微服务架构实施原理
作者:风中程序猿,来自:cnblogs.com/fangfuhai 1 题记 基于微服务架构和Docker容器技术的PaaS云平台建设目标是给我们的开发人员提供一套服务快速开发、部署、运维管理、持续开发、持续集成的流程。 平台提供基础设施、中间件、数据服务、云服务器等资源,开发人员只需要开发业务代码并提交到平台代码库,做一些必要的配置,系统会自动构建、部署,实现应用的敏捷开发、快速迭代。 在系统架构上,PaaS云平台主要分为微服务架构、Docker容器技术、DveOps三部分,这篇文章重点介绍微服务架构的实
架构师小秘圈
2018/06/04
1.7K0
「 从0到1学习微服务SpringCloud 」06 统一配置中心Spring Cloud Config
「 从0到1学习微服务SpringCloud 」01 一起来学呀! 「 从0到1学习微服务SpringCloud 」02 Eureka服务注册与发现 「 从0到1学习微服务SpringCloud 」03 Eureka的自我保护机制 「 从0到1学习微服务SpringCloud 」04服务消费者Ribbon+RestTemplate 「 从0到1学习微服务SpringCloud 」05消费者Fegin
KEN DO EVERTHING
2019/03/30
1.1K0
微服务架构Day21-SpringCloud之分布式配置中心
默认情况下不能实时刷新配置文件信息,需要重启服务器才能刷新配置文件,这样不是很方便
攻城狮Chova
2022/01/22
2350
Spring Cloud构建微服务架构:分布式配置中心【Dalston版】
前言 Spring Cloud Config是Spring Cloud团队创建的一个全新项目,用来为分布式系统中的基础设施和微服务应用提供集中化的外部配置支持,它分为服务端与客户端两个部分。其中服务端也称为分布式配置中心,它是一个独立的微服务应用,用来连接配置仓库并为客户端提供获取配置信息、加密/解密信息等访问接口;而客户端则是微服务架构中的各个微服务应用或基础设施,它们通过指定的配置中心来管理应用资源与业务相关的配置内容,并在启动的时候从配置中心获取和加载配置信息。Spring Cloud Config实
程序猿DD
2018/02/01
7860
.NET Core微服务之基于Steeltoe使用Spring Cloud Config统一管理配置
  在分布式系统中,每一个功能模块都能拆分成一个独立的服务,一次请求的完成,可能会调用很多个服务协调来完成,为了方便服务配置文件统一管理,更易于部署、维护,所以就需要分布式配置中心组件了,在Spring Cloud中,就有这么一个分布式配置中心组件 — Spring Cloud Config。
Edison Zhou
2018/09/27
9880
.NET Core微服务之基于Steeltoe使用Spring Cloud Config统一管理配置
Spring Cloud Config服务端配置细节(一)
上篇文章我们看了Spring Cloud中分布式配置中心的一个基本使用,这里边还涉及到许多细节,本文我们就来看看服务端配置中的一些细节。 ---- 我们先通过下面一张图来看看Config Server
江南一点雨
2018/04/02
9440
Spring Cloud Config服务端配置细节(一)
Spring Boot + Spring Cloud 构建微服务系统(九):配置中心(Spring Cloud Config)
如今微服务架构盛行,在分布式系统中,项目日益庞大,子项目日益增多,每个项目都散落着各种配置文件,且随着服务的增加而不断增多。此时,往往某一个基础服务信息变更,都会导致一系列服务的更新和重启,运维也是苦不堪言,而且还很容易出错。于是,配置中心便由此应运而生了。
朝雨忆轻尘
2019/06/19
8070
Spring Boot + Spring Cloud 构建微服务系统(九):配置中心(Spring Cloud Config)
干货|基于 Spring Cloud 的微服务落地
微服务架构模式的核心在于如何识别服务的边界,设计出合理的微服务。但如果要将微服务架构运用到生产项目上,并且能够发挥该架构模式的重要作用,则需要微服务框架的支持。 在Java生态圈,目前使用较多的微服务框架就是集成了包括Netfilix OSS以及Spring的Spring Cloud。它包括: Spring Cloud Config:配置管理工具,支持使用Git存储配置内容,可以实现应用配置的外部化存储,支持客户端配置信息刷新、加密/解密配置内容等。 Spring Cloud Netflix:对Netfl
Java技术栈
2018/06/04
1.7K0
快来学习对微服务进行集中式配置管理的重要机制-服务配置中心吧
服务配置中心是对微服务进行集中式配置管理的重要机制。集中配置管理可以分离应用代码与不同环境下的配置信息,实现应用“一次打包、随处运行”,通过这种外部化的配置管理还可以实现配置修改实时生效、灵活的权限及安全管理等特性。
愿天堂没有BUG
2022/10/28
7030
快来学习对微服务进行集中式配置管理的重要机制-服务配置中心吧
Spring Cloud学习教程2【面试+工作】
Spring Cloud学习教程2【面试+工作】 1. 使用Feign实现声明式的REST调用 1.1. 分析 之前我们通过RestTemplate调用REST服务,代码是这样的: 虽然使用了Ribb
Java帮帮
2018/06/05
1.2K0
一文透析SpringCloud,关于Bus消息总线,总算梳理清楚了
消息代理中间件构建一个共用的消息主题让所有微服务实例订阅,当该消息主题产生消息时会被所有微服务实例监听和消费。
Java程序猿阿谷
2020/07/28
7.3K0
Spring Boot + Spring Cloud 实现权限管理系统 后端篇(二十三):配置中心(Config、Bus)
如今微服务架构盛行,在分布式系统中,项目日益庞大,子项目日益增多,每个项目都散落着各种配置文件,且随着服务的增加而不断增多。此时,往往某一个基础服务信息变更,都会导致一系列服务的更新和重启,运维也是苦不堪言,而且还很容易出错。于是,配置中心便由此应运而生了。
朝雨忆轻尘
2019/06/19
8870
Spring Boot + Spring Cloud 实现权限管理系统 后端篇(二十三):配置中心(Config、Bus)
微服务架构下的核心话题 (三):微服务架构的技术选型
为了实现基于微服务开发的产品,或者说为了将单体应用重构为微服务架构时,将面临着众多技术框架的选择。大公司往往会有专门的部门或团队来负责自主研发自己的框架,以满足产品的需要,但是对于一般的中小型企业,选择合适的开源框架就显得更接地气了。本章将简单介绍微服务中,在技术选型时需要注意哪些原则,一些常用的开源技术框架,希望能够为大家在进行技术选型、调研时提供一些思路方向。
xcbeyond
2020/03/25
8100
微服务架构下的核心话题 (三):微服务架构的技术选型
SpringCloud集成Config分布式配置中心
微服务意味着要将单体应用中的业务拆分成一个个子服务,每个服务的粒度相对较小,因此系统中会出现大量的服务。由于每个服务都需要必要的配置信息才能运行,所以一套集中式的、动态的配置管理设施是必不可少的。
大忽悠爱学习
2021/12/07
3350
SpringCloud集成Config分布式配置中心
Spring Cloud:第六章:Config分布式配置
Spring Cloud Config为分布式系统中的外部配置提供服务器和客户端支持,使用Config Server,您可以在所有环境中管理应用程序的外部属性。客户端和服务器上的概念映射与Spring Environment和PropertySource抽象相同,
Java廖志伟
2022/09/28
5200
Spring Cloud:第六章:Config分布式配置
springcloud:配置中心与Bus消息总线
​ 微服务意味着要将单体应用中的业务拆分成一个个子服务,每个服务的粒度相对较小,因此系统中会出现大量的服务。由于每个服务都需要必要的配置信息才能运行,所以一套集中式的、动态的配置管理设施是必不可少的。 SpringCloud提供了ConfigServer来解决这个问题,我们每一个微服务自己带着一个application.yml,上百个配置文件的管理.…
冷环渊
2021/10/19
8750
基于SpringCloud的微服务架构演变史?
在公司业务初创时期,面对的主要问题是如何将一个想法变成实际的软件实现,在这个时候整个软件系统的架构并没有搞得那么复杂,为了快速迭代,整个软件系统就是由“App+后台服务”组成,而后台服务也只是从工程角度将应用进行Jar包的拆分。此时软件系统架构如下:
用户5927304
2019/07/31
3780
重学SpringCloud系列四之分布式配置中心---上
为了避免参数变化引起的频繁的程序改动,通常我们在应用程序中将常用的一些系统参数、启动参数、数据库参数等等写到配置文件或其他的存储介质里面。
大忽悠爱学习
2022/05/09
9500
重学SpringCloud系列四之分布式配置中心---上
微服务架构中配置中心的选择,Apollo值得拥有
目前公司内部微服务架构基础设施建设中,技术选型以Spring Cloud技术为主,也被大家俗称作“全家桶”。
肉眼品世界
2021/01/25
1.7K0
微服务架构中配置中心的选择,Apollo值得拥有
推荐阅读
相关推荐
SpringCloud微服务技术栈的配置中心SpringCloud Config
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档