Docker 的優(yōu)點(diǎn)
895
2025-04-05
Consul簡(jiǎn)介
Consul是基于GO語(yǔ)言開發(fā)的開源工具,主要面向分布式,服務(wù)化的系統(tǒng)提供服務(wù)注冊(cè)、服務(wù)發(fā)現(xiàn)和配置管理的功能。Consul的功能都很實(shí)用,其中包括:服務(wù)注冊(cè)/發(fā)現(xiàn)、健康檢查、Key/Value存儲(chǔ)、多數(shù)據(jù)中心和分布式一致性保證等特性。Consul本身只是一個(gè)二進(jìn)制的可執(zhí)行文件,所以安裝和部署都非常簡(jiǎn)單,只需要從官網(wǎng)下載后,在執(zhí)行對(duì)應(yīng)的啟動(dòng)腳本即可。
Consul特性
基礎(chǔ)特性
1.服務(wù)注冊(cè)/發(fā)現(xiàn)
為什么微服務(wù)架構(gòu)下就需要做服務(wù)注冊(cè)和服務(wù)發(fā)現(xiàn)呢?微服務(wù)的目標(biāo)就是要將原來大一統(tǒng)的系統(tǒng)架構(gòu),拆分成細(xì)粒度的按功能職責(zé)分成的小系統(tǒng),這樣就會(huì)出現(xiàn)很多小的系統(tǒng),部署的節(jié)點(diǎn)也會(huì)隨之增加。試想一下,如果沒有一個(gè)統(tǒng)一的服務(wù)組件來管理各系統(tǒng)間的列表,微服務(wù)架構(gòu)是很難落地實(shí)現(xiàn)的。
Consul提供的服務(wù)注冊(cè)/發(fā)現(xiàn)功能在數(shù)據(jù)強(qiáng)一致性和分區(qū)容錯(cuò)性上都有非常好的保證,但在集群可用性下就會(huì)稍微差一些(相比Euerka來說)。
2.數(shù)據(jù)強(qiáng)一致性保證
Consul采用了一致性算法Raft來保證服務(wù)列表數(shù)據(jù)在數(shù)據(jù)中心中各Server下的強(qiáng)一致性,這樣能保證同一個(gè)數(shù)據(jù)中心下不管某一臺(tái)Server Down了,請(qǐng)求從其他Server中同樣也能獲取的最新的服務(wù)列表數(shù)據(jù)。數(shù)據(jù)強(qiáng)一致性帶來的副作用是當(dāng)數(shù)據(jù)在同步或者Server在選舉Leader過程中,會(huì)出現(xiàn)集群不可用。
3.多數(shù)據(jù)中心
Consul支持多數(shù)據(jù)中心(Data Center),多個(gè)數(shù)據(jù)中心之間通過Gossip協(xié)議進(jìn)行數(shù)據(jù)同步。多數(shù)據(jù)中心的好處是當(dāng)某個(gè)數(shù)據(jù)中心出現(xiàn)故障時(shí),其他數(shù)據(jù)中心可以繼續(xù)提供服務(wù),提升了可用性。
4.健康檢查
Consul支持基本硬件資源方面的檢查,如:CPU、內(nèi)存、硬盤等
5.Key/Value存儲(chǔ)
Consul支持Key/Value存儲(chǔ)功能,可以將Consul作為配置中心使用,可以將一些公共配置信息配置到Consul,然后通過Consul提供的 HTTP API來獲取對(duì)應(yīng)Key的Value。
高級(jí)特性
1.HTTP API
2.ACL
Consul工作模式
從上圖可以看到,Consul中包括的3種不同的角色:Client、Server、Server-Leader。還有一個(gè)在圖上沒有標(biāo)出來的角色Agent,一共4個(gè)角色,下面會(huì)逐一介紹它們的作用。
Agent
1.是一個(gè)守護(hù)線程
2.跟隨Consul應(yīng)用啟動(dòng)而啟動(dòng)
3.負(fù)責(zé)檢查、維護(hù)節(jié)點(diǎn)同步
Client
1.轉(zhuǎn)發(fā)所有請(qǐng)求給Server
2.無狀態(tài),不持久化數(shù)據(jù)
3.參與LAN Gossip的健康檢查
Server
1.持久化數(shù)據(jù)
2.轉(zhuǎn)發(fā)請(qǐng)求給Server-Leader
3.參與Server-Leader選舉
4.通過WAN Gossip,與其他數(shù)據(jù)中心交換數(shù)據(jù)
Server-Leader
1.響應(yīng)RPC請(qǐng)求
2.服務(wù)列表數(shù)據(jù)同步給Server
Consul工作原理
服務(wù)注冊(cè)的方式
Consul服務(wù)注冊(cè)有兩種方式:HTTP API & JSON配置文件
方式一:HTTP API
http://{ip}:8500/v1/agent/service/register/:service
1
方式二:JSON 配置文件
{ "services": [ { "id": "serverId", "name": "serverName", "tags": [ "primary" ], "address": "127.0.0.1", "port": 9003, "checks": [ { "id": "api-servie", "name": "Service 'xx' check", "http": "http://127.0.0.1:9003/public/health", "method": "GET", "interval": "10s", "timeout": "1s" } ] } ] }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
啟動(dòng)Consul增加啟動(dòng)參數(shù)-config-dir
nohup ./consul agent -dev -config-dir=/consul-conf/service.json &
1
服務(wù)發(fā)現(xiàn)的方式
服務(wù)發(fā)現(xiàn)的方式同時(shí)有兩種:HTTP API & DNS Agent
方式一:HTTP API
//獲取某個(gè)service下健康的服務(wù)列表信息 http://{ip}:8500/v1/health/service/:service
1
2
方式二:DNS Agent
工作流程
微服務(wù) 邊緣數(shù)據(jù)中心管理 EDCM
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請(qǐng)聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請(qǐng)聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。