<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          SpringCloud微服務(wù)架構(gòu)開(kāi)發(fā)實(shí)戰(zhàn):微服務(wù)的集中化配置

          共 5755字,需瀏覽 12分鐘

           ·

          2022-05-19 08:27


          微服務(wù)的集中化配置:為什么需要集中化配置

          應(yīng)用一般都會(huì)有配置文件,即便號(hào)稱(chēng)是“零配置”的Spring Boot應(yīng)用,也無(wú)法完全做到不使用配置文件,畢竟配置文件就是為了迎合軟件的個(gè)性化需求。一個(gè)帶配置的應(yīng)用程序,部署了多個(gè)實(shí)例在若干臺(tái)機(jī)器上,如果配置發(fā)生了變化,那么,就需要對(duì)該應(yīng)用所有的實(shí)例進(jìn)行配置的變更。

          隨著單塊架構(gòu)向微服務(wù)架構(gòu)演進(jìn)之后,微服務(wù)的應(yīng)用數(shù)量也會(huì)劇增。同時(shí),每個(gè)微服務(wù)都有自己的配置文件,這些文件如果都散落在各自的應(yīng)用中,必然會(huì)對(duì)應(yīng)用的升級(jí)和配置管理帶來(lái)挑戰(zhàn),畢竟誰(shuí)也沒(méi)有能力去手工配置那么多微服務(wù)的配置文件。而且,對(duì)運(yùn)維來(lái)說(shuō),一方面手工配置單工作量很大,幾乎不可能完成;另-方面,相對(duì)而言,人為的操作會(huì)加大出錯(cuò)的幾率。所以,外部化和中心化的配置中心,變成了解決微服務(wù)配置問(wèn)題的一一個(gè)有力的途徑。


          配置分類(lèi)

          在我們了解了集中化配置的必要性之后,來(lái)看看配置到底有哪幾種分類(lèi)。

          1.按配置的來(lái)源劃分

          按配置的來(lái)源劃分,主要有源代碼、文件、數(shù)據(jù)庫(kù)連接、遠(yuǎn)程調(diào)用等。

          2.按適用的環(huán)境劃分

          按配置的適用環(huán)境劃分,可分為開(kāi)發(fā)環(huán)境、測(cè)試環(huán)境、預(yù)發(fā)布環(huán)境、生產(chǎn)環(huán)境等。

          3.按配置的集成階段劃分

          按配置的集成階段劃分,可分為編譯時(shí)、打包時(shí)和運(yùn)行時(shí)。編譯時(shí),最常見(jiàn)的有兩種,一 是源代碼級(jí)的配置,二是把配置文件和源代碼-起提交到代碼倉(cāng)庫(kù)中。打包時(shí),即在應(yīng)用打包階段通過(guò)某種方式將配置(一般是文件形式)打入最終的應(yīng)用包中。運(yùn)行時(shí),是指應(yīng)用啟動(dòng)前并不知道具體的配置,而是在啟動(dòng)時(shí),先從本地或遠(yuǎn)程獲取配置,然后再正常啟動(dòng)。

          4.按配置的加載方式劃分

          按配置的加載方式劃分,可分為啟動(dòng)加載和動(dòng)態(tài)加載配置。

          啟動(dòng)加載是指應(yīng)用在啟動(dòng)時(shí)獲取配置,并且只獲取-次,在應(yīng)用運(yùn)行過(guò)程中不會(huì)再去加載。這類(lèi)配置通常是不會(huì)經(jīng)常變更的,如端口號(hào)、線程池大小等。

          動(dòng)態(tài)加載是指應(yīng)用在運(yùn)行過(guò)程中,隨時(shí)都可以獲取到的配置,這些配置意味著會(huì)在應(yīng)用運(yùn)行過(guò)程中經(jīng)常被修改。

          配置中心的需求

          創(chuàng)建符合要求的、易于使用的配置中心,至少需要滿足以下幾個(gè)核心需求。

          面向可配置的編碼。編碼過(guò)程中,應(yīng)及早考慮將后期可能經(jīng)常變更的數(shù)據(jù),設(shè)置為可以配置的配置項(xiàng),從而避免在代碼里面硬編碼。

          ●隔離性。不同部署環(huán)境下,應(yīng)用之間的配置是相互隔離的,例如,非生產(chǎn)環(huán)境的配置不能用于

          生產(chǎn)環(huán)境。

          ●一致性。相同部署環(huán)境下的服務(wù)器應(yīng)用配置應(yīng)該具有一致性,即同個(gè)應(yīng)用的所有的實(shí)例使用同一份配置。

          ●集中化配置。在分布式環(huán)境下,應(yīng)用配置應(yīng)該具備可管理性,即提供遠(yuǎn)程管理配置的能力。

          Spring Cloud Config

          Spring Cloud Config致力于為分布式系統(tǒng)中的外部化配置提供支持。其中,Spring Cloud Config又分為了供服務(wù)器( Config Server )和客戶端( Config Client )兩個(gè)版本。借助Config Server,可以在所有環(huán)境中管理應(yīng)用程序的外部屬性。SpringCloudConfig的客戶端和服務(wù)器上的概念都與Spring的Environment 和PropertySource抽象-致, 所以它們非常適合Spring應(yīng)用程序,但也可以與任何運(yùn)行在任何語(yǔ)言的應(yīng)用程序-起使用。當(dāng)應(yīng)用程序從開(kāi)發(fā)到測(cè)試轉(zhuǎn)移到部署管道時(shí),你可以通過(guò)管理這些環(huán)境之間的配置,來(lái)確保應(yīng)用程序具有在遷移時(shí)所需運(yùn)行的所有內(nèi)容。

          Config Server存儲(chǔ)后端的默認(rèn)實(shí)現(xiàn)使用了Git,因此它可以輕松地支持標(biāo)記版本的配置環(huán)境,

          并且可以通過(guò)廣泛的工具來(lái)訪問(wèn)管理內(nèi)容。

          本文將著重介紹如何使用Spring Cloud Config來(lái)實(shí)現(xiàn)集中化的配置中心。



          使用Config實(shí)現(xiàn)的配置中心

          本節(jié)將在
          micro-weather-eureka-client基礎(chǔ)上,創(chuàng)建- - 個(gè)以micro- weather-configserver作為配置

          中心的服務(wù)端,創(chuàng)建一- 個(gè)以micro- weather- config client作為配置中心的客戶端。

          開(kāi)發(fā)環(huán)境

          ●Gradle 4.0。

          ●Spring Boot 2.0.0.M3。

          ●Spring Cloud Starter Netfix Eureka Client Finchley.M2。

          ●Spring Cloud Config Server Finchley.M2。

          ●Spring Cloud Config Client Finchley.M2。

          創(chuàng)建配置中心的服務(wù)端

          micro-weather- config- server是作為配置中心的服務(wù)端。

          1.更改配置

          要使用Spring Cloud Config Server,最簡(jiǎn)單的方式莫過(guò)于添加Spring Cloud Config Server依賴。

          dependencies {
          //添加Spring Cloud Config Server 依賴
          compile ('org. spr ingf r amework. cloud: spring-cloud-config-server')
          }

          2.一個(gè)簡(jiǎn)單的Config Server

          要使用Config Server,只需要在程序的人口Application類(lèi)加上
          org.springframework.cloud.config.server.EnableConfigServer注解,開(kāi)啟配置中心的功能既可。

          package com. waylau . spring. cloud. weather;
          import org. springframework. boot . SpringApplication;
          import org. springf ramework. boot . autoconfigure .SpringBootApplication;
          import org. springfr amework . cloud. client .discovery . EnableDiscovery
          Client;
          import org. springframework. cloud. config . server . EnableConfigServer;
          /**
          主應(yīng)用程序.
          @since 1.0.0 2017年11月06日
          @author Way Lau
          */

          @SpringBootApplication
          @EnableDiscoveryClient
          @EnableConfigServer
          public class Application {
          public static void main(String[] args) {
          SpringAppl ication. run (Application.class, args) ;
          }
          }

          其中,@EnableConfigServer 啟用了Config Server作為配置中心。

          最后,修改application.properties。修改為如下配置。

          spring. application. name: micro-weather-config- server
          server .port=8888
          eureka. client. serviceUrl . defaultZone: http://localhost: 8761/eureka/
          spring. cloud. config . server .git.uri-https://github . com/waylau/
          spring-cloud-microservices-development
          spring. cloud. config . server.git.searchPaths=config-repo

          其中:

          spring.
          cloud.config.server.git.uri:配置Git倉(cāng)庫(kù)地址;

          spring. cloud.config. server.gitsearchPaths:配置查找配置的路徑。

          3.測(cè)試

          啟動(dòng)應(yīng)用,訪問(wèn)ht:taho://88atherev,應(yīng)能看到如下輸出內(nèi)容,說(shuō)明服務(wù)啟動(dòng)正常。

          {"name":"auther", "profiles": ["dev"],"label":nu1l"version":" alf1e9b
          8711754 f58 6dbed1513fc99acc25b7904"
          , "state" :null, "property Sources":[]
          }

          創(chuàng)建配置中心的客戶端

          micro- weather-config-client是作為配置中心的客戶端。

          1.更改配置

          要使用Spring Cloud Confg Client,最簡(jiǎn)單的方式莫過(guò)于添加Spring Cloud Config Client依賴。

          dependencies {
          //添加Spring Cloud Config Client依賴
          compile('org. springf ramework. cloud:spring-cloud-config-client')
          }

          2.一個(gè)簡(jiǎn)單的Config Client

          主應(yīng)用程序并不需要做特別的更改,與舊的micro-weather eureka-client應(yīng)用的源碼- -致。

          @SpringBootApplication
          @EnableDiscoveryClient
          public class Application {
          public static void main(String[] args) {
          Spr ingApplication. run (Application.class, args) ;
          }
          }

          最后,修改application.propertieso修改為如下配置。

          spring.application. name: micro-weather -config-clienteureka. client. serviceUrl . defaultZone: http://localhost :8761/eureka/
          spring. cloud. config. profile=dev
          spring. cloud. config.uri= http:/ /localhost: 8888/

          其中,spring.cloud.config.uri 指向了配置中心micro-weather config server的位置。

          如何測(cè)試


          htp/github.on/waylau/spring-cloud-microcrvices-development的config-repo 目錄下,我們事先已經(jīng)放置了一個(gè)配置文件micro-weather-config-client de.properties,里面簡(jiǎn)單地放置了micro-weather- config-client應(yīng)用的待測(cè)試的配置內(nèi)容。

          auther=waylau . com

          讀者也可以在線查看該文件,看到如圖13-1所示的配置內(nèi)容。


          其中,在配置中心的文件命名規(guī)則如下。

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

          1.編寫(xiě)測(cè)試用例

          在micro-weather config-client應(yīng)用中編寫(xiě)測(cè)試用例。

          package com. waylau. spring. cloud. weather;
          import static org.junit. Assert.assertEquals;
          import org. junit. Test;
          import org. junit. runner . RunWith;
          import org. springframework. beans. factory . annotation. Value;
          import org.springframework . boot. test. context. SpringBootTest;
          import org. spr ingframework. test. context. junit4. Spr ingRunner;
          /★★
          *主應(yīng)用測(cè)試用例.
          @since 1.0.0 20171106
          * @author "https://waylau. com">Way Lau
          */
          @RunWi th (Spr ingRunner .class)
          @SpringBootTest
          public class ApplicationTests {
          @Value ("${auther}")
          private String auther;
          @Test
          public void contextLoads () {
          assertEquals ("waylau. com", auther) ;
          }
          }

          2.運(yùn)行和測(cè)試

          啟動(dòng)在之前章節(jié)中搭建的micro- weather-eureka-server和
          micro-weather-config-server兩個(gè)項(xiàng)目。

          啟動(dòng)micro-weather- config client應(yīng)用中編寫(xiě)測(cè)試用例ApplicationTests,如果一切正常, 說(shuō)明我們拿到了auther在配置中心中的內(nèi)容。

          源碼

          本節(jié)示例所涉及的源碼,見(jiàn)
          micro-weather-eureka-server. micro-weather- eureka-client及mi-cro-weather-config-server和micro-weather-config-client。

          本篇文章內(nèi)容給大家講解的是微服務(wù)的集中化配置

          1. 下篇文章給大家講解的是微服務(wù)的高級(jí)主題一自動(dòng)擴(kuò)展;

          2. 覺(jué)得文章不錯(cuò)的朋友可以轉(zhuǎn)發(fā)此文關(guān)注小編;

          3. 感謝大家的支持!


          本文就是愿天堂沒(méi)有BUG給大家分享的內(nèi)容,大家有收獲的話可以分享下,想學(xué)習(xí)更多的話可以到微信公眾號(hào)里找我,我等你哦。

          瀏覽 27
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  丁香婷婷六月 | 黄片在线看。 | 欧美亂伦视频网站 | 亚洲AV无码精品 | 舔逼吃鸡吧吞精操逼网站 |