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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章