99re热这里只有精品视频,7777色鬼xxxx欧美色妇,国产成人精品一区二三区在线观看,内射爽无广熟女亚洲,精品人妻av一区二区三区

Consul 基礎(chǔ)入門

2018-10-10 19:00 更新

Consul 架構(gòu) 此篇文章主要對consul的相關(guān)內(nèi)部技術(shù)細(xì)節(jié)進(jìn)行簡要概述。

?術(shù)語 代理 - 代理是指consul集群中運(yùn)行的consul實(shí)例,通過執(zhí)行 consul agent 命令來啟動. 代理可以運(yùn)行于客戶端或者服務(wù)端。通過執(zhí)行DNS或者HTTP接口來執(zhí)行健康檢查和服務(wù)同步。

客戶節(jié)點(diǎn) - 客戶節(jié)點(diǎn)負(fù)責(zé)將向服務(wù)節(jié)點(diǎn)發(fā)送RPC請求,相對來說是無狀態(tài)的.??蛻艄?jié)點(diǎn)唯一要執(zhí)行的后臺活動是參與LAN gossip pool。當(dāng)然這只會消耗很少的資源和網(wǎng)絡(luò)帶寬。

服務(wù)節(jié)點(diǎn) - 服務(wù)節(jié)點(diǎn)主要職責(zé)包括參與Raft算法,維護(hù)集群狀態(tài),處理RPC查詢,和其它的數(shù)據(jù)中心交換WLAN gossip及向領(lǐng)導(dǎo)者或者遠(yuǎn)程數(shù)據(jù)中心轉(zhuǎn)發(fā)查詢請求。

數(shù)據(jù)中心 – …

維護(hù)一致性- 包括領(lǐng)導(dǎo)者選舉及事務(wù)執(zhí)行順序方面的一致性。

Gossip - Consul是建立在Serf之上的,支持全部的gossip protocol(節(jié)點(diǎn)間隨機(jī)通信,主要通過UDP)。Serf 提供關(guān)系管理, 失敗檢測及事件分發(fā)功能. Consul gossip應(yīng)用詳情可以訪問連接gossip documentation。

LAN Gossip - 本地局域網(wǎng)或數(shù)據(jù)中心節(jié)點(diǎn)間Gossip應(yīng)用.

WAN Gossip – WAN 范圍(不同數(shù)據(jù)中心,主要通過internet或者wan通信)內(nèi)服務(wù)器節(jié)點(diǎn)間Gossip應(yīng)用。

RPC - 遠(yuǎn)程過程調(diào)用,請求/回復(fù)機(jī)制。

?基本架構(gòu) consul-arch-420ce04a

如上圖所示,Consul先天支持多數(shù)據(jù)中心應(yīng)用:multiple datacenters 。

數(shù)據(jù)中心中包含客戶節(jié)點(diǎn)和服務(wù)節(jié)點(diǎn),通常建議三到五個(gè)服務(wù)節(jié)點(diǎn)。因?yàn)殡S著節(jié)點(diǎn)的增加,服務(wù)同步會變得相對更慢,同時(shí)考慮到服務(wù)失敗和性能要求等方面因素。但是對于客戶節(jié)點(diǎn)數(shù)量,則沒有限制。

數(shù)據(jù)中心中的所有節(jié)點(diǎn)都會參數(shù)gossip protocol. 也就是說包括數(shù)據(jù)中心中所有的節(jié)點(diǎn)。這樣做有幾個(gè)目的,首先, 無需給客戶節(jié)點(diǎn)配置服務(wù)節(jié)點(diǎn)地址,就可以自動發(fā)現(xiàn)。其次,失效節(jié)點(diǎn)檢測是分布式的,相對于心跳檢測模式更具伸縮性。最后,事件分發(fā)是以消息模式分發(fā)處理的。

節(jié)點(diǎn)之間利用Raft協(xié)議選舉領(lǐng)導(dǎo)者,領(lǐng)導(dǎo)者負(fù)責(zé)處理所有的查詢和事務(wù)請求。同時(shí)根據(jù)Gossip協(xié)議,事務(wù)請求需要分發(fā)到所有的協(xié)議節(jié)點(diǎn)。所有當(dāng)一個(gè)非領(lǐng)導(dǎo)者服務(wù)節(jié)點(diǎn)收到一個(gè)Rpc請求時(shí),它會將其轉(zhuǎn)發(fā)至集群領(lǐng)導(dǎo)者進(jìn)行后續(xù)處理。

服務(wù)節(jié)點(diǎn)同時(shí)也是WAN gossip pool的一部分。相對于LAN pool,WAN pool是專門為高延遲因特網(wǎng)而優(yōu)化使用的,它只包含服務(wù)節(jié)點(diǎn),提供數(shù)據(jù)中心之間低接觸式發(fā)現(xiàn)機(jī)制。它支持跨數(shù)據(jù)中心請求,當(dāng)一個(gè)數(shù)據(jù)中心接到請求其它數(shù)據(jù)中心數(shù)據(jù)的請求時(shí),它會將其轉(zhuǎn)發(fā)至目標(biāo)數(shù)據(jù)中心中隨機(jī)的一個(gè)服務(wù)節(jié)點(diǎn)。

由此,大大的降低了數(shù)據(jù)中心的耦合度。但是,因?yàn)橛邢鄳?yīng)的失敗檢測,連接緩存和復(fù)用,數(shù)據(jù)中心之間的交互也相對快捷可靠。

通常來說,數(shù)據(jù)中心之間是不進(jìn)行數(shù)據(jù)交換的,當(dāng)一個(gè)數(shù)據(jù)中心接收到一個(gè)請求其它數(shù)據(jù)中心資源的請求時(shí),它會將其進(jìn)行轉(zhuǎn)發(fā),由相應(yīng)的數(shù)據(jù)中心進(jìn)行處理。當(dāng)目標(biāo)數(shù)據(jù)中心不可用,也就意味著所請求的資源不可用。但也有一些特俗情況,會造成數(shù)據(jù)的分發(fā),如,consul的內(nèi)置ACL replication功能,及其它相關(guān)的外部工具。

一致性模型:

默認(rèn)(特定的舊leader的時(shí)間窗口內(nèi),舊leader處理讀請求):Raft使用leader leasing,提供一個(gè)時(shí)間窗口,這個(gè)時(shí)間內(nèi),leader假定他的leader角色是穩(wěn)定的。然而,如果這個(gè)leader和余下的節(jié)點(diǎn)分隔開。在舊leader持有時(shí)間窗口的同時(shí),集群就會選出一個(gè)新的leader。這就意味著,集群有兩個(gè)leader節(jié)點(diǎn)。發(fā)生裂鬧現(xiàn)象并沒有風(fēng)險(xiǎn),因?yàn)榕fleader不能提交新的條目。然而,對于只讀請求,舊leader很大可能性上會返回過期數(shù)據(jù)。默認(rèn)的一致性模型依賴于leader leasing,客戶端有可能會獲取到過期的數(shù)據(jù)的風(fēng)險(xiǎn)。我們之所以做這種妥協(xié)是因?yàn)?,只讀請求通常很快,并且是強(qiáng)一致性的。只會在hard-to-trigger情況下會返回過期數(shù)據(jù)。會返回過期數(shù)據(jù)的時(shí)間窗口長度也是有限的,因?yàn)榕f的leader會因?yàn)榉至训陌l(fā)生降級。

一致性(consistent):強(qiáng)一致性模型,這個(gè)模型需要leader處理讀請求錢,通過詢問quorum檢查自己的leader合法性,因此增加了一輪RPCs,好處是,讀請求的一致性,但是卻增加了延遲。

過期(stale):這種模型,允許所有的節(jié)點(diǎn)處理客戶端的讀請求。無論是否是leader節(jié)點(diǎn)。這就意味著讀取過期數(shù)據(jù)更加普遍,但是也僅僅是在leader的最小超時(shí)時(shí)間50ms內(nèi)。好處是,處理只讀請求塊,適用于大規(guī)模請求,但是伴隨著普遍的過期數(shù)據(jù)。模型在沒有l(wèi)eader的情況下依然可以處理來此客戶端的讀請求。

Consul Agent:

consul agent是consul的核心,負(fù)責(zé)維護(hù)成員關(guān)系信息,注冊服務(wù),運(yùn)行健康檢查,提供查詢等。每個(gè)集群的節(jié)點(diǎn)都需要部署consul agent。 兩種模式:client,server。相較于client,serer模式agent,參與Raft一致性算法。負(fù)責(zé)提供,保持集群的強(qiáng)一致性及可用性。server agent和數(shù)據(jù)及系統(tǒng)資源有更多的交互,因此需要運(yùn)行在專用的節(jié)點(diǎn)上。client agent則比較輕量,大多數(shù)操作只需要請求server agent去完成,只需要維護(hù)相對很少的狀態(tài)。

D:\consul>consul agent -server -bootstrap-expect=1 -data-dir=data -node=server0 -bind=127.0.0.1 -client 0.0.0.0 -ui BootstrapExpect is set to 1; this is the same as Bootstrap mode. bootstrap = true: do not enable unless necessary ==> Starting Consul agent... ==> Consul agent running! Version: 'v1.0.2' Node ID: '1ad0d5d0-80df-29ed-e795-ce50bfd70f2f' //節(jié)點(diǎn)唯一ID Node name: 'server0' //節(jié)點(diǎn)名稱,默認(rèn)為機(jī)器的主機(jī)名,可以通過 -node 進(jìn)行設(shè)置 Datacenter: 'dc1' (Segment: '<all>') //所在數(shù)據(jù)中心,單數(shù)據(jù)中心默認(rèn)為dc1,可以通過 -datacenter 設(shè)置。 Server: true (Bootstrap: true) //運(yùn)行模式, Client Addr: [0.0.0.0] (HTTP: 8500, HTTPS: -1, DNS: 8600) // 客戶端地址,服務(wù)于HTTP DNS接口,默認(rèn)綁定localhost Cluster Addr: 127.0.0.1 (LAN: 8301, WAN: 8302) // 和集群內(nèi)成員通信的地址和端口,LAN WAN Encrypt: Gossip: false, TLS-Outgoing: false, TLS-Incoming: false

==> Log data will now stream in as it occurs:

停止: gracefully:ctrl-c 和 kill -INT。agent告知集群自己將要離開集群。建議 forcefully:kill -9 立即停止實(shí)例,集群通過失敗檢測發(fā)現(xiàn)

生命周期: 節(jié)點(diǎn)啟動 =》join命令,或者通過配置,加入集群 =》成員變更信息通過gossip協(xié)議傳播到集群其它成員,最終所有其它成員都將獲悉節(jié)點(diǎn)的加入 =》如果是server 節(jié)點(diǎn),則其它服務(wù)幾點(diǎn)將進(jìn)行日志復(fù)制 =》如果發(fā)生網(wǎng)絡(luò)問題,節(jié)點(diǎn)信息無法獲悉(無論是因?yàn)榫W(wǎng)絡(luò)問題無法通訊還是節(jié)點(diǎn)宕機(jī))。則失聯(lián)節(jié)點(diǎn)標(biāo)記為失效,其它節(jié)點(diǎn)更新集群成員信息 =》節(jié)點(diǎn)離開,則集群標(biāo)記節(jié)點(diǎn)狀態(tài)為“已離開”,區(qū)別于節(jié)點(diǎn)失敗(所有節(jié)點(diǎn)上注冊的服務(wù)會立即被注銷),如果是server節(jié)點(diǎn),則復(fù)制過程停止 =》為了防止死節(jié)點(diǎn)信息的堆積,consul會自動將這些信息從成員信息列表中移除,稱之為收割。目前配置的時(shí)間隔72小時(shí)執(zhí)行一次,當(dāng)此時(shí),類似于節(jié)點(diǎn)失敗,移除的節(jié)點(diǎn)信息上注冊的服務(wù)會被注銷。

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號