SpringCloud之配置中心
隨著微服務越來越多,服務的配置文件也越來越多,這個時候對於配置文件的管理其實可以完全抽離出來,對於項目啟動時需要的配置寫入到bootstrap.yml中,那些可能會經常改變的則放到svn或者git上進行管理,項目啟動時,會去git或者svn上拉取對應的配置文件啟動。
創建配置中心項目
入口文件添加@EnableConfigServer註解
配置文件:
#服務名稱 spring: application: name: config-server cloud: config: server: #這裏填寫你自己的git項目路徑,用戶名密碼 git: uri: https://gitee.com/flyOX/config-center username: flyOX password: ×××××× timeout: 5 default-label: master #服務的端口號 server: port: 9100 #指定註冊中心地址 eureka: client: serviceUrl: defaultZone: http://localhost:8761/eureka/
到這裏那麽配置中心就已經開發完成。
改造業務服務從配置中心獲取配置文件
針對網關、商品服務、訂單服務、我在 https://gitee.com/flyOX/config-center做了相應的一個配置文件。
1.修改application.yml配置文件為bootstrap.yml,該出如下內容:
#指定註冊中心地址 eureka: client: serviceUrl: defaultZone: http://localhost:8761/eureka/ #服務的名稱 spring: application: #name不同業務服務名ServiceId name: order-service #指定從配置中心 cloud: config: discovery: service-id: CONFIG-SERVER enabled: true profile: test
2.pom文件添加Config客戶端包
<!--配置中心客戶端-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-config-client</artifactId>
</dependency>
那麽我們重新啟動項目,一定要註意項目啟動順序:註冊中心->配置中心->產品服務->訂單服務->網關服務。到註冊中心控制臺查看相應服務是否以及啟動起來了。
同時看看相應的服務控制臺輸出的內容:
它是通過拉取git上的文件啟動的。那麽到這裏我們就以及把配置中心啟動起來了。
實現自動拉取最新配置文件
上面可以從git拉取配置文件,但是如果git上文件修改了,又不想通過重啟服務來拉取最新的配置文件我們該怎麽做呢?我們可以通過RabbitMQ+Refresh的方式做自動獲取最新配置。
這裏就是SpringCloud中的Bus:消息總線的方式,如果一旦配置文件修改,就發送一條消息到隊列中,那麽服務接受到消息則去拉取最新配置,這樣就解決了這個問題。
1.安裝一個RabbitMQ,可以通過docker安裝,很快。
2.pom文件中添加依賴:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-bus-amqp</artifactId>
</dependency>
3.在配置文件中添加如下:
spring:
rabbitmq:
host: localhost
port: 5672
username: guest
password: guest
4.暴露全部的監控信息
management:
endpoints:
web:
exposure:
include: "*"
5.需要拉取最新的地方添加@RefreshScope註解
6.http://服務ip:端口/actuator/bus-refresh
備註:動態刷新配置 在開發和測試環境使用,盡量不要或者少在生產環境使用。
參考資料:消息總線
項目文件
SpringCloud之配置中心