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
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...