代码编织梦想

一、概述

什么是配置中心呢,在基于微服务的分布式系统中,每个业务模块都可以拆分成独立自主的服务,由多个请求来协助完成某个需求,那么在某一具体的业务场景中,某一个请求需要调用多个服务来完成,那么就存在一个问题,多个服务所对应的配置项也是非常多的,每个服务都有自己的配置文件,如果某一个微服务配置进行了修改,那么其他的服务消费者也需要做出对应的调整,如果在每个服务消费者对应的配置文件中去修改的话是非常麻烦的,并且改完后每个服务还需要重新部署。这时候就需要把各个服务的配置进行统一管理,便于部署与维护,所以 Spring Cloud 提出了解决方法,就是 Spring Cloud Config.

Spring Cloud Config 可以通过服务端为多个客户端提供配置服务。Spring Cloud Config 可以将配置文件存储在本地,也可以将配置文件存储在远程仓库中。可以在不重启微服务的前提下来修改它的配置。具体操作就是创建 Config Server,通过它管理所有的配置文件。

二、实战!本地配置中心

  1. 创建 Maven 工程,pom.xml 配置如下:
<dependency>
	<groupId>org.springframework.cloud</groupId>
	<artifactId>spring-cloud-config-server</artifactId>
	<version>2.0.2.RELEASE</version>
</dependency>
  1. 创建 application.yml,配置详情如下:
server:
  port: 8762
spring:
  application:
    name: nativeconfigserver
  profiles:
    active: native
  cloud:
    config:
      server:
        native:
          search-locations: classpath:/shared

注解说明

  • profiles.active:配置文件获取方式,native 表示从本地获取

  • cloud.config.server.native.search-locations:本地配置文件存放的路径,classpath 表示当前文件所在目录

3.resources 路径下创建 shared 文件夹,并且在此目录下创建 configclient-dev.yml,配置文件内容如下:

server:
  port: 8070
foo: foo version 1
  1. 创建启动类,代码如下:
package com.zing;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.config.server.EnableConfigServer;

@SpringBootApplication
@EnableConfigServer
public class NativeConfigServerApplication {
	public static void main(String[] args) throws Exception {
		SpringApplication.run(NativeConfigServerApplication.class, args);
	}

}

注解说明

  • @EnableConfigServer:声明一个配置中心
  1. 创建一个客户端来读取本地配置中心的配置文件,先创建 Maven 项目,pom.xml 配置如下:
    <dependency>
    	<groupId>org.springframework.cloud</groupId>
    	<artifactId>spring-cloud-starter-config</artifactId>
    	<version>2.0.2.RELEASE</version>
    </dependency>
6. 创建一个 bootstrap.yml,文件名必须为这个,不能是 application.yml 这个默认配置文件的名称,因为我们的配置要从配置中心拿,我们只需要写一些其他的配置项信息,如下:
spring:
  application:
    name: configclient
  profiles:
    active: dev
  cloud:
    config:
      uri: http://localhost:8762
      fail-fast: true
注解说明
  • cloud.config.uri:本地 Config Server 的访问路径

  • cloud.config.fail-fase:设置客户端优先判断 Config Server 获取是否正常

  • 通过 spring.application.name 结合 spring.profiles.active 拼接获得目标配置文件名称 configclient-dev.yml,去 Config Server 中查找该文件。

  1. 创建客户端启动类,代码如下:
package com.zing;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class NativeConfigClientApplication {
	public static void main(String[] args) throws Exception {
		SpringApplication.run(NativeConfigClientApplication.class, args);
	}

}
  1. 创建 controller 代码如下:
package com.zing.handler;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping("/native")
public class NativeConfigHandler {
	
	@Value("${server.port}")
	private String port;
	
	@Value("${foo}")
	private String foo;
	
	@GetMapping("/index")
	public String index() {
		return this.port+"-"+this.foo;
	}
	
}
  1. 依次启动配置中心服务 nativeconfigserver 和配置中心客户端 nativeconfigclient,不同启动注册中心,因为也没有配置注册中心地址。两个服务都启动好之后,我们访问 http://localhost:8070/native/index 可以看到如下页面:
    在这里插入图片描述
    结果和我们预想的一样,客户端 nativeconfigclient 读取到了配置中心 nativeconfigserver 的配置文件信息,成功验证了 Spring Cloud Config 的本地配置中心功能。

三、总结

Spring Cloud Config 可以在不重启服务端的前提下通过修改配置中心的配置文件来修改它的配置,便于我们集中化管理集群配置 。 目前除了支持本地存储以外,还可以支持 Git 以及 Subversion。 除了 Spring Cloud Config 配置中心外,还有一个组件是不得不说的,那就是 Spring Cloud Zipkin 服务跟踪,请期待下一篇 我的 Spring Cloud(十):Zipkin 服务跟踪

开发工程师一只,也在不断的学习阶段,平时的小经验不定期分享。 希望看我写的文字的人,可以少走弯路 祝工作学习顺利。
博主经验有限,若有不足,欢迎交流,共同改进~ 愿与同在CSDN的你共同进步。

作者 | 甜蜜的小红薯
出品 | 小红薯

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_36836370/article/details/130901372

@qualifier注解详解-爱代码爱编程

本文来说下@Qualifier注解使用 文章目录 @Autowired注解@Qualifier注解@Primary注解 @Resource注解 @Autowired注解

【开源项目】权限框架nepxion permission原理解析_权限管理开源框架-爱代码爱编程

项目介绍 Nepxion Permission是一款基于Spring Cloud的微服务API权限框架,并通过Redis分布式缓存进行权限缓存。它采用Nepxion Matrix AOP框架进行切面实现,支持注解调用