前面的文章中,我们学习了eureka的使用示例,学习了Spring Cloud Config的使用示例。在实际场景中,我们搭建一个
Spring Cloud微服务可能只用到Eureka,但是绝不会搭建一个Spring Cloud微服务可能只用到Spring Cloud Config。所以今天我们来看看Spring Cloud Config 如何和Eureka配合使用。
项目源码托管地址:https://github.com/cddofficial/SpringCloudRepo
目录
1 Spring Cloud Config Server配合eureka使用
1.1 复制得到microservice-config-server-eureka微服务
1.2 修改microservice-config-server-eureka服务
2 Spring Cloud Config Client配合eureka使用
2.1 复制得到microservice-config-client-eureka微服务
2.2 修改microservice-config-client-eureka微服务
1 Spring Cloud Config Server配合eureka使用
1.1 复制得到microservice-config-server-eureka微服务
复制microservice-config-server微服务重命名为microservice-config-server-eureka(至于如何复制这里不再赘述,请看eureka——实战中的 “2.4.1 创建可乐微服务” 的 “复制得到eureka-client-coke”),导入IDE工具中,导入后项目结构如下图:
1.2 修改microservice-config-server-eureka服务
1.2.1 修改pom文件
给pom文件添加eureka client依赖,如下图:
整个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.0.7.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.cdd.cloud</groupId>
<artifactId>microservice-config-server-eureka</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>eureka-server-service-discover</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<!-- eureka client依赖 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
<!-- config server依赖 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-config-server</artifactId>
</dependency>
<!-- test依赖 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<!-- 引入spring cloud的依赖,不能少,主要用来管理Spring Cloud生态各组件的版本 -->
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Finchley.SR2</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<!-- 添加spring-boot的maven插件,不能少,打jar包时得用 -->
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
1.2.2 修改配置文件
修改application.yml配置文件,修改两个地方:一是,配置应用程序名称,二是,把该服务注册到服务注册中心去,截图如下:
整个application.yml文件内容如下:
server:
port: 7070
spring:
application:
name: microservice-config-server-eureka
cloud:
config:
server:
git:
uri: https://github.com/cddofficial/cloud-config-git-repo
eureka:
client:
serviceUrl:
defaultZone: http://localhost:8761/eureka/
instance:
prefer-ip-address: true #显示真实ip,不是必须的
instance-id: ${spring.application.name}:${spring.application.instance_id:${server.port}} #实例id,如, 实力id:端口号
1.2.3 修改启动类
给启动类上打@EnableEurekaClient注解,整个启动类代码如下:
package com.cdd.demo;
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;
@SpringBootApplication
@EnableEurekaClient // 启用 eureak client
@EnableConfigServer // 启用Config server
public class MicroserviceConfigServerApplication {
public static void main(String[] args) {
SpringApplication.run(MicroserviceConfigServerApplication.class, args);
}
}
1.3 测试
启动服务注册中心eureka-server-service-discover,microservice-config-server-eureka。启动成功后,我们来看下服务注册列表,在浏览器中访问:http://localhost:8761/,响应页面如下,可见已经注册到服务注册中心了。
2 Spring Cloud Config Client配合eureka使用
2.1 复制得到microservice-config-client-eureka微服务
复制microservice-config-client项目重命名为microservice-config-client-eureka微服务(至于如何复制这里不再赘述,请看eureka——实战中的 “2.4.1 创建可乐微服务” 的 “复制得到eureka-client-coke”),导入到IDE工具中,项目结构如下图所示:
2.2 修改microservice-config-client-eureka微服务
2.2.1 修改pom文件
给pom文件添加eureka client依赖,如下图:
整个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.0.7.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.cdd.cloud</groupId>
<artifactId>microservice-config-client-eureka</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>eureka-server-service-discover</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<!-- eureka client依赖 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
<!-- config client所在的依赖 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-config</artifactId>
</dependency>
<!-- web依赖 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- test依赖 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<!-- 引入spring cloud的依赖,不能少,主要用来管理Spring Cloud生态各组件的版本 -->
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Finchley.SR2</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<!-- 添加spring-boot的maven插件,不能少,打jar包时得用 -->
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
2.2.2 修改配置文件
修改boostarp.yml文件,修改两处:一是,配置config client获取的属性配置来源(即,从那个Config Server获取配置信息);二是,把该服务注册到服务注册中心去。截图如下:
整个bootstrap.yml文件内容如下:
server:
port: 7071
spring:
application:
name: foobar #与远程配置文件名称有关,可与下面的profile值,拼成foobar-dev
cloud:
config:
enabled: true #Flag to say that remote configuration is enabled. Default true;
discovery:
service-id: microservice-config-server-eureka
eureka:
client:
serviceUrl:
defaultZone: http://localhost:8761/eureka/
instance:
prefer-ip-address: true #显示真实ip,不是必须的
instance-id: ${spring.application.name}:${spring.application.instance_id:${server.port}} #实例id,如, 实力id:端口号
2.2.3 修改启动类
在启动类上添加@EnableEurekaClient注解,整个启动类代码如下:
package com.cdd.demo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
@SpringBootApplication
@EnableEurekaClient // 启用 eureak client
public class MicroserviceConfigClientApplication {
public static void main(String[] args) {
SpringApplication.run(MicroserviceConfigClientApplication.class, args);
}
}
2.3 测试
启动服务注册中心服务eureka-server-service-discover,microservice-config-server-eureka服务,
microservice-config-client-eureka服务。
启动成功后,先看下服务注册列表,在浏览器中访问http://localhost:8761/,响应页面如下图:
可见microservice-config-server-eureka微服务,microservice-config-client-eureka(在配置文件中应用名称配置成foobar了)微服务都注册到服务注册中心了。
接下来在浏览器中访问http://localhost:7071/profile,响应页面如下:
获取到了默认配置,说明我们实战成功了。到这里Spring Cloud Config 配合eureka使用就说完了。当然这块的东西肯定还有很多,大家积极探索欢迎来交流。
我们的搭建Spring Cloud微服务框架系列文章到这里就全部写完了,文章中所有展示例子都是我亲自敲代码实战过的,保证正确无误,大家可以放心参照。有任何需要斧正的地方欢迎大家提出了,我们一起探讨解决!