SpringCloud微服務架構篇7:Config配置資源庫及加解密

2020-11-29 新手java開發

01配置資源庫

1、配置資源規則詳解

Spring Cloud Config是通過EnvironmentRepository來獲取Environment對象解決的。該對象是對Spring的Environment(包括做為主要配置屬性的propertySources)對象的淺拷貝。在加載Environment相應資源時參數變化成了以下變量:

{application}:對應客戶端配置中的spring.application.name。{profile}:對應客戶端配置中的spring.profiles.action。{label}:對應配置服務端鎖配置的spring.cloud.config.label。

當配置客戶端啟動時,根據bootstrap.yml中配置的應用名稱(spring.application.name)、環境名(spring.profiles.active),向配置伺服器請求獲取配置數據。配置伺服器根絕客戶端的請求參數、以及配置文件中鎖配置的標籤(spring.cloud.config.label),從git倉庫中按照上述規則去查找服務的配置文件。配置伺服器將匹配到的git倉庫拉取到本地,並建立本地緩存。配置伺服器根據拉取到的配置文件創建Spring的ApplicationContext實例,然後將該配置信息返回給客戶端。客戶端獲取到配置伺服器返回的數據後,將這些配置數據加載到自己的上下文中。同時,因為這些配置數據的優先級高於本地JAR包中的配置,因為將不再加載本地的配置。2、集成Git倉庫

通過spring.cloud.config.server.git.uri屬性設置好git地址,設置好git的用戶名和密碼。

3、搜索目錄

如果配置文件直接放在git根目錄下,則不需要進行設置。如果放到特定的子目錄下,需要設置searchPath指定目錄。

4、本地緩存

配置伺服器從git獲取配置信息後,將會在本地存儲一份。但無法訪問到git時,則會讀取之前緩存在本地文件系統中的配置,將這些配置信息返回給客戶端。

02配置的加密與解密

1、安裝JCE(Java Cryptography Extension)

Spring Cloud Config所提供的加解密依賴JCE是一組包,提供用於加密、秘鑰生成算法和協議,以及消息認證碼的算法及實現,這些包實現對稱、非對稱、塊和流密碼的加密支持。

https://www.oracle.com/java/technologies/javase-jce8-downloads.html,下載JCE擴展包jce_policy-8.zip。解壓,獲得兩個jar包:local_policy.jar和US_export_policy.jar。打開$JAVA_HOME/jre/lib/security目錄,將該目錄下的local_policy.jar和US_export_policy.jar文件備份到其他目錄將下載解壓後的local_policy.jar和US_export_policy.jar複製過來。2、使用對稱加密

配置服務端:

3、加密/解密端點

/encrypt:加密端點。使用該端點可以對所提供的字符串進行加密。/decrypt:解密端點。使用該端點可以對所要解密的字符串進行解密。4、客戶端解密

需要禁用掉配置服務端的解密處理。是否啟用配置伺服器的解密處理通過spring.cloud.config.server.encrypt.enabled屬性控制。在客戶端項目,增加和伺服器同樣的秘鑰。encrypt.key=test為客戶端增加spring-security-rsa依賴。

5、非對稱加密

需要使用Java工具——Keytool。Keytool是一個Java數據證書的管理工具,Keytool使用keystore文件存儲秘鑰和證書。

keystore文件裡包含兩種數據:一種是秘鑰實體-秘鑰或者是私鑰和配對公鑰(採用非對稱加密);另一種是可信任的證書實體,僅包含公鑰。

需要使用Keytool生成一個秘鑰對。

keytool -genkeypair -alias alias -keyalg RSA -dname "CN=test" -keypass secret -keystore server.jks -storepass password

然後將生成的server.jks文件複製到配置伺服器的resources目錄下。

修改配置文件

相關焦點

  • SpringCloud搭建-ConfigClient調用配置中心
    在上一節,我搭建了config-service的配置中心服務,但是要如何使用他呢?我們以測試服務為例:添加依賴在測試服務的pom.xml中引入以下依賴:<dependency><groupId>org.springframework.cloud</groupId>
  • SpringCloud微服務架構篇3:Spring Cloud簡介
    5、微服務的統一配置對微服務架構中,數十個、上百個實例,統一對配置進行管理和發布更新。7、微服務的部署通過構建-發布管道來構建自動化發布流程,可以通過Docker工具快速部署,通過k8s來構建自動化部署編排等。
  • Spring Cloud系列各子項目在微服務架構中的作用分析
    Springcloud一般用於搭建微服務項目,那麼微服務項目是怎麼工作的呢?Springcloud的幾個子項目分別扮演什麼角色?如果需要給所有請求做統一的處理,比如認證、授權方面,也不應該在每個微服務寫一套驗證邏輯。所以需要網關來提供一個統一的調用地址給前端調用,通過請求信息區分調用不同微服務,提供統一的路由定位轉發、請求過濾、負載均衡、請求響應修改等功能,在網關服務上做認證授權等公共處理。
  • 如何使用SpringCloud進行灰度發布
    將分一下四步:第一,設置網關權重路由設置Spring Cloud Gateway中提供了org.springframework.cloud.gateway.handler.predicate.WeightRoutePredicateFactory去實現根據分組設置權重進行路由,因此使用起來相對比較簡單,有興趣的可以debug閱讀源碼。
  • 微服務架構技術棧
    這裡編輯強力推薦楊波在『極客時間 App』上的微服務架構視頻白板課程,他用一張圖,6 分鐘時間,深入淺出解釋微服務架構中的關鍵概念。目前是第一季,後面還有第二季。感興趣的用戶還請點擊文末閱讀原文連結了解詳情。三、微服務基礎架構關鍵點下面腦圖中芒果色標註的七個模塊,我認為是構建微服務 2.0 技術棧的核心模塊,本文後面的選型會分別基於這些模塊展開。
  • 2021升級版微服務教程—為什麼會有微服務?什麼是SpringCloud?
    以上就是分布式的架構5.服務化於是公司進入轟轟烈烈的服務化時代,但是有幾個問題需要被解決,如下image-20200317151634243 每一個模塊都是一個獨立的項目 都可以獨立啟動 這樣的做法 就叫做服務化 模塊變成項目之後我們稱之為服務 首頁模塊---》首頁服務這就是服務化 這就是微服務,微服務是:特殊的分布式架構【服務化
  • 微服務這麼流行,你理解嘛?
    在前一段時間,我們實驗室的項目開始變得越來越麻煩,代碼也越來越臃腫,一個人兼顧前後端的全棧開發,實在是力不從心,沒有一點點幸福感,於是迫切的想要解放生產力,放飛自我,因此開始決定重構項目,改用之前學習過但是一直沒用過的微服務架構。這篇文章將從以下幾個角度來學習Springcloud入門的一些相關知識。1、微服務是什麼?
  • Spring Cloud 中 Zuul 網關到底有何牛逼之處?竟然這麼多人在用!
    Zuul是spring cloud中的微服務網關。網關:是一個網絡整體系統中的前置門戶入口。請求首先通過網關,進行路徑的路由,定位到具體的服務節點上。Zuul是一個微服務網關,首先是一個微服務。也是會在Eureka註冊中心中進行服務的註冊和發現。也是一個網關,請求應該通過Zuul來進行路由。Zuul網關不是必要的。是推薦使用的。
  • 20道你必須要背會的微服務面試題,面試一定會被問到
    寫在前面:在學習springcloud之前大家一定要先了解下,常見的面試題有那塊,然後我們帶著問題去學習這個微服務技術,那麼就會更加理解springcloud技術。如果你已經學了springcloud,那麼在準備面試的時候,一定要看看看這些面試題。
  • 架構大遷移:從Java Spring到ReactJS +API微服務架構
    面對著這樣的窘境,你能做的,而且唯一需要做的就是對其重構,重新開發一個全新架構的,高性能的,流行的系統。本文中蟲蟲給大家介紹實例Java平臺重構的方法,將Java Spring開發的系統遷移到ReactJS+API的微服務架構。基礎梳理為什麼要重構平臺架構?
  • 「首席架構師看微服務架構」介紹NGINX的微服務參考架構
    另請查看有關微服務的其他NGINX資源:A very useful and popular series by Chris Richardson about microservices application designThe Chris Richardson articles collected into a free ebook, with additional tips
  • 微服務,Java目前很火熱的系統架構
    學習內容安排如下: 系統架構的演化:集中式架構、分布式架構。當然系統架構肯定不是說我一篇文章就能學好的,只能說我作為一名初學者,是如何去理解這些概念的。至於想要真正地去弄懂這些,需要自己長期性地不斷學習,非一朝一夕就能學完的。一、系統架構概述技術更新是非常快的,從單一應用到垂直細分,到分布式,到SOA,以及微服務架構。
  • 覆蓋全網的阿里微服務架構有多牛:K8S+實戰+筆記+項目教程
    >第一部分(基礎篇)第1章微服務概述我們要學習微服務架構,就要了解它,本章將帶領大家初步了解微服務,為後面系統學習微服務架構奠定良好的基礎。通過「以戰代練」的方式來學習如何構建Spring loud 微服務架構,讓讀者走出理論的叢林,在實踐中玩轉微服務架構。第6章 公共模塊封裝從本章開始,我們將學習框架的搭建。由於代碼量巨大,本書不可能全部貼出,所以只展示一些核心代碼。全部源碼可以從本書配套源碼中查看。
  • 無服務和微服務架構,誰是業務計算的未來?
    簡而言之,無伺服器架構是一種事件和請求驅動的技術解決方案。它允許應用開發人員在雲端創建可操作的工作環境。該環境提供了實現編碼流能夠順暢運行的所有必要的計算資源。該框架在時間緊、且任務相當耗費資源的情況下,顯得非常實用。
  • 微服務RPC框架選美
    原標題:微服務RPC框架選美 轉載本文需註明出處:EAII企業架構創新研究院(微信號:eaworld),違者必究。如需加入微信群參與微課堂、架構設計與討論直播請直接回復此公眾號:「加群 姓名 公司 職位 微信號」。
  • 基於容器雲的微服務架構實踐
    【編者按】微服務架構的誕生和容器技術的流行,幾乎是同時發生的,這並非偶然,而是網際網路時代倒逼傳統技術和架構而產生的變革,而以Docker為代表的容器技術則為微服務理念提供了匹配的實現機制,本文作者從什麼是微服務切入,詳細的介紹了微服務架構的優勢,最後從自身實踐出發,給出了微服務架構的雲端實踐。
  • restful微服務風格_restful 風格的微服務架構 - CSDN
    本文整理了 spring boot + jpa+mysql+redis +swagger+yml等技術,實現了微服務restFul 風格的demo,下載即運行[http://localhost:8080/
  • 環境配置簡要流程
    6、 創建虛擬環境7、 安裝 tensorow8、 安裝 keras9 、 安裝 talib1 0 、安裝 sklearn1 1 、安裝 tushare1 2 、安裝 matplotlib1 3、安裝各種用到的庫14 、配置 vscode 1、下載並安裝 anaconda 教程網上很多,路徑最好放在 c 盤,而且最好在安裝過程中勾選添加 PATH 。
  • DDD到底適不適合微服務架構?
    從初期的單體架構,到豎井式架構、RPC架構,再到大放異彩的微服務架構,可以說架構演進,本質上就是基於業務,對現有架構的抽象過程。一名架構師,最怕缺少全局意識和長線思維。如果架構師設計架構的出發點,只是緩解燃眉之急,那麼在未來,這套系統的迭代會越來越困難,很可能陷入推翻、重建,再推翻、再重建的「鬼打牆」。
  • python環境配置簡要流程
    --add channels http://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/msys2/ conda config --add channels http://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/