Spring Cloud實戰之初級入門(五)— 配置中心服務化與配置實時刷新


1.環境介紹

這一篇文章中我們終於沒有新工程要建了,主要是對現有的工程進行改造。在傳統的開發中,我們可能會把用戶、機構、資源、權限這些比較通用的東西抽取出來做一個底層平台,但是在spring cloud的世界里,所有的都是服務;所有的服務都可以集群部署。

2.配置中心服務化

2.1 改造mirco-service-spring-config

因為我們之前在git上上傳的配置目錄也叫mirco-service-config,所以我把之前的配置中心工程改為了mirco-service-spring-config。

  • 為“mirco-service-spring-config”工程的pom文件中加入
		<dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
		</dependency>
  • 配置文件中加入
eureka:
  client:
    service-url:
      defaultZone: http://localhost:9001/eureka/
  • 為啟動文件加入@EnableDiscoveryClient注解

2.2 改造mirco-service-provider、mirco-service-consumer

主要是配置文件的改動,改動后的bootstrap.yml配置文件如下

spring:
  cloud:
    config:
      discovery:
        service-id: service-config-server #新加入的配置
        enabled: true  #打開配置文件從注冊中心獲取
      #uri: http://localhost:7001/
      profile: test
      name: provider
      label: master
       
eureka:
  client:
    service-url:
      defaultZone: http://localhost:9001/eureka/

因為這里面要從注冊中心找到配置中心,再從配置中心找配置文件,而bootstrap.yml文件啟動的時間比較早,所以這里一定要加入注冊中心的地址。用同樣的方法改造mirco-service-consumer。至此,改造完成。

3. 配置中心實時刷新

我們這里面以mirco-service-consumer為例。

3.1 加入依賴

		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-actuator</artifactId>
		</dependency>

這里的actuator之前在第一章的視頻里面講過,這是一個用來做應用健康檢查的組件,同時也可以做應用配置的刷新。

3.2 加入配置

  • 為了方便演示,我們就直接在bootstrap.yml文件中加入如下配置:
management:
  endpoints:
    web:
      exposure:
        include: "*"

這個配置的意思是放開actuator相關的目錄限制,沒放開之前http://localhost:8002/actuator/env是看不到東西的,能看出說明配置成功。

  • 在MyFristConsumerController上加入@RefreshScope注解,只要類上加了@RefreshScope注解,並且類中有配置文件相關的變量,在應用配置刷新時,都會被更新。

3.3 測試

  • 訪問http://localhost:8002/consumerHelloWorld?name=rose,看到我們的port是8002。
  • 修改github上的consumer.yml,將port改為8003。
  • 使用"curl -X POST http://localhost:8002/actuator/refresh"刷新配置。
  • 重復第一個步驟,可以看到port變為8003。
  • 由於我們這里改的是應用服務的端口,而我們刷新后,在應用中的參數配置確實變了,但訪問端口還是8002,說明這個刷新配置也是有局限的,已啟動的應用實際訪問端口不會變。但下次啟動時會變。

4.一點點重要的事情


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM