spring cloud config server

微服務-配置中心

最初是將配置文件放在各自的項目,生產環境中修改配置文件需要重啓項目,通用的配置需要修改多處

引入server config,專門創建一個管理配置文件的項目,每個項目特有的配置及通用的配置分開,簡化開發,修改配置文件不需要重啓項目

1.config服務端的相關配置

server config配置git讀取遠端的文件

application.yml如下:

server:
  port: 2224
spring:
  application:
    name: ms-config
  cloud:
    #開啓刷新機制
    bus:
      refresh:
        enabled: true
    config:
      server:
        git:
          #GitHub上面的git倉庫名字
          uri: 
          #分支
          label: master
          #{application}對應訪問服務的應用名
          search-paths: /config-repo/{application}
          username:
          password:
  kafka:
    bootstrap-servers: 127.0.0.1:9092
eureka:
  instance:
    # 使用 ip 代替實例名
    prefer-ip-address: true
    # 實例的主機名
    hostname: ${spring.cloud.client.ip-address}
    # 實例的 ID 規則
    instance-id: ${spring.cloud.client.ip-address}:${spring.application.name}:${server.port}
  client:
    service-url:
      # 註冊中心地址
      defaultZone: http://${eureka.instance.hostname}:2221/eureka/
management:
  endpoints:
    web:
      exposure:
        # yml文件中*不能直接寫,會啓動報錯,加""或者''均可以
        # 由於暫只實現了全部配置文件的刷新,需要寫*
        include: "*"

pom文件中需要加入

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-config-server</artifactId>
</dependency>

由於需要註冊到eureka中,那麼eureka的依賴也是需要的

之後是文件自動刷新所需要的依賴,看是使用kafka還是mq作爲中間件,這裏需要注意不能2箇中間件的依賴都有,啓動會報錯

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-bus-kafka</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-stream-kafka</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-bus</artifactId>
</dependency>

2.準備git項目管理配置文件,當然svn也是可以的

這裏需要注意git上存放的文件地址和前面server config中application.yml文件中的spring.cloud.config.git.search-paths配置項對應,我這裏使用的是/config-repo/{application},config-repo是該項目點擊目錄進去的最外層的目錄,目前以項目名劃分目錄名稱,在config-repo下再新建目錄,比如:/config-repo/user這樣,多個的話可以用以上佔位符的方式,或者寫全路徑,中間以逗號分隔,此處由於該項目不需要啓動,僅做爲文件的存放,寫yml文件或者其他格式的文件時無法得知是否存在格式的問題,當配置完後,提交了git遠端倉庫後,可以訪問url,看是否有返回,比如:http://localhost:2224/user-dev.yml,這裏需要注意如你的文件名稱不是/user,也就是說不和你的服務名稱(spring.application.name)一致時,那麼在config的客戶端中有項配置是不能省略的

3.開發客戶端

pom文件中需要的依賴:

config的依賴如下,和服務端的不同需注意

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-config</artifactId>
</dependency>

當然eureka的依賴和文件自動刷新的依賴也是需要添加的,同服務端的依賴一致,注意spring cloud的版本保持一致

以前都是使用的application.yml文件,現在需要新增一個bootstrap.yml,由於加載先後的順序問題,我們需要把需要的信息放到bootstrap.yml文件中,application.yml文件中僅保留端口號和服務名稱就可以了

如下是bootstrap.yml的配置:

spring:
  cloud:
    bus:
      refresh:
        enabled: true
    config:
      label: master
      #以下配置就是前面第二點中說到的,當服務名稱和文件夾的文件不同時,不可以省略的配置項
      name: user
      profile: test
      uri: http://25860h0t91.qicp.vip/git/r/MicroService/sso-config.git
      discovery:
        enabled: true
        service-id: ms-config
  kafka:
    bootstrap-servers: 127.0.0.1:9092
eureka:
  instance:
    prefer-ip-address: true
    hostname: ${spring.cloud.client.ip-address}
    instance-id: ${spring.cloud.client.ip-address}:${spring.application.name}:${server.port}
  client:
    service-url:
      defaultZone: http://${spring.cloud.client.ip-address}:2221/eureka/

最後當你修改並提交了配置文件,需要手動刷新下

請求這個URL http://localhost:2224/actuator/bus-refresh

目前以實現半自動化刷新配置文件

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