首先祝自己10.24节日加班快乐,本文记录昨夜奋战到凌晨3点的学习笔记
虽然每天如此。。。。学习的时间都是挤出来的
Spring Cloud Config服务端和config客户端
- 首先祝自己10.24节日加班快乐,本文记录昨夜奋战到凌晨3点的学习笔记
- spring cloud Config介绍:
- 通过以上介绍可以了解到,config分服务端和客户端
- 开始demo新建一个springboot项目(==config服务端==)
- 那么读到配置之后干嘛用呢?接下来使用
- 自此springcloud五个核心组件学习完了,接下来就该搞各种小组件和组件的各种骚操作了
- ★[前4篇文章]()用的[cloud-demo项目git地址](https://gitee.com/s_leilei/cloud-demo.git)
- ★本文章以及之后新的知识记录用的[crazy-cloud项目git地址](https://gitee.com/s_leilei/crazy-cloud.git)也就是前面的那个demo项目整理了一下,操作一样
spring cloud Config介绍:
Spring Cloud Config为分布式系统中的外部化配置提供服务器和客户端支持。使用Config Server,您可以集中管理所有环境中应用程序的外部属性。
特征:
Spring Cloud Config Server功能:HTTP,用于外部配置的基于资源的API(名称-值对,或等效的YAML内容)
加密和解密属性值(对称或不对称)
可轻松地使用Spring Boot应用程序嵌入 @EnableConfigServerConfig Client功能(用于Spring应用程序):
绑定到Config Server并Environment使用远程属性源初始化Spring
加密和解密属性值(对称或不对称
以上摘自官网
通过以上介绍可以了解到,config分服务端和客户端
开始demo新建一个springboot项目(config服务端)
- 新建module依赖如下
我还想把config注册到eureka中,所以添加了eureka的客户端,完整pom如下
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.3.4.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.crazy</groupId>
<artifactId>c-config-server-8411</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>c-config-server-8411</name>
<description>config服务端</description>
<properties>
<java.version>1.8</java.version>
<spring-cloud.version>Hoxton.SR8</spring-cloud.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-config-server</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring-cloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
- 配置文件application.yml
server:
port: 8411 # 设置服务提供者的端口号
eureka:
client:
service-url:
defaultZone: http://crazy1.com:8611/eureka/ #刚启动的时候由于没有启动eureka服务可能会报错,也可以不用这个
spring:
application:
name: E-config-server # 网关项目模块所提供服务的名称
cloud:
config:
server:
git:
uri: https://gitee.com/s_leilei/crazy-cloud-config.git #git地址(我这里是用的码云)
username: git用户名
password: git密码
skip-ssl-validation: false #是否一个SSL证书检测的玩意
- 启动类注解
package com.crazy;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.config.server.EnableConfigServer;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
import org.springframework.context.ApplicationContext;
import org.springframework.core.env.Environment;
@SpringBootApplication
@EnableConfigServer
@EnableEurekaClient
public class ServerConfigApplication {
private static final Logger logger = LoggerFactory.getLogger(ServerConfigApplication.class);
public static void main(String[] args) {
ApplicationContext apps = SpringApplication.run(ServerConfigApplication.class, args);
Environment env = apps.getEnvironment();
logger.info(">>>>>>config服务启动成功");
logger.info(">>>>>>地址: http://{}:{}",env.getProperty("spring.cloud.client.ip-address"),env.getProperty("server.port"));
logger.info("启动成功之后,测试直接通过config-server服务去读取git资源:http://localhost:8411/crazy-client/test/develop");
//url crazy-clinet 资源名 test 文件后缀 develop 分支
}
}
- 项目启动
- 测试通过自己启动的192.168.241.141:8411去读取git上的配置文件。
先看git上的配置文件:如下测试能否通过自己的config服务读取到git上的配置文件第一种访问方式:http://本地config服务IP:端口/git文件名/profilesName(dev或test或其他)/要访问的分支
http://localhost:8411/crazy-client/test/develop第二种访问方式:http://本地config服务IP:端口/git仓库分支/文件名-dev或者test或者其他.yml
http://localhost:8411/develop/crazy-client-dev.yml
- 自此,通过本地的config服务已经成功读取到git仓库里的地址了。总结:
1、新建了一个项目来当作config服务端用来链接自己配置文件存放的地方(我用的码云)。
2、配置了自己的git仓库项目地址。
3、启动之后,通过访问自己本地的config服务去读取码云上存放的配置文件
4、官网上给的访问方式:
/{application}/{profile}[/{label}]
/{application}-{profile}.yml
/{label}/{application}-{profile}.yml
/{application}-{profile}.properties
/{label}/{application}-{profile}.properties
那么读到配置之后干嘛用呢?接下来使用
- 搞一个eureka的服务端来当作config的客户端。(先看之前的配置,在这一章的配置)
向之前服务的注册发现与消费说的, 如果配置注册中心搞集群部署的话,eureka的配置一大堆,以下只是简单的注册中心配置:
eureka的配置还有很多,这里只做测试,配置基本的。 所以我们要把这个配置丢到git上去(可以私仓。不会被别人看到。。。) 先看看git上的关于eureka的配置文件crazy-eureka.yml
为了区分,端口不同,eureka服务名不同。
开始新建moudle→
eureka服务端:当作config客户端
新建springboot项目依赖如下:
pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.3.4.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.crazy</groupId>
<artifactId>c-config-eureka-8611</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>c-config-eureka-8611</name>
<description>config配置eureka的模块</description>
<properties>
<java.version>1.8</java.version>
<spring-cloud.version>Hoxton.SR8</spring-cloud.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-config</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring-cloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
由于config服务端现在能拿到git上的配置,我们让eureka去从config服务端读取git上的配置,所以eureka的配置可以很少。
两个配置文件:application.yml(应用级别配置),bootstrap.yml(系统级别配置)如下
bootstrap.yml配置去哪里拿配置。就像上面的浏览器去拿一样
application.yml配个名字吧。
然后eureka服务的主启动类
启动:我们配置的eureka去http://crazy1.com:8411(本地的config服务。我的localhost是crazy1.com)拿配置。拿的具体配置是develop分支的crazy-eureka文件(不要后缀名)的profile为dev的配置
git上crazy-eureka.yml的dev配置的端口是8611,所以这个eureka启动起来就是8611的端口
并且显示了,config from server at : http://crazy1.com:8411。配置信息来自config服务端,实际上是config服务段去git上读取了配置给了eureka
访问:localhost:8611
再看一眼git上的eureka的配置
成功
比如eureka打成war包了,可以通过命令参数去修改让他去读另一个配置
比如通过maven讲eureka服务打成jar包
把jar扔到桌面去,通过java -jar *.jar [--spring]启动并修改配置
我们让他去执行test不执行dev了。打包的时候是dev啊
桌面shift+右键打开cmd命令窗口或者powershell窗口:
打包的时候是dev,通过命令让他去执行test的配置,应该启动完之后是下面这个配置才对
访问测试:
如果直接在git上改一下配置,让eureka8612也注册到8611里面去会怎么样呢???
好奇宝宝的心态。。。搞一下
git在线编辑,我们改了如下属性:
没弄热部署插件工具,直接手动重启一下吧。。。。。
一样的jar包一样的命令。走起
还是这个地址,看看去
改的配置让eureka去挂到了crazy1.com的eureka注册中心,并且发现了eureka8611中的config服务端。再看看第一个eureka呢
大写的握草。好神奇哦
搞定。手工,完事再去吧sys服务和user服务多搞几个。
自此springcloud五个核心组件学习完了,接下来就该搞各种小组件和组件的各种骚操作了
前面4篇用的demo整理了一下。
新建了一个项目叫crazy-cloud 跟之前的一样。无非多了几个相同的模块。
如下: