springcloud学习手册-Config 分布式配置中心

导读 | Config分布式配置中心

一、为什么需要使用配置中心来统一管理配置呢?

通常在一个分布式环境中,同类型的、不同类型的服务往往多达几个或者千上百个服务实例。如果出现数据源、接口等变更时,针对单独一下服务程序员通过手工修改配置就可以了。但对于分布式环境中多达上千、上百的服务实例来说,单单修改配置这项目工作就会耗费程序员很多时间和精力。所以为了更好的解决分布式环境下多台服务实例的配置统一管理问题,程序构架师们引入了统一配置管理的思想来管理作为解决这类难题的解决方案。

我们结合上面这张图可以简单总结,如下:

1、集中管理

2、不同环境不同配置

3、运行期间动态配置,实现不停机情况下配置变更参数数据。

4、自动刷新,客户端获取服务时从配置中心获取最新状态服务。

二、什么是spring cloud Config(分布式配置中心)

Springcloud Config是一个为Spring量身定做的轻量级配置中心,巧妙的将应用运行环境映射为profile,应用版本映射为label。在服务端,基于特定的外部系统(Git、文件系统或者Vault)存储和管理应用配置。它分为服务端和客户端两部分。服务端是配置中心,它是一个独立的服务应用,用来连接配置仓库并为客户端提供获取配置信息、加密、解决信息等访问接口。而客户端是各个微服务应用,它们通过配置吣来管理应用于资源与业务相关的配置内容,并在启动时从配置中心获取和加载配置信息。

三、如何构建springcloud Config 配置中心

主要有三步,可按照下面进行

第一步:创建一个基础的springboot工程,命名可随意。按照惯例在pom.xml中引入spring-cloud-config-server 的相关依赖。具体如下:

说明依赖包还要包含了资源。

  • spring-cloud-dependencies: 配置资源

第二步:创建启动类,使用@EnableConfigServer。这个注解开启config 的服务端功能具体如下:

@EnableConfigServer:说明开启config 。

第三步:配置属性文件,配置application.pxy

配置config 的基础信息,如应用名、服务端口注意下面这个图显示全部信息,不是pxy的格式,具体配置时要按照pxy的缩进格式编写。具体如下:

  • port 服务端口
  • name 服务名称
  • GIT配置 ,如配置uri(仓库位置)、searchPaths(仓库路径下的相对搜索位置,可以配置多个)、username(访问GIT仓库的用户名) 、password(访问GIT仓库的密码),因为config要基于git使用的,所以这里也配置了git的一些属性。

四、验证配置中心是否可用。

服务端我们已经配置创建完成,那怎么验证一下是否可用呢。

第一步:根据GIT配置的仓库位置,在下面创建一下config-repo目录作为配置仓库。并创建4个配置文件表示不同的环境。

其中设置了一个from属性,为每个配置文件分别设置了不同的值,如:

  • from=git-dev-1.0
  • from=git-test-1.0
  • from=git-prod-1.0
  • from=git-default-1.0

第二步:通过如下格式进行访问

第三步:返回JSON结果

可以看到多了个version版本号属性,它对应 的是git上的commit 号。证明git已经管理起来了配置文件这些信息。也说明了git仓库已经对环境配置进行了版本管理,这样用户就可以通过客户端(config 客户端)来方便地访问这些配置内容了。

五、总结

通过面向服务的配置方式,config 完成服务配置的维护,解决了对路由映射实例的维护问题。配置服务器默认采用git来存储配置信息,这样就有助于对环境配置进行版本管理,并且可以通过git客户端工具来方便的管理和访问配置内容。

声明:文章属于个人原创,转载请注明文章出处

原文发布于微信公众号 - 全华班(quanhuaban)

原文发表时间:2018-01-03

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏架构师之路

session一致性架构设计实践

一、缘起 什么是session? 服务器为每个用户创建一个会话,存储用户的相关信息,以便多次请求能够定位到同一个上下文。 Web开发中,web-server可...

4429
来自专栏老秦求学

uefi+gpt安装双系统

1504
来自专栏Android干货

安卓开发-问题集-Description Resource Path Location TypeUnparsed aapt error(s)! Check the console for output

41314
来自专栏杨建荣的学习笔记

PostgreSQL主备环境搭建

PG学习初体验--源码安装和简单命令(r8笔记第97天) 记得在2年前写过一篇PostgreSQL的文章,当时处于兴趣,本来想在工作中接一下PG的业务,最后因为...

4275
来自专栏ascii0x03的安全笔记

VirtualBox - RTR3InitEx failed with rc=-1912 (rc=-1912)

有一天重启电脑后虚拟机virtual box突然打不开了,提示类似 https://askubuntu.com/questions/900794/virtual...

3665
来自专栏Java工程师日常干货

【SpringBoot专题】监控健康状况前言监控插件:actuatorSpring Boot Admin:可视化后台管理系统总结

想一想,我们以前是如何监控一个Java应用的监控状况的?一般而言,我们会在Linux服务器上通过一些命令,比如通过jstat来统计堆内存的使用情况/垃圾回收的情...

3742
来自专栏前端小叙

在window的cmd窗口下运行linux命令

之前看很多视频老师都是用Linux命令操作命令框,感觉很方便,自己在cmd窗口试了一下,所有这些命令都提示不是内部或外部命令,后来发现了windows还有一个p...

3689
来自专栏Java成长之路

线程的实现方式

本文主要介绍线程的3种实现方式和java线程的实现方式。线程是比进程更轻量级的调度执行单位,线程的引入,可以把一个进程的资源分配 和执行调度分开,各个进程既可以...

1185
来自专栏idba

基于consul的Redis高可用方案

这几天在研究如何做Redis的高可用容灾方案,查询了资料和咨询DBA同行,了解到Redis可以基于consul和sentinel实现读写分离以及HA高可用方案。...

1761
来自专栏我的小碗汤

nginx学习笔记

中间件位于客户机/ 服务器的操作系统之上,管理计算机资源和网络通讯。 是连接两个独立应用程序或独立系统的软件。

1963

扫码关注云+社区