上一篇讲了如何从配置中心读取文件,配置中心如何从git当中读取文件获得属性。当服务实例有成百上千个的时候,一个配置中心可能承载不了压力,这个时候我们可以把配置中心做成集群,从而分散压力,做到负载均衡,达到高可用的目的。
架构图如下:
本篇文章基于上一篇文章进行实现,一共创建了4个微服务程序spring-cloud-eureka-server、spring-cloud-config-1、spring-cloud-config-2和spring-cloud-config-client。
第一步:创建Eureka Server注册中心
Eureka Server注册中心的创建不再作过多的赘述,之前已经有详细的介绍,具体请查看 第二章 Spring Cloud 服务的注册与发现(Eureka Server)
第二步:改造Config Server(spring-cloud-config)
我们将“spring-cloud-config”修改为“spring-cloud-config-1”,因为服务配置中心只有一个的话,体现不了集群的特性,因此我们需要建两个服务配置中心“spring-cloud-config-1”和“spring-cloud-config-2”,两个项目除了项目名和端口不一样意外,其它都一样,我们拿其中一个作详细介绍。
在其pom.xml文件加上EurekaClient的起步依赖spring-cloud-starter-netflix-eureka-client,代码如下:
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
<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>
</dependencies>
第三步:修改application.yml
指定服务注册地址:http://localhost:8080/eureka/
spring:
application:
name: spring-cloud-config
cloud:
config:
server:
git:
username: #1
password: #2
uri: https://github.com/runday/spring-cloud-brimen-file-config #3
search-paths: /brimen #4
default-label: master #5
server:
port: 8089
eureka:
client:
service-url:
defaultZone: http://localhost:8080/eureka/
#1、配置git的用户名(公共仓库不需要配置,可放心使用)
#2、配置git的密码
#3、配置git的地址
#4、配置访问路径
#5、配置分支,默认为master分支
第四步:在入口类application添加@EnableEurekaClient
package com.brimen.springcloudconfig1;
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
@EnableConfigServer
public class SpringCloudConfigApplication1 {
public static void main(String[] args) {
SpringApplication.run(SpringCloudConfigApplication1.class, args);
}
}
第五步:改造Config Client(spring-cloud-config-client)
将其注册微到服务注册中心,作为Eureka客户端,需要pom文件加上起步依赖spring-cloud-starter-netflix-eureka-client,代码如下:
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
<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>
</dependencies>
第六步:在bootstrap.properties指定服务注册地址
spring.application.name=spring-cloud-config-client
server.port=8091
#1、指定服务注册中心的地址
eureka.client.service-url.defaultZone=http://localhost:8080/eureka/
#2、可以从配置中心读取文件
spring.cloud.config.discovery.enabled=true
#3、指定可以从服务注册中心读取的服务id
spring.cloud.config.discovery.serviceId=spring-cloud-config
#4、指定环境
spring.cloud.config.profile=dev
第七步:启动项目
依次启动spring-cloud-eureka-server、spring-cloud-config-1、spring-cloud-config-2和spring-cloud-config-client。