日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 前端技术 > javascript >内容正文

javascript

第六篇: 分布式配置中心(Spring Cloud Config)(Finchley版本)V2.0_dev

發(fā)布時(shí)間:2024/9/27 javascript 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 第六篇: 分布式配置中心(Spring Cloud Config)(Finchley版本)V2.0_dev 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

一、簡(jiǎn)介

在分布式系統(tǒng)中,由于服務(wù)數(shù)量巨多,為了方便服務(wù)配置文件統(tǒng)一管理,實(shí)時(shí)更新,所以需要分布式配置中心組件。
在Spring Cloud中,有分布式配置中心組件spring cloud config ,它支持配置服務(wù)放在配置服務(wù)的內(nèi)存中(即本地),也支持放在遠(yuǎn)程Git倉(cāng)庫(kù)中。

在spring cloud config 組件中,分兩個(gè)角色,
一是config server,二是config client。

在企業(yè)中這2個(gè)應(yīng)用都應(yīng)該要注冊(cè)到Eureka-server上面,這樣可以更好的監(jiān)控服務(wù)的狀態(tài)。

二、構(gòu)建Config Server

第1步:創(chuàng)建父工程(maven),父pom文件

<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.0.3.RELEASE</version><relativePath/></parent><modules><module>config-server</module><module>eureka-server</module><module>config-client</module></modules><groupId>com.gblfy</groupId><artifactId>sc-f-chapter6</artifactId><version>0.0.1-SNAPSHOT</version><packaging>pom</packaging><name>sc-f-chapter6</name><description>Demo project for Spring Boot</description><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding><java.version>1.8</java.version><spring-cloud.version>Finchley.RELEASE</spring-cloud.version></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency></dependencies><dependencyManagement><dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId><version>${spring-cloud.version}</version><type>pom</type><scope>import</scope></dependency></dependencies></dependencyManagement><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build></project>

第2步: 創(chuàng)建一個(gè)spring-boot項(xiàng)目,取名為config-server

  • 其pom.xml如下:
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>com.gblfy</groupId><artifactId>sc-f-chapter6</artifactId><version>0.0.1-SNAPSHOT</version></parent><groupId>com.gblfy</groupId><artifactId>config-server</artifactId><version>0.0.1-SNAPSHOT</version><name>config-server</name><description>Demo project for Spring Boot</description><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-client</artifactId></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-config-server</artifactId></dependency></dependencies> </project>

第3步:在程序的入口Application類加上@EnableConfigServer注解開啟配置服務(wù)器的功能

  • 代碼如下:
@SpringBootApplication @EnableConfigServer public class ConfigServerApplication {public static void main(String[] args) {SpringApplication.run(ConfigServerApplication.class, args);}}

第4步:需要在程序的配置文件application.properties文件配置以下:

#注冊(cè)中心地址 eureka:client:serviceUrl:defaultZone: http://localhost:8761/eureka/ #服務(wù)端口號(hào) server:port: 8888 #應(yīng)用名稱 #git遠(yuǎn)程倉(cāng)庫(kù)的配置信息 地址 賬號(hào) 秘鑰 本地保存配置文件的路徑 spring:application:name: config-servercloud:config:server:git:uri: git@github.com:gb-heima/config-rep.gitusername:password:basedir: /Users/Administrator.PC-20180929LWLP/Desktop/springcloud-practical-column/sc-f-chapter6/config/basedir
  • spring.cloud.config.server.git.uri:配置git倉(cāng)庫(kù)地址
  • spring.cloud.config.server.git.searchPaths:配置倉(cāng)庫(kù)路徑
  • spring.cloud.config.server.git.username:訪問(wèn)git倉(cāng)庫(kù)的用戶名
  • spring.cloud.config.server.git.password:訪問(wèn)git倉(cāng)庫(kù)的用戶秘鑰
  • spring.cloud.config.server.git.basedir:保存配置文件的本地路徑
    如果Git倉(cāng)庫(kù)為公開倉(cāng)庫(kù),可以不填寫用戶名和密碼,如果是私有倉(cāng)庫(kù)需要填寫,本例子是公開倉(cāng)庫(kù),放心使用。

第5步:在遠(yuǎn)程倉(cāng)庫(kù)創(chuàng)建倉(cāng)庫(kù)和新增配置文件

  • 在遠(yuǎn)程倉(cāng)庫(kù)創(chuàng)建一個(gè)倉(cāng)庫(kù)名稱為config-re
  • 在config-rep倉(cāng)庫(kù)中新建一個(gè)文件名為config-client-dev.properties
  • 文件中的內(nèi)容屬性如下:
#應(yīng)用名稱 spring:application:name: config-client #環(huán)境分支 env: dev # 測(cè)試遠(yuǎn)程拉取信息1 girl:name: yuxinage: 1
  • 遠(yuǎn)程倉(cāng)庫(kù)地址:https://github.com/gb-heima/config-rep.git

場(chǎng)景測(cè)試1:

  • config-server服務(wù)成功注冊(cè)到eureka-server(注冊(cè)中心)
  • config-server成功從遠(yuǎn)程git倉(cāng)庫(kù)拉取文件并在瀏覽器正常顯示倉(cāng)庫(kù)配置的信息
  • 操作流程如下:

    • 先啟動(dòng)eureka-server工程,端口號(hào)8761
    • 再啟動(dòng)config-server工程,端口號(hào)8888
    • 啟動(dòng)程序:訪問(wèn)http://localhost:8888/config-client-dev.yml
    • 測(cè)試效果圖1:

    • 也可以訪問(wèn):http://localhost:8888/gblfy/dev
    • 效果圖2:
    { "name": "girl", "profiles": [ "dev" ], "label": null, "version": "cfab60b6d3e093ab5227f0694f0f4b5e8a80e9e2", "state": null, "propertySources": [] }

    證明配置服務(wù)中心可以從遠(yuǎn)程程序獲取配置信息

    注:配置好遠(yuǎn)程倉(cāng)庫(kù)信息后,可以通過(guò)配置中心驗(yàn)證配置信息是否正確,正確會(huì)正常顯示,不正確會(huì)有提示,根據(jù)提示進(jìn)行修改即可

    http請(qǐng)求地址和資源文件映射如下:

    • /{application}/{profile}[/{label}]
    • /{application}-{profile}.yml
    • /{label}/{application}-{profile}.yml
    • /{application}-{profile}.properties
    • /{label}/{application}-{profile}.properties

    三、構(gòu)建一個(gè)config client

    第1步:重新創(chuàng)建一個(gè)springboot項(xiàng)目,取名為config-client,
    引入pom依賴如下所示:

    <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>com.gblfy</groupId><artifactId>sc-f-chapter6</artifactId><version>0.0.1-SNAPSHOT</version></parent><groupId>com.gblfy</groupId><artifactId>config-client</artifactId><version>0.0.1-SNAPSHOT</version><name>config-client</name><description>Demo project for Spring Boot</description><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.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-client</artifactId></dependency></dependencies> </project>

    在上面依賴基礎(chǔ)上再添加以下3個(gè)依賴:

    • lombok:省區(qū)寫getset
    • spring-boot-starter-data-jpa:控制臺(tái)輸出sql 操作數(shù)據(jù)庫(kù)
    • mysql-connector-java:數(shù)據(jù)庫(kù)依賴及驅(qū)動(dòng)等信息
    <dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-jpa</artifactId></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId></dependency>

    第2步:添加啟動(dòng)主類

    @SpringBootApplication @EnableEurekaClient @EnableDiscoveryClient public class ConfigClientApplication {public static void main(String[] args) {SpringApplication.run(ConfigClientApplication.class, args);}}

    第3步:全局配置文件bootstrap.yml
    mysql和jpa的配置信息配置到git遠(yuǎn)程倉(cāng)庫(kù)中的config-client-dev.yml文件中
    config-client-dev.yml文件內(nèi)容如下所示:

    #應(yīng)用名稱 spring:application:name: config-client # 數(shù)據(jù)庫(kù)配置datasource:driver-class-name: com.mysql.jdbc.Driverusername: rootpassword: rooturl: jdbc:mysql://127.0.0.1:3306/springcloud_sell?characterEnconding=utf-8&useSSL=false # 控制臺(tái)輸出sqljpa:show-sql: true #環(huán)境分支 env: dev # 測(cè)試遠(yuǎn)程拉取信息 girl:name: yuxinage: 1

    本地bootstrap.yml配置內(nèi)容如下:

    #應(yīng)用名稱 spring:application:name: config-clientcloud:config:discovery:enabled: true # 服務(wù)端應(yīng)用名稱service-id: CONFIG-SERVERprofile: dev #注冊(cè)中心地址 eureka:client:service-url:defaultZone: http://localhost:8761/eureka #服務(wù)端口號(hào) server:port: 8881

    spring.cloud.config.profile

    • dev開發(fā)環(huán)境配置文件
    • test測(cè)試環(huán)境
    • pro正式環(huán)境

    注意,這里配置文件名稱不是application.yml而是替換成bootstrap.yml

    理由如下:
    1、當(dāng)全局配置文件為application.yml時(shí),應(yīng)用啟動(dòng)就會(huì)從配置文件中讀取配置信息,再去將自己的服務(wù)注冊(cè)到eureka-server上面
    2、當(dāng)全局配置文件為bootstrap.yml時(shí),應(yīng)用啟動(dòng)就會(huì)先將服務(wù)注冊(cè)中eureka-server注冊(cè)中心,然后通過(guò)應(yīng)用名稱在注冊(cè)中心找到配置中心的應(yīng)用也就是(CONFIG-SERVER)
    3、CONFIG-SERVER就會(huì)從git遠(yuǎn)程倉(cāng)庫(kù)中拉取配置信息

    舉個(gè)栗子:
    在config-client服務(wù)中配置了mysq數(shù)據(jù)庫(kù)的配置,而mysql的配置信息放到了遠(yuǎn)程的git倉(cāng)庫(kù)中,在本地是沒有的。用application.yml當(dāng)配置文件時(shí),就是啟動(dòng)報(bào)錯(cuò),異常信息時(shí),找不到j(luò)dbc的信息。

    解決方案:
    將application.yml配置文件更名為bootstrap.yml(注文件后綴名.properties也支持)

    本地的bootstrap.yml和遠(yuǎn)程的bootstrap.yml是通過(guò)config-server端,連接git遠(yuǎn)程倉(cāng)庫(kù)拉取配置信息,再通過(guò)應(yīng)用名稱,來(lái)取配置信息,應(yīng)用名稱一致,config-server就可以成功拉取配置信息,config-client在從config-server服務(wù)中拉取配置信息。

    架構(gòu)如圖所示:

    第4步:寫一個(gè)與bootstrap.yml配置文件中信息對(duì)應(yīng)的配置類GirlConfig(用戶去配置文件中的信息)

    @Data @Component @ConfigurationProperties(prefix = "girl") public class GirlConfig {private String name;private Integer age; }

    第5步:程序的入口類GirlController,寫一個(gè)API接口“/girl//info”,返回從配置中心讀取的girl對(duì)象變量的值
    代碼如下:

    @RestController @RequestMapping("/girl") public class GirlController {@Autowiredprivate GirlConfig girlConfig;@GetMapping("/info")public String getGirlInfo() {return "name:" + girlConfig.getName() + "," + girlConfig.getAge();} } 啟動(dòng)config-client,查看控制臺(tái):發(fā)現(xiàn)config-client從config-server應(yīng)用中拉取配置信息 Fetching config from server at : http://PC-20180929LWLP:8888/ 打開網(wǎng)址訪問(wèn):http://localhost:8881/girl//info,網(wǎng)頁(yè)顯示:


    這就說(shuō)明,config-client從config-server獲取了girl對(duì)象的屬性,而config-server是從git遠(yuǎn)程倉(cāng)庫(kù)再區(qū)配應(yīng)用名稱讀取的

    本文源碼下載:

    dev分支(最新企業(yè)實(shí)戰(zhàn)版本):
    https://github.com/gb-heima/springcloud-practical-column/tree/dev/sc-f-chapter6

    master分支(入門版本):
    https://github.com/gb-heima/springcloud-practical-column/tree/master/sc-f-chapter6

    總結(jié)

    以上是生活随笔為你收集整理的第六篇: 分布式配置中心(Spring Cloud Config)(Finchley版本)V2.0_dev的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。