天天看點

(十六) 整合spring cloud雲架構 -使用spring cloud Bus重新整理配置

我們使用spring cloud分布式微服務雲架構做了b2b2c的電子商務系統,除了架構本身自帶的系統服務外,我們将b2b2c的業務服務進行了細粒度拆分,做成了不同的業務微服務。

當我們的業務系統越來越龐大複雜的時候,各種配置也會随之增多。配置檔案隻要一修改,會對commonservice-config配置中心先停止服務,然後再重新啟動,最後使配置生效。

如果服務少,我們可以手動方式來啟動,但是對業務和系統的穩定性肯定有一定的影響。

如果是成百上千的服務都靠手動操作,我估計運維人員或技術人員會瘋掉的。

針對以上問題,commonservice-config服務端和業務微服務分别做了相關的配置,服務端負責将git(svn或本地檔案系統)中存儲的配置檔案進行配置化(我們使用的是本地配置方案,友善直接将配置檔案更新到linux上),

業務微服務通過配置從服務端配置中心擷取相關配置,如果配置檔案變動了,通過重新整理業務微服務的方式,将最新的配置資訊擷取。

spring cloud Bus通過一個輕量級消息代理連接配接分布式系統的節點。這可以用于廣播狀态更改(如配置更改)或其他管理指令。

接下來,我們就來實施通過spring cloud Bus方案,動态重新整理服務端配置,具體步驟如下:

  1. commonservice-config服務配置可以參考之前的連結:
http://2147775633.iteye.com/admin/blogs/2396692
  1. 業務微服務配置(以honghu-member-servcie會員服務為例)

    pom檔案配置:

<groupId>org.springframework.boot</groupId>  
            <artifactId><span style="font-size: 16px;">spring-boot-starter-actuator</span></artifactId>  
        </dependency>  
          
    <dependency>  
         <groupId>org.springframework.cloud</groupId>  
             <artifactId><span style="font-size: 16px;">spring-cloud-starter-bus-amqp</span></artifactId>  
    </dependency></span>             

yml檔案配置:

port: 5012  
spring:   
  application:  
    name: honghu-member-client  
  profiles:  
    active: dev,discoveryClient  
  cloud:  
    config:  
      discovery:   
        enabled: true  
        service-id: commonservice-config-server  
      <span style="font-size: 16px;"><strong>name: honghu-member  
      profile: dev  
    bus:  
      trace:  
        enabled: true  #開啟消息跟蹤  </strong>          
  <strong>rabbitmq:  
    host: 192.168.1.254  
    port: 5672  
    username: honghu  
    password: honghu</strong>  </span>   
eureka:  
  client:  
    serviceUrl:  
      defaultZone: http://honghu:123456@localhost:8761/eureka/  
  instance:  
    prefer-ip-address: true  
logging:  
  level:  
    root: INFO  
    org.springframework.security: INFO  
management:  
  security:  
    enabled: false  
security:  
  basic:  
    enabled: false</span>             

編寫一個測試類(MemberController.java),用來擷取配置項

<span style="font-size: 16px;">package com.honghu.cloud.controller;  
  
import org.springframework.beans.factory.annotation.Value;  
import org.springframework.cloud.context.config.annotation.RefreshScope;  
import org.springframework.web.bind.annotation.GetMapping;  
import org.springframework.web.bind.annotation.RestController;  
  
<strong>@RefreshScope</strong>  
@RestController  
public class MemberController {  
  
    @Value("${profile}")  
    private String profile;  
  
    @GetMapping("/profile")  
    public String getProfile() {  
        return this.profile;  
    }  
}</span>           
  1. 檢視注冊中心,commonservice-config、honghu-member-service服務是否已經注冊成功
  2. 通路一下profile,擷取profile對應的配置資訊(原配置):

通路

http://localhost:7071/profile

==》 通路結果:123456

  1. 修改config配置中心的配置檔案,将profile=123456修改為honghu123456

再次通路

  1. 使用spring cloud bus 重新整理方案(使用post man測試工具進行測試)
http://localhost:7071/bus/refresh

==》 通路結果:honghu123456

到此,整個commonservice-config配置中心動态重新整理方案整理完畢(企業架構源碼可以加求球:叁五三陸二肆柒二伍玖)

歡迎大家和我一起學習spring cloud建構微服務雲架構,我這邊會将近期研發的spring cloud微服務雲架構的搭建過程和精髓記錄下來,幫助更多有興趣研發spring cloud架構的朋友,大家來一起探讨spring cloud架構的搭建過程及如何運用于企業項目。