天天看點

java B2B2C 源碼 多級分銷Springcloud多租戶電子商城系統-使用spring cloud Bus重新整理配置

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

文章來源

java B2B2C 源碼 多級分銷Springcloud多租戶電子商城系統

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

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

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

針對以上問題,commonservice-config服務端和業務微服務分别做了相關的配置,服務端負責将git(svn或本地檔案系統)中存儲的配置檔案進行配置化,業務微服務通過配置從服務端配置中心擷取相關配置,如果配置檔案變動了,通過重新整理業務微服務的方式,将最新的配置資訊擷取。

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

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

1 建立項目microservice-config-client-refresh-cloud-bus

2 為項目添加spring-cloud-starter-bus-amqp依賴

<dependencies>
    <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.boot</groupId>
      <artifactId>spring-boot-starter-actuator</artifactId>
    </dependency>
    <dependency>
      <groupId>org.springframework.cloud</groupId>
      <artifactId>spring-cloud-starter-bus-amqp</artifactId>
    </dependency>
  </dependencies>           

修改bootstrap.yml内容

spring:
  application:
    name: microservice-foo    # 對應config server所擷取的配置檔案的{application}
  cloud:
    config:
      uri:http://localhost:8080/
      profile: dev            # profile對應config server所擷取的配置檔案中的{profile}
      label: master           # 指定Git倉庫的分支,對應config server所擷取的配置檔案的{label}
  rabbitmq:
    host: localhost
    port: 5672
    username: guest
    password: guest           

測試

1 啟動microservice-config-server。

2 啟動microservice-config-client-refresh-cloud-bus。

3 将microservice-config-client-refresh-cloud-bus端口改為8082,再啟動一個節點。

4 通路

http://localhost:8081/profile,

此時獲得結果:dev-1.0

5 将Git倉庫中的microservice-foo-dev.properties檔案内容修改為profile=dev-1.0-bus

6 發送POST請求到一個Config Client執行個體的/bus/refresh

7 通路兩個Config Client執行個體的/bus/refresh端點,會發現兩個節點都傳回profile=dev-1.0-bus