内射老阿姨1区2区3区4区_久久精品人人做人人爽电影蜜月_久久国产精品亚洲77777_99精品又大又爽又粗少妇毛片

SpringCloud微服務(wù)運維神器之ConsulTemplate?-創(chuàng)新互聯(lián)

Spring Cloud微服務(wù)架構(gòu)淺析

這篇文章中要和大家分享下的就是在Spring Cloud微服務(wù)架構(gòu)模式中被運維小哥用的很爽的一個工具Consul Template?

屯昌ssl適用于網(wǎng)站、小程序/APP、API接口等需要進行數(shù)據(jù)傳輸應(yīng)用場景,ssl證書未來市場廣闊!成為創(chuàng)新互聯(lián)的ssl證書銷售渠道,可以享受市場價格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:18980820575(備注:SSL證書合作)期待與您的合作!

在具體介紹Consul Template是個什么東西之前,我們先來整體看一張微服務(wù)模式下的系統(tǒng)架構(gòu)圖,如下圖所示:

Spring Cloud微服務(wù)運維神器之Consul Template?

在上圖中,我們看到在基于Spring Cloud的微服務(wù)體系中,所有的微服務(wù)都會被注冊到統(tǒng)一服務(wù)注冊中心進行服務(wù)管理,這里使用的服務(wù)注冊中心是Consul。假設(shè)在正常情況下,我們面向C端用戶設(shè)計了一套微服務(wù)邏輯,用戶端App通過域名訪問后端微服務(wù)邏輯,而訪問的調(diào)用鏈路是通過將公網(wǎng)域名透過DNS解析到我們的Nginx反向代理服務(wù)器,而Nginx服務(wù)器則需要將請求打到我們的Api Gateway微服務(wù)網(wǎng)關(guān)(如Zuul或Spring Cloud Gateway)上。之后,Api Gateway就會根據(jù)客戶端訪問的具體服務(wù)路徑,將請求透過Consul的服務(wù)發(fā)現(xiàn)轉(zhuǎn)發(fā)到具體的微服務(wù)中,例如訪問訂單微服務(wù)相關(guān)的接口Api Gateway就會將請求打到訂單微服務(wù)中。

而我們知道在Spring Cloud微服務(wù)系統(tǒng)中,雖然Api Gateway網(wǎng)關(guān)服務(wù)本身并沒有什么業(yè)務(wù)邏輯,除了進行服務(wù)路由外,也就只是通過編寫過濾器實現(xiàn)一些常見的服務(wù)鑒權(quán)之類的邏輯,但其本身與其他微服務(wù)一樣都是被注冊中心管理的,而在容器化的時代Api Gateway與其他微服務(wù)一樣也可能是被部署在Docker容器中,其IP端口地址本身并不是固定的。所以如果我們之前了解過Nginx反向代理配置的話,此時心里就會有疑問,Api Gateway服務(wù)的IP端口都不固定怎么搞反向負載均衡配置呢?

是不是我們應(yīng)該要將Api Gateway特殊處理下,把Api Gateway的部署采用固定主機IP+端口的部署方式進行運維呢?答案顯然是可以的,但是問題是這樣做本身是不是就額外增加了微服務(wù)架構(gòu)的復(fù)雜度?同時也降低了了Api Gateway網(wǎng)關(guān)服務(wù)部署的靈活性呢?所以,這個時候Consul Template就橫空出世了!

Consul Template是做什么的?

說了這么多,那么Consul Template到底是做什么的呢?根據(jù)官方說明Consul Template比較關(guān)鍵的一個使用場景就是可以幫助我們獲取Consul集群中服務(wù)的列表以及服務(wù)的所有服務(wù)地址和端口。可能有同學(xué)會問,這不就是Consul本身支持的功能嗎?的確,沒啥毛病,Consul Template本身就是一個工具,其關(guān)鍵之處在于它通過這種方式可以很方便地與Nginx代理服務(wù)器集成。從而可以幫助Nginx動態(tài)地根據(jù)Consul中的服務(wù)信息維護自身的服務(wù)列表,從而與整個Spring Cloud微服務(wù)體系形成聯(lián)動,實現(xiàn)端到端的高可用架構(gòu)體系。

此外,通過Consul Template我們也可以很容易地將微服務(wù)體系中的任何一個微服務(wù)透過Nginx使用公網(wǎng)域名進行服務(wù)暴露。例如,隨著微服務(wù)邏輯從業(yè)務(wù)上逐步分層,這里所說的分層是指這個微服務(wù)體系越來越大,應(yīng)用本身按照業(yè)務(wù)線會被劃分成多個子系統(tǒng),例如獨立于用戶C端微服務(wù)系統(tǒng),我們需要開發(fā)一個To B的微服務(wù)組,而該微服務(wù)組由于功能上獨立于C端用戶系統(tǒng),所以我們并不想讓其調(diào)用鏈路透過C端Api Gateway,而是想直接將其微服務(wù)通過新域名暴露至公網(wǎng)服務(wù),供App端進行調(diào)用。像這樣的需求,我們只需要使用Consul Template進行一下配置,就能實現(xiàn)Nginx的動態(tài)代理轉(zhuǎn)發(fā)了。這樣從架構(gòu)運維體驗上來講,使用Consul Template就會讓Spring Cloud微服務(wù)的部分運維工作變得非常簡單了。

Consul Template+Nginx實現(xiàn)微服務(wù)部署的高可用

那么接下來,我們就來看看如何利用Consul Template+Nginx這樣的組合來實現(xiàn)Spring Cloud微服務(wù)部署的高可用吧。這里為了演示簡單,小碼哥首先在自己的Mac筆記本上安裝一個單機版的Consul(Ps:真是的生產(chǎn)環(huán)境Consul是集群部署的),下載后將命令文件拷貝至相應(yīng)目錄,并啟動Consul如下:

./consul?agent?-dev

此時訪問本機的8500端口,例如:http://127.0.0.1:8500,就能夠看到Consul被成功啟動來,如圖所示:

Spring Cloud微服務(wù)運維神器之Consul Template?

接下來,我們從Consul Template官方地址:https://releases.hashicorp.com/consul-template/0.20.0/,下載Consul Template的可執(zhí)行文件。并將其解壓到/usr/local/bin/目錄即可,之后運行:“consul-template -h”命令,如果能夠正常執(zhí)行則說明Consul Template在本機就安裝成功了!<mpchecktext style="margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; word-wrap: break-word !important;">,</mpchecktext>

之后作者在Mac筆記本上安裝一個Nginx反向代理服務(wù)器,下載地址為:http://nginx.org/en/download.html,之后將軟件安裝文件存放到主機用戶目錄并開始執(zhí)行安裝命令,執(zhí)行如下步驟:

為安裝文件修改權(quán)限

chmod?a+rwx?*

執(zhí)行編譯命令

./configure?--without-http_rewrite_module

執(zhí)行安裝命令

make?&&?make?install

啟動nginx

/usr/local/nginx/sbin/nginx

此時訪問本機80端口http://localhost/,如果出現(xiàn)如下畫面:

Spring Cloud微服務(wù)運維神器之Consul Template?

就說明本機nginx服務(wù)安裝成功了!注意這里作者只是在自己的工作電腦上為了進行演示而進行的基本安裝操作,生產(chǎn)Linux環(huán)境的安裝方式還請大家參考其他更加細節(jié)的文章。

在準備完Nginx、Consul及Consul Template之后,那么該如何進行配置呢?此時作者基于Spring Cloud在本地開發(fā)來一個微服務(wù),并且將該微服務(wù)注冊到本地剛才安裝的Consul中,這里作者啟動兩個實例,如下:

Spring Cloud微服務(wù)運維神器之Consul Template?

此時,在Consul中就注冊了名叫wallet服務(wù)的兩個副本,接下來作者就通過Consul Template的配置模擬下通過Nginx反向代理域名訪問wallet服務(wù)的接口,并實現(xiàn)負載均衡功能!

一般在正式的生產(chǎn)環(huán)境中域名會通過DNS解析到Nginx反向代理服務(wù)器中,這里為了模擬測試,我們在Mac筆記本的/private/etc/hosts文件中加一個模擬的域名映射,如下:

127.0.0.1??api.wudimanong.com

接下來我們創(chuàng)建一個consul-template文件模板consul-wallet.tpl,其中的內(nèi)容就是要把我們在前面啟動的wallet微服務(wù)通過Nginx暴露出去,內(nèi)容如下:

{{if service "wallet"}}
server {
    listen  80;
    server_name  ~^wallet\.(.+\.)?wudimanong\.(com|cn)$;
    access_log  /data/logs/nginx/wallet-access.log ;
    error_log  /data/logs/nginx/wallet-error.log ;

    client_max_body_size  1000m;

    location / {
        include proxy.conf;
        proxy_pass http://server-wallet;
    }
}

upstream server-wallet {
{{range service "wallet"}}  server {{.Address}}:{{.Port}};
{{end}}}
{{ end }}

以上文件模板的內(nèi)容基本上就是和Nginx的配置語法類似,接下來我們啟動Consul Template,命令如下:

sudo consul-template -consul-addr "127.0.0.1:8500" -template "/Users/guanliyuan/consul-wallet.tpl:/usr/local/nginx/conf.d/consul-wallet.conf:/usr/local/nginx/sbin/nginx -s reload" > /Users/guanliyuan/logs/wallet-template.log 2>&1 &

啟動Consul Template之后我們可以查看通過Consul Template模版生成的Nginx配置文件“/../conf.d/consul-wallet.conf”,代碼如下:

server {
    listen  80;
    server_name  ~^wallet\.(.+\.)?wudimanong\.(com|cn)$;
    access_log  /data/logs/nginx/wallet-access.log ;
    error_log  /data/logs/nginx/wallet-error.log ;

    client_max_body_size  1000m;

    location / {
        include proxy.conf;
        proxy_pass http://server-wallet;
    }
}

upstream server-wallet {
  server 192.168.0.106:9090;
  server 192.168.0.106:9091;
}

可以看到Consul Template實際上是為Nginx動態(tài)從Consul中獲取了服務(wù)的地址及端口列表,如果此時我們關(guān)掉wallet微服務(wù)的一個實例,相應(yīng)地我們就會從生成的Nginx配置中看到下線的實例的服務(wù)地址和端口就被剔除了,代碼如下:

server {
    listen  80;
    server_name  ~^wallet\.(.+\.)?wudimanong\.(com|cn)$;
    access_log  /data/logs/nginx/wallet-access.log ;
    error_log  /data/logs/nginx/wallet-error.log ;

    client_max_body_size  1000m;

    location / {
        include proxy.conf;
        proxy_pass http://server-wallet;
    }
}

upstream server-wallet {
  server 192.168.0.106:9091;
}

到這里大家應(yīng)該是比較清晰地理解Consul Template到底是個什么東西了。它實際上就是通過監(jiān)聽Consul服務(wù),并依據(jù)模版中定義的服務(wù)名稱去獲取服務(wù)在Consul中實例的地址及端口列表,然后動態(tài)地將這些服務(wù)的地址及端口準實時地同步到Nginx配置中。示意圖如下:

Spring Cloud微服務(wù)運維神器之Consul Template?

此時,在網(wǎng)絡(luò)域名正常的情況下我們通過域名訪問wallet服務(wù)相關(guān)的接口了,并且已經(jīng)由Nginx為我們實現(xiàn)了負載均衡邏輯。與Spring Cloud內(nèi)部微服務(wù)通過Ribbon客戶端依賴實現(xiàn)負載均衡相配合,整個Spring Cloud的服務(wù)基本運維邏輯就算實現(xiàn)了!

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機、免備案服務(wù)器”等云主機租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。

網(wǎng)頁標題:SpringCloud微服務(wù)運維神器之ConsulTemplate?-創(chuàng)新互聯(lián)
本文地址:http://www.rwnh.cn/article30/csodpo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供微信公眾號、品牌網(wǎng)站制作、外貿(mào)網(wǎng)站建設(shè)、虛擬主機、關(guān)鍵詞優(yōu)化、網(wǎng)站內(nèi)鏈

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都seo排名網(wǎng)站優(yōu)化
龙井市| 宁波市| 鄂托克旗| 三门峡市| 隆子县| 尉氏县| 房产| 宕昌县| 体育| 门源| 花垣县| 定陶县| 吴旗县| 台南县| 沁水县| 林甸县| 天峻县| 宝山区| 临泉县| 德格县| 奉化市| 上高县| 崇明县| 察哈| 连云港市| 云阳县| 沁源县| 和静县| 潼南县| 马公市| 牡丹江市| 财经| 扶余县| 石城县| 玉林市| 福清市| 苏州市| 望江县| 太保市| 襄城县| 会昌县|