简介
当我们的业务系统越来越庞大复杂的时候,各种配置就会层出不群。一旦配置修改了,那么我们就是必须修改后停服务,然后再上线,如果服务少,我们可以手动来操作,如果是成千上百的服务,如果是手动操作,肯定就不合适宜了,然后SpringCloudConfig就出来了,就是我们通常意义上的配置中心,把应用原本放在本地文件的配置抽取出来放在中心服务器,从而能够提供更好的管理、发布能力。
SpringCloudConfig分服务端和客户端,服务端负责将git(svn或本地文件系统)中存储的配置文件发布成REST接口,客户端可以从服务端REST接口获取配置。但客户端并不能主动感知到配置的变化,从而主动去获取新的配置,这需要每个客户端通过POST方法触发各自的/refresh
。
SpringCloudBus通过一个轻量级消息代理连接分布式系统的节点。这可以用于广播状态更改(如配置更改)或其他管理指令。SpringCloudBus提供了通过POST方法访问的endpoint/bus/refresh
,这个接口通常由git的webhook功能调用,用以通知各个SpringCloudConfig的客户端去服务端更新配置,本节就讲怎么搭建一套自动刷新的spring cloud config
一、创建模块
模块结构如下:
二、maven聚合模块microservice-config的pom.xml文件
复制代码 org.springframework.boot spring-boot-starter-parent 1.4.5.RELEASE 4.0.0 com.jacky miroservice-config pom 1.0-SNAPSHOT microservice-config-server microservice-config-eureka microservice-config-client UTF-8 UTF-8 1.8 jacky 192.168.6.132:5000 org.springframework.cloud spring-cloud-dependencies Camden.SR7 pom import org.springframework.boot spring-boot-maven-plugin com.spotify docker-maven-plugin 0.4.13
三、配置中心模块(microservice-config-eureka)
3.1、pom.xml
复制代码 miroservice-config com.jacky 1.0-SNAPSHOT 4.0.0 microservice-config-eureka jar UTF-8 org.springframework.cloud spring-cloud-starter-eureka-server org.springframework.boot spring-boot-starter-security com.spotify docker-maven-plugin build-image install build http://192.168.6.130:5678 true ${docker.repostory}/${docker.image.prefix}/${project.artifactId}:${project.version} java:openjdk-8-jdk-alpine ["java", "-jar", "/${project.build.finalName}.jar"] / ${project.build.directory} ${project.build.finalName}.jar
3.2、application.yml
spring: application: name: microservice-config-serversecurity: basic: enabled: true user: name: jacky password: adminserver: port: 9511eureka: client: register-with-eureka: false fetch-registry: false service-url: defaultZone: http://jacky:admin@localhost:9511/eureka复制代码
3.3、启动类EurekaApplication.java
package com.jacky.cloud; import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer; @SpringBootApplication@EnableEurekaServerpublic class EurekaApplication { public static void main(String[] args) { SpringApplication.run(EurekaApplication.class, args); } }复制代码
3.3、启动类EurekaApplication.java
package com.jacky.cloud; import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer; @SpringBootApplication@EnableEurekaServerpublic class EurekaApplication { public static void main(String[] args) { SpringApplication.run(EurekaApplication.class, args); } }复制代码
四、配置中心服务端(microservice-config-server)
4.1、pom.xml文件
复制代码 miroservice-config com.jacky 1.0-SNAPSHOT 4.0.0 microservice-config-server jar UTF-8 org.springframework.cloud spring-cloud-config-server org.springframework.cloud spring-cloud-starter-eureka org.springframework.cloud spring-cloud-starter-bus-amqp org.springframework.boot spring-boot-starter-security org.springframework.boot spring-boot-starter-actuator com.spotify docker-maven-plugin build-image install build http://192.168.6.130:5678 true ${docker.repostory}/${docker.image.prefix}/${project.artifactId}:${project.version} java:openjdk-8-jdk-alpine ["java", "-jar", "/${project.build.finalName}.jar"] / ${project.build.directory} ${project.build.finalName}.jar
4.2、application.yml文件
server: port: 9518eureka: instance: prefer-ip-address: true # 开启健康检查(需要spring-boot-starter-actuator依赖) lease-expiration-duration-in-seconds: 90 #续约到期时间(单位 S)默认是90S lease-renewal-interval-in-seconds: 30 # 续约更新时间间隔(默认30秒) instance-id: ${spring.application.name}:${spring.cloud.client.ipAddress}:${spring.application.instance_id:${server.port}} client: serviceUrl: defaultZone: http://jacky:admin@localhost:9511/eureka/ #把configservice注册到eureka上,以便于客户端通过eureka上注册的信息找到configservice#实现的基本的 HttpBasic 的认证security: basic: enabled: true # 开启基于HTTP basic的认证 user: name: jacky123 # 配置登录的账号 password: admin123 # 配置登录的密码#spring: application: name: microservice-config-service cloud: config: server: git: uri: http://git.oschina.net/jacky-lulu/microservice-config-repo #配置git仓库位置 clone-on-start: true #在启动的时候克隆仓库 search-paths: '{application}' #配置仓库路径下的相对搜索位置,可以配置多个 username: myuser #填写git仓库的用户名 password: mypass #填写git仓库的密码 rabbitmq: host: 192.168.6.130 port: 5672 username: myuser password: mypass复制代码
Spring Cloud大型企业分布式微服务云构建的B2B2C电子商务平台源码请加企鹅求求:一零三八七七四六二六