Springcloud 2.x 版本 分散式配置中心

来源:https://www.cnblogs.com/wlx-0629/archive/2019/11/14/11863620.html
-Advertisement-
Play Games

一.什麼是分散式配置中心? 就是為微服務架構中的微服務提供集中化的外部配置支持,配置中心為各個微服務應用的所有環境提供了中心化的外部配置(可能比較難理解,想知道是什麼意思就要知道為什麼這麼配置:這麼配置就是為瞭解決微服務中很多個provider中的application.properties配置管理 ...


一.什麼是分散式配置中心?

  就是為微服務架構中的微服務提供集中化的外部配置支持,配置中心為各個微服務應用的所有環境提供了中心化的外部配置(可能比較難理解,想知道是什麼意思就要知道為什麼這麼配置:這麼配置就是為瞭解決微服務中很多個provider中的application.properties配置管理問題,以及配置冗餘問題,把這些配置集中到一起進行存放,並且把重覆的配置提取出來解決冗餘)

二.圖解運行

在這裡插入圖片描述
  1 . git hub 上存放我們的配置文件
  2 . config-server 遠程連接到 git hub
  3 . config-client 連接到config-server
  運行:當我們啟動config-client 服務的時候,client 會通過連接的 config-server 拿到遠程git 上面的配置文件,然後通過 Spring 載入到對象中。

三.如何簡單實現springcloud config的分散式配置中心

1.創建github賬號

2.在github上面創建repository(倉庫)

  一個github賬號可以有很多個倉庫—>一個倉庫只能對應一個項目—>所以倉庫的名稱就是所要提交的項目名
  如果是一個新的賬號,就必須先有一個命名空間(也是自己創建的,可以隨意起名)
在這裡插入圖片描述

3.使用github desktop把項目載入到本地

  選擇File–>clone repository–>選擇需要載入到本地的項目
在這裡插入圖片描述

4.創建三個文件(分為dev:開發環境,test:測試環境,pro:上線環境)

  開發環境:
  application-dev.properties
  spring.profiles=dev

  server.port=3081
    
  spring.application.name=application-dev
  spring.datasource.driver-class-name=com.mysql.jdbc.Driver
  spring.datasource.url=jdbc:mysql://localhost:3306/dev?useSSL=false
  spring.datasource.username=root
  spring.datasource.password=root
  spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
  測試環境:
  application-test.properties
  spring.profiles=test

  server.port=3081

  spring.application.name=application-test
  spring.datasource.driver-class-name=com.mysql.jdbc.Driver
  spring.datasource.url=jdbc:mysql://localhost:3306/test?useSSL=false
  spring.datasource.username=root
  spring.datasource.password=root
  spring.datasource.type=com.alibaba.druid.pool.DruidDataSource

5.把配置好的三個文件提交到github上

  當使用github desktop提交代碼到github上的時候,只能一個一個的提交,不能一起提交
  選擇commit to master(記住這個master)
  選擇repository選擇–>push

四.分散式配置中心的訪問規則:

  無論是yml還是properties都可以使用該規則進行訪問:
  /{application}/{profile}[/{label}]

  properties文件:
  /{application}-{profile}.properties
  /{label(分支)}/{application}-{profile}.properties

  yml文件:
  /{application}-{profile}.yml
  /{label}/{application}-{profile}.yml

五.配置springcloud config

  5.1 server層的配置

    5.1.1 jar包
    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-config-server</artifactId>
        </dependency>
    </dependencies>

    5.1.2 application.properties配置
    #首先還是常規的:
    server.port=4081
    server.servlet.context-path=/
    #配置application.name (可配置,可不配置) ,在此配置是為了提醒eureka中的這個配置(因為eureka中服務的發現就是找的這個名字),不要忘記
    spring.application.name=springcloud-config-server-4081
    #開始配置GitHub
    #先配置GitHub的倉庫的地址(在瀏覽器的地址欄上,直接複製就好)     spring.cloud.config.server.git.uri=https://github.com/命名空間/倉庫名     #配置GitHub的賬號和密碼     spring.cloud.config.server.git.username=郵箱/賬號     spring.cloud.config.server.git.password=密碼     #配置GitHub的倉庫的搜索路徑(固定的不要補全!!!)     spring.cloud.config.server.git.search-paths=config-repo     #跳過SSL的認證     spring.cloud.config.server.git.skip-ssl-validation=true   
  5.1.3 ApplicationRun啟動類註解
    除了常規的@@SpringBootApplication外,還有一個@EnableConfigServer,標明是server層的配置中心

 5.2 client 層的配置

  5.2.1 jar包
  <dependencies>
      <dependency>
          <groupId>com.wlx.springcloud</groupId>
          <artifactId>20191108-management-model</artifactId>
          <version>1.0-SNAPSHOT</version>
      </dependency>
      <dependency>
          <groupId>mysql</groupId>
          <artifactId>mysql-connector-java</artifactId>
      </dependency>
      <dependency>
          <groupId>com.alibaba</groupId>
          <artifactId>druid</artifactId>
      </dependency>
      <dependency>
          <groupId>org.mybatis.spring.boot</groupId>
          <artifactId>mybatis-spring-boot-starter</artifactId>
      </dependency>
      <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>
  </dependencies>
  5.2.2 配置config 文件

  此處的配置文件和之前的有區別,有兩個配置文件 bootstrap.properties 和 application.properties 文件,配置兩個文件的作用就是:查漏補缺。
把相同的配置放到了GitHub上,有差異的配置放在了application文件中,載入的時候會把這兩個文件進行合併
  Bootstrap.properties文件:

  #從github上讀取所要配置的文件的名稱
  #從GitHub上的repository讀取文件名
  #根據讀取的規則:不要加尾碼名   .properties或.yml
  spring.cloud.config.name=application-dev
  #配置prpfile的名稱
  #必須要和GitHub上文件配置中心中的spring.profile的值一致,否則匹配不到
  spring.cloud.config.profile=dev
  #配置label(master) 如果使用預設的就不需要配置
  spring.cloud.config.label=master
  #配置config的 伺服器端 的地址及埠
  spring.cloud.config.uri=http://localhost:埠號

  Application.properties文件:

  #一定要和bootstrap.properties中的spring.cloud.config.name的值一致,否則映射不到`
  spring.application.name=application-dev
  5.2.3 測試是否鏈接成功server層的伺服器,載入雲端的配置文件

  新創建一個controller目錄 –-> 創建一個controller測試類 TestController ,利用@Value註解獲取配置文件中的值

  @RestController
  public class TestController {

     @Value("${spring.datasource.driver-class-name}")
    	  private String driverClassName;
  	  
   	 @RequestMapping("/test")
  	  public String test(){
  	     return driverClassName;
   	}
}

初次寫博客,不喜勿噴!!!


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 品優購 第2天 "學習目標" 目標1:運用AngularJS前端框架的常用指令 目標2:完成品牌管理的列表功能 目標3:完成品牌管理的分頁列表功能 目標4:完成品牌管理的增加功能 目標5:完成品牌管理的修改功能 目標6:完成品牌管理的刪除功能 目標7:完成品牌管理的條件查詢功能 目標N:通用Mapp ...
  • ### default過濾器: 使用方式:{{ value|default('預設值') }} 如果value這個“key”不存在,那麼就會使用default過濾器提供的預設值。如果你想使用類似python中判斷一個值是否為False(例如:None、空字元串、空列表、空字典等),那麼就必須要傳遞另 ...
  • ### 什麼是過濾器,語法是什麼: 1.有時候我們想要在模板中對一些變數進行處理,那麼就需要類似python中的函數一樣,可以將這個值傳到函數中,然後做一些操作。在模板中,過濾器相當於是一個函數,把當前的過濾器傳到變數中,然後過濾器根據自己的功能,再返回相應的值,之後再將結果渲染到頁面中。 2.基本 ...
  • ### url_for筆記: 模板中的“url_for”跟我們視圖函數中的“url_for”使用起來基本是一摸一樣的。也是傳遞視圖函數的名字,也是傳遞參數,使用的時候,用{{}}闊起來: 例如:{{ url_for('fun') }} app.py: from flask import Flask, ...
  • app.py: from flask import Flask, render_template app = Flask(__name__) @app.route('/') def hello_world(): context = { 'user': 'nvshen', 'age': 19, 'co ...
  • ### 模板預熱筆記: 1.在渲染模板的時候,預設會從項目根目錄下的“templetes”目錄下查找模板。 2.如果不想把模板文件放在“templetes”目錄下,那麼可以在flask初始化的時候指定"templete_folder"來指定模板的路徑。 代碼示例: from flask import ...
  • ### 視圖函數中可以返回哪些值: 1.可以返回字元串:返回的字元串其實底層將這個字元串包裝成了一個“Response”對象。 2.可以返回元組:元組的形式是(響應體,狀態碼,頭部信息),也不一定三個都要寫,寫兩個也是可以的,返回的元組,其實在底層也是包裝成了一個“Response”對象。 3.可以 ...
  • 向指定文件寫入數據,如果文件不存在,則創建文件,寫入數據之前清空文件 ...
一周排行
    -Advertisement-
    Play Games
  • .Net8.0 Blazor Hybird 桌面端 (WPF/Winform) 實測可以完整運行在 win7sp1/win10/win11. 如果用其他工具打包,還可以運行在mac/linux下, 傳送門BlazorHybrid 發佈為無依賴包方式 安裝 WebView2Runtime 1.57 M ...
  • 目錄前言PostgreSql安裝測試額外Nuget安裝Person.cs模擬運行Navicate連postgresql解決方案Garnet為什麼要選擇Garnet而不是RedisRedis不再開源Windows版的Redis是由微軟維護的Windows Redis版本老舊,後續可能不再更新Garne ...
  • C#TMS系統代碼-聯表報表學習 領導被裁了之後很快就有人上任了,幾乎是無縫銜接,很難讓我不想到這早就決定好了。我的職責沒有任何變化。感受下來這個系統封裝程度很高,我只要會調用方法就行。這個系統交付之後不會有太多問題,更多應該是做小需求,有大的開發任務應該也是第二期的事,嗯?怎麼感覺我變成運維了?而 ...
  • 我在隨筆《EAV模型(實體-屬性-值)的設計和低代碼的處理方案(1)》中介紹了一些基本的EAV模型設計知識和基於Winform場景下低代碼(或者說無代碼)的一些實現思路,在本篇隨筆中,我們來分析一下這種針對通用業務,且只需定義就能構建業務模塊存儲和界面的解決方案,其中的數據查詢處理的操作。 ...
  • 對某個遠程伺服器啟用和設置NTP服務(Windows系統) 打開註冊表 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\TimeProviders\NtpServer 將 Enabled 的值設置為 1,這將啟用NTP伺服器功 ...
  • title: Django信號與擴展:深入理解與實踐 date: 2024/5/15 22:40:52 updated: 2024/5/15 22:40:52 categories: 後端開發 tags: Django 信號 松耦合 觀察者 擴展 安全 性能 第一部分:Django信號基礎 Djan ...
  • 使用xadmin2遇到的問題&解決 環境配置: 使用的模塊版本: 關聯的包 Django 3.2.15 mysqlclient 2.2.4 xadmin 2.0.1 django-crispy-forms >= 1.6.0 django-import-export >= 0.5.1 django-r ...
  • 今天我打算整點兒不一樣的內容,通過之前學習的TransformerMap和LazyMap鏈,想搞點不一樣的,所以我關註了另外一條鏈DefaultedMap鏈,主要調用鏈為: 調用鏈詳細描述: ObjectInputStream.readObject() DefaultedMap.readObject ...
  • 後端應用級開發者該如何擁抱 AI GC?就是在這樣的一個大的浪潮下,我們的傳統的應用級開發者。我們該如何選擇職業或者是如何去快速轉型,跟上這樣的一個行業的一個浪潮? 0 AI金字塔模型 越往上它的整個難度就是職業機會也好,或者說是整個的這個運作也好,它的難度會越大,然後越往下機會就會越多,所以這是一 ...
  • @Autowired是Spring框架提供的註解,@Resource是Java EE 5規範提供的註解。 @Autowired預設按照類型自動裝配,而@Resource預設按照名稱自動裝配。 @Autowired支持@Qualifier註解來指定裝配哪一個具有相同類型的bean,而@Resourc... ...