第六章、springcloud---配置中心(spring cloud config)服务化和高可用

配置中心(spring cloud config)服务化和高可用

本文中示例代码的引用版本:
org.springframework.boot 版本 :2.1.0.RELEASE
org.springframework.cloud 版本:Greenwich.M1

示例代码-码云 https://gitee.com/sharps/springcloud
第五章中介绍,客户端都是直接调用配置中心的server端来获取配置文件信息。这样就存在了一个问题,客户端和服务端的耦合性太高,如果server端要做集群,客户端只能通过原始的方式来路由,server端改变IP地址的时候,客户端也需要修改配置,不符合springcloud服务治理的理念。springcloud提供了这样的解决方案,我们只需要将server端当做一个服务注册到eureka中,client端去eureka中去获取配置中心server端的服务既可。

第一步:创建eureka服务注册中心

新建module:0601spring-cloud-eureka
从0401spring-cloud-eureka复制该版本服务注册中心包含security权限认证
在server端和client端改造的时候需要做相应修改

第二步:server端改造

新建module:0602spring-cloud-config-server-node1、0602spring-cloud-config-server-node2 从0502spring-cloud-config-server复制

1、添加依赖
		<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>

需要多引入spring-cloud-starter-netflix-eureka-client包,来添加对eureka的支持。

2、配置文件

node1和node2分别设置

server:
  port: 8001 #node1设置8001,node2设置8003
spring:
  application:
    name: spring-cloud-config-server
  cloud:
    config:
      server:
        git:
          uri: https://gitee.com/sharps/springcloud.git # 配置git仓库的地址
          search-paths: config-repo# git仓库地址下的相对地址,可以配置多个,用,分割。
          username: username# git仓库的账号
          password: userpassword# git仓库的密码
  security:
    user:
      name: admin
      password: 123qwe
eureka:
  client:
    serviceUrl:
      defaultZone: http://admin:123qwe@localhost:8000/eureka/ # 注册中心eurka地址 增加了eureka注册中心的配置 增加security 认证
3、启动类

启动类添加@EnableDiscoveryClient激活对配置中心的支持

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

这样server端的改造就完成了。先启动eureka注册中心,在启动server端(node1,node2),在浏览器中访问:http://localhost:8000/ 就会看到server端已经注册了到注册中心了。
按照上篇的测试步骤对server端进行测试服务正常。
在这里插入图片描述

第三步:client客户端改造

新建module:0604spring-cloud-config-client从0503spring-cloud-config-client复制

1、添加依赖
		<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-client</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-actuator</artifactId>
		</dependency>

需要多引入spring-cloud-starter-netflix-eureka-client包,来添加对eureka的支持。

2、配置文件

修改:application.properties

spring.application.name=spring-cloud-config-client
server.port=8002
#spring-boot 2.1.0.RELEASE  actuator 配置
management.endpoint.health.show-details=always
#Default: ["health", "info"]  Endpoint IDs that should be included or '*' for all.
management.endpoints.web.exposure.include=*

修改:bootstrap.properties

spring.cloud.config.name=test-config
spring.cloud.config.profile=dev
#非服务注册中心式,直接指向server端地址的配置
#spring.cloud.config.uri=http://localhost:8001/
spring.cloud.config.label=master
#开启Config服务发现支持
spring.cloud.config.discovery.enabled=true
#指定server端的name,也就是server端spring.application.name的值
spring.cloud.config.discovery.serviceId=spring-cloud-config-server
# 注册中心eurka地址 增加了eureka注册中心的配置 增加security 认证
eureka.client.serviceUrl.defaultZone=http://admin:123qwe@localhost:8000/eureka/

主要是去掉了spring.cloud.config.uri直接指向server端地址的配置,增加了最后的三个配置:

  • spring.cloud.config.discovery.enabled :开启Config服务发现支持
  • spring.cloud.config.discovery.serviceId :指定server端的name,也就是server端spring.application.name的值
  • eureka.client.serviceUrl.defaultZone :指向配置中心的地址
3、启动类

启动类添加@EnableDiscoveryClient激活对配置中心的支持

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

启动client端,在浏览器中访问:http://localhost:8000/ 就会看到server端和client端都已经注册了到注册中心了。
在这里插入图片描述

第四步:高可用测试

为了模拟生产集群环境,我们改动server端的端口为8003,再启动一个server端来做服务的负载,提供高可用的server端支持。
如上图就可发现会有两个server端同时提供配置中心的服务,防止某一台down掉之后影响整个系统的使用。
我们先单独测试服务端,分别访问:http://localhost:8001/test-config/dev、http://localhost:8003/test-config/dev返回信息:

{
    "name": "test-config",
    "profiles": [
        "dev"
    ],
    "label": null,
    "version": "89e8db7c264360c68fbf4cb18035b80faa844920",
    "state": null,
    "propertySources": [
        {
            "name": "https://gitee.com/sharps/springcloud.git/config-repo/test-config-dev.properties",
            "source": {
                "test.hello": "hello im dev success!"
            }
        }
    ]
}

说明两个server端都正常读取到了配置信息。
再次访问:http://localhost:8002/hello,返回:hello im dev success!。说明客户端已经读取到了server端的内容,我们随机停掉一台server端的服务,再次访问http://localhost:8002/hello,返回:hello im dev success!,说明达到了高可用的目的。

项目节点
06spring-cloud-config-eureka
---->0601spring-cloud-eureka 说明:服务注册中心
---->0602spring-cloud-config-server-node1 说明:提供配置文件的存储、以接口的形式将配置文件的内容提供出去。
---->0603spring-cloud-config-server-node2 说明:提供配置文件的存储、以接口的形式将配置文件的内容提供出去。
---->0604spring-cloud-config-client 说明:通过接口获取数据、并依据此数据初始化自己的应用。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值