小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

Consul 注冊(cè)中心介紹

 liang1234_ 2019-12-09

在 Spring Cloud 體系中,幾乎每個(gè)角色都會(huì)有兩個(gè)以上的產(chǎn)品提供選擇,比如在注冊(cè)中心有:Eureka、Consul、zookeeper、etcd 等;網(wǎng)關(guān)的產(chǎn)品有 Zuul、Spring Cloud Gateway 等。在注冊(cè)中心產(chǎn)品中,最常使用的是 Eureka 和 Consul,兩者各有特點(diǎn),企業(yè)可以根據(jù)自述項(xiàng)目情況來選擇。

前面給大家詳細(xì)介紹了 Eureka ,本節(jié)給大家介紹 Consul 的使用。

什么是Consul

Consul 是 HashiCorp 公司推出的開源產(chǎn)品,用于實(shí)現(xiàn)分布式系統(tǒng)的服務(wù)發(fā)現(xiàn)、服務(wù)隔離、服務(wù)配置,這些功能中的每一個(gè)都可以根據(jù)需要單獨(dú)使用,也可以同時(shí)使用所有功能。Consul 官網(wǎng)目前主要推 Consul 在服務(wù)網(wǎng)格中的使用。

與其它分布式服務(wù)注冊(cè)與發(fā)現(xiàn)的方案相比,Consul 的方案更“一站式”——內(nèi)置了服務(wù)注冊(cè)與發(fā)現(xiàn)框架、分布一致性協(xié)議實(shí)現(xiàn)、健康檢查、Key/Value 存儲(chǔ)、多數(shù)據(jù)中心方案,不再需要依賴其它工具。Consul 本身使用 go 語言開發(fā),具有跨平臺(tái)、運(yùn)行高效等特點(diǎn),也非常方便和 Docker 配合使用。

Consul 的主要特點(diǎn)有:
Service Discovery : 服務(wù)注冊(cè)與發(fā)現(xiàn),Consul 的客戶端可以做為一個(gè)服務(wù)注冊(cè)到 Consul,也可以通過 Consul 來查找特定的服務(wù)提供者,并且根據(jù)提供的信息進(jìn)行調(diào)用。

Health Checking: Consul 客戶端會(huì)定期發(fā)送一些健康檢查數(shù)據(jù)和服務(wù)端進(jìn)行通訊,判斷客戶端的狀態(tài)、內(nèi)存使用情況是否正常,用來監(jiān)控整個(gè)集群的狀態(tài),防止服務(wù)轉(zhuǎn)發(fā)到故障的服務(wù)上面。

KV Store: Consul 還提供了一個(gè)容易使用的鍵值存儲(chǔ)。這可以用來保持動(dòng)態(tài)配置,協(xié)助服務(wù)協(xié)調(diào)、建立 Leader 選舉,以及開發(fā)者想構(gòu)造的其它一些事務(wù)。

Secure Service Communication: Consul 可以為服務(wù)生成分布式的 TLS 證書,以建立相互的 TLS 連接。 可以使用 intentions 定義允許哪些服務(wù)進(jìn)行通信。 可以使用 intentions 輕松管理服務(wù)隔離,而不是使用復(fù)雜的網(wǎng)絡(luò)拓?fù)浜挽o態(tài)防火墻規(guī)則。

Multi Datacenter: Consul 支持開箱即用的多數(shù)據(jù)中心,這意味著用戶不需要擔(dān)心需要建立額外的抽象層讓業(yè)務(wù)擴(kuò)展到多個(gè)區(qū)域。

Consul 角色
Server: 服務(wù)端, 保存配置信息, 高可用集群, 在局域網(wǎng)內(nèi)與本地客戶端通訊, 通過廣域網(wǎng)與其它數(shù)據(jù)中心通訊。 每個(gè)數(shù)據(jù)中心的 Server 數(shù)量推薦為 3 個(gè)或是 5 個(gè)。

Client: 客戶端, 無狀態(tài), 將 HTTP 和 DNS 接口請(qǐng)求轉(zhuǎn)發(fā)給局域網(wǎng)內(nèi)的服務(wù)端集群。

Consul 旨在對(duì) DevOps 社區(qū)和應(yīng)用程序開發(fā)人員友好,使其成為現(xiàn)代、彈性基礎(chǔ)架構(gòu)的理想選擇。

使用Consul 的優(yōu)勢(shì)

使用 Raft 算法來保證一致性, 比復(fù)雜的 Paxos 算法更直接。相比較而言, zookeeper 采用的是 Paxos, 而 etcd 使用的則是 Raft。

支持多數(shù)據(jù)中心,內(nèi)外網(wǎng)的服務(wù)采用不同的端口進(jìn)行監(jiān)聽。多數(shù)據(jù)中心集群可以避免單數(shù)據(jù)中心的單點(diǎn)故障,而其部署則需要考慮網(wǎng)絡(luò)延遲, 分片等情況等。 zookeeper 和 etcd 均不提供多數(shù)據(jù)中心功能的支持。

支持健康檢查。 etcd 不提供此功能。

支持 http 和 dns 協(xié)議接口。 zookeeper 的集成較為復(fù)雜, etcd 只支持 http 協(xié)議。

官方提供 Web 管理界面, etcd 無此功能。

Consul 保持了 CAP 中的 CP,保持了強(qiáng)一致性和分區(qū)容錯(cuò)性。

Consul 支持 Http\gRPC\DNS 多種訪問方式。

Consul 的調(diào)用過程

首先我們根據(jù)一張圖來了解一下 Consul 服務(wù)調(diào)用過程:

在這里插入圖片描述

1、當(dāng) Producer 啟動(dòng)的時(shí)候,會(huì)向 Consul 發(fā)送一個(gè) post 請(qǐng)求,告訴 Consul 自己的 IP 和 Port;

2、Consul 接收到 Producer 的注冊(cè)后,每隔 10s(默認(rèn))會(huì)向 Producer 發(fā)送一個(gè)健康檢查的請(qǐng)求,檢驗(yàn) Producer 是否健康;

3、當(dāng) Consumer 發(fā)送 GET 方式請(qǐng)求 /api/address 到 Producer 時(shí),會(huì)先從 Consul 中拿到一個(gè)存儲(chǔ)服務(wù) IP 和 Port 的臨時(shí)表,從表中拿到 Producer 的 IP 和 Port 后再發(fā)送 GET 方式請(qǐng)求 /api/address;

4、該臨時(shí)表每隔 10s 會(huì)更新,只包含有通過了健康檢查的 Producer。

Spring Cloud Consul 項(xiàng)目是針對(duì) Consul 的服務(wù)治理實(shí)現(xiàn)。Consul 是一個(gè)分布式高可用的系統(tǒng),它包含多個(gè)組件,但是作為一個(gè)整體,在微服務(wù)架構(gòu)中,為我們的基礎(chǔ)設(shè)施提供服務(wù)發(fā)現(xiàn)和服務(wù)配置的工具。

Consul 和 eureka的對(duì)比

我們先來通過一個(gè)表格做簡單對(duì)比

Feature Euerka Consul
服務(wù)健康檢查 可配支持 服務(wù)狀態(tài),內(nèi)存,硬盤等
多數(shù)據(jù)中心 支持
kv 存儲(chǔ)服務(wù) 支持
一致性 raft
cap ap cp
使用接口(多語言能力) http(sidecar) 支持 http 和 dns
watch 支持 支持 long polling/大部分增量 全量/支持long polling
自身監(jiān)控 metrics metrics
安全 acl /https
編程語言 Java go
Spring Cloud 集成 已支持 已支持

通過對(duì)比可以得知, Consul 功能更強(qiáng)大,Euerka 更容易使用。

Consul 強(qiáng)一致性?帶來的是:

服務(wù)注冊(cè)相比 Eureka 會(huì)稍慢一些。因?yàn)?Consul 的 raft 協(xié)議要求必須過半數(shù)的節(jié)點(diǎn)都寫入成功才認(rèn)為注冊(cè)成功,。Leader 掛掉時(shí),重新選舉期間整個(gè) Consul 不可用。保證了強(qiáng)一致性但犧牲了可用性。

Consul 強(qiáng)烈的一致性意味著它可以作為領(lǐng)導(dǎo)選舉和集群協(xié)調(diào)的鎖定服務(wù)。

Eureka 保證高可用(A)和最終一致性:

服務(wù)注冊(cè)相對(duì)要快,因?yàn)椴恍枰茸?cè)信息 replicate 到其它節(jié)點(diǎn),也不保證注冊(cè)信息是否 replicate 成功。當(dāng)數(shù)據(jù)出現(xiàn)不一致時(shí),雖然 A, B 上的注冊(cè)信息不完全相同,但每個(gè) Eureka 節(jié)點(diǎn)依然能夠正常對(duì)外提供服務(wù),這會(huì)出現(xiàn)查詢服務(wù)信息時(shí)如果請(qǐng)求 A 查不到,但請(qǐng)求 B 就能查到。如此保證了可用性但犧牲了一致性。

安裝Consul

Consul 不同于 Eureka 是由 go 語言開發(fā)而成,因此需要我們單獨(dú)來安裝。

打開 Consul官網(wǎng)根據(jù)不同的操作系統(tǒng)選擇最新的 Consul 版本,我們這里以 Windows 64 操作系統(tǒng)為例,可以看出 Consul 目前的最新版本為 1.4.4

在這里插入圖片描述
下載下來是一個(gè) consul_1.4.4_windows_amd64.zip 的壓縮包,解壓是一個(gè) consul.exe 的執(zhí)行文件。

在這里插入圖片描述

cd 到對(duì)應(yīng)的目錄下,使用 cmd 啟動(dòng) Consul:

cd D:\Common Files\consul
#cmd啟動(dòng): consul agent -dev # -dev表示開發(fā)模式運(yùn)行,另外還有-server表示服務(wù)模式運(yùn)行

為了方便啟動(dòng),可以在同級(jí)目錄下創(chuàng)建一個(gè) run.bat 腳本來啟動(dòng),腳本內(nèi)容如下:

consul agent -dev pause

下次啟動(dòng)的時(shí)候直接雙擊 run.bat 文件即可;當(dāng)然也可以把 consul 的 exe 文件路徑加入到本機(jī)的 path 路徑下,這樣后期只需要在 cmd 命令行下運(yùn)行

執(zhí)行命令后,命令行會(huì)輸出如下信息:

在這里插入圖片描述

啟動(dòng)成功之后訪問:localhost:8500,就可以看到Consul的管理界面

在這里插入圖片描述

Consul 的 Web 管理界面有一些菜單,我們這里做一下簡單的介紹:

Services,管理界面的默認(rèn)頁面,用來展示注冊(cè)到 Consul 的服務(wù),啟動(dòng)后默認(rèn)會(huì)有一個(gè) consul 服務(wù),也就是它本身。

Nodes,在 Services 界面雙擊服務(wù)名就會(huì)來到 Services 對(duì)于的 Nodes 界面,Services 是按照服務(wù)的抽象來展示的,Nodes 展示的是此服務(wù)的具體節(jié)點(diǎn)信息。比如啟動(dòng)了兩個(gè)訂單服務(wù)實(shí)例,Services 界面會(huì)出現(xiàn)一個(gè)訂單服務(wù),Nodes 界面會(huì)展示兩個(gè)訂單服務(wù)的節(jié)點(diǎn)。

Key/Value ,如果有用到 Key/Value 存儲(chǔ),可以在界面進(jìn)行配置、查詢。

ACL,全稱 Access Control List,為訪問控制列表的展示信息。

Intentions,可以在頁面配置請(qǐng)求權(quán)限。

當(dāng)我們看到這個(gè)頁面后,也就意味著 Consul 已經(jīng)安裝成功了。

總結(jié)

本節(jié)為大家介紹了注冊(cè)中心的另外一個(gè)產(chǎn)品:Consul。介紹了 Consul 的特點(diǎn)、優(yōu)勢(shì),以及和 Eureka 對(duì)比有什么不同的特性,最后為大家展示了如何在 Windows 下安裝一個(gè) Consul 服務(wù)。下節(jié)為大家介紹 Consul 的架構(gòu)原理和實(shí)踐。

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多