自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Golang 語(yǔ)言微服務(wù)的服務(wù)注冊(cè)與發(fā)現(xiàn)組件 Consul

開(kāi)發(fā) 后端
在 2016 年底,我開(kāi)始接觸 Golang 語(yǔ)言和微服務(wù),在過(guò)去的 5 年中,微服務(wù)架構(gòu)變得越來(lái)越流行,目前中型及以上規(guī)模的公司幾乎已經(jīng)全部拋棄單體架構(gòu)。

01介紹

在 2016 年底,我開(kāi)始接觸 Golang 語(yǔ)言和微服務(wù),在過(guò)去的 5 年中,微服務(wù)架構(gòu)變得越來(lái)越流行,目前中型及以上規(guī)模的公司幾乎已經(jīng)全部拋棄單體架構(gòu)。

本文我們主要介紹 Golang 語(yǔ)言微服務(wù)的服務(wù)注冊(cè)與發(fā)現(xiàn)組件 consul。在介紹 Consul 之前,我們先簡(jiǎn)單了解一下服務(wù)注冊(cè)與發(fā)現(xiàn)和 CAP 定理。

02服務(wù)注冊(cè)與發(fā)現(xiàn)

微服務(wù)架構(gòu)與單體架構(gòu)不同,微服務(wù)架構(gòu)按照業(yè)務(wù)需求拆分為多個(gè)微服務(wù),每個(gè)微服務(wù)都可以動(dòng)態(tài)部署。

服務(wù)注冊(cè)與發(fā)現(xiàn)組件負(fù)責(zé)管理拆分的各個(gè)微服務(wù),其中服務(wù)注冊(cè)是指微服務(wù)實(shí)例啟動(dòng)時(shí),將其信息注冊(cè)到服務(wù)注冊(cè)與發(fā)現(xiàn)組件;服務(wù)發(fā)現(xiàn)是指微服務(wù)實(shí)例通過(guò)請(qǐng)求服務(wù)注冊(cè)與發(fā)現(xiàn)組件,獲取其需要遠(yuǎn)程調(diào)用的其他微服務(wù)實(shí)例的信息。

服務(wù)注冊(cè)與發(fā)現(xiàn)組件的功能包括管理當(dāng)前注冊(cè)到服務(wù)注冊(cè)與發(fā)現(xiàn)組件的微服務(wù)實(shí)例;心跳檢測(cè)注冊(cè)到服務(wù)注冊(cè)與發(fā)現(xiàn)組件的微服務(wù)實(shí)例;為調(diào)用方的微服務(wù)實(shí)例提供被調(diào)用的微服務(wù)實(shí)例的信息。

03CAP 定理

CAP 定理由加州大學(xué)柏克萊分校的 Eric Brewer 教授提出,它是描述分布式系統(tǒng)下節(jié)點(diǎn)數(shù)據(jù)同步的基本定理。

其核心是告訴我們,在分布式系統(tǒng)中有三方面需要彼此權(quán)衡,分別是一致性(consistency)、可用性(availability)和分區(qū)容忍性(partition tolerance),CAP 定理告訴我們,以上三個(gè)指標(biāo)最多只能滿足其中兩個(gè)指標(biāo)。

其中,一致性是當(dāng)訪問(wèn)多個(gè)節(jié)點(diǎn)時(shí)能得到同樣的值;可用性意味著每個(gè)請(qǐng)求都能獲得響應(yīng);分區(qū)容忍性是指集群中的某些節(jié)點(diǎn)在無(wú)法通信后,集群整體還能繼續(xù)提供服務(wù)。

微服務(wù)架構(gòu)實(shí)際上就是分布式系統(tǒng)的一種落地實(shí)踐。

04Consul

目前業(yè)界已經(jīng)開(kāi)源出很多服務(wù)注冊(cè)與發(fā)現(xiàn)組件,例如 Java 語(yǔ)言開(kāi)發(fā)的致力于為分布式系統(tǒng)提供一致性服務(wù)的 zookeeper,使用 Golang 語(yǔ)言開(kāi)發(fā)的主要用于服務(wù)發(fā)現(xiàn)與配置共享的 etcd 和 consul。

其中,Consul 是以服務(wù)發(fā)現(xiàn)與配置作為主要功能目標(biāo),附帶提供了 Key/Value 存儲(chǔ),僅從服務(wù)注冊(cè)與發(fā)現(xiàn)組件的需求考慮,Consul 更適合。

Consul 是一個(gè)服務(wù)網(wǎng)格解決方案,滿足 CAP 定理中的 CP,提供服務(wù)發(fā)現(xiàn)和配置共享的功能。這些功能中的每一個(gè)都可以根據(jù)需要單獨(dú)使用,也可以一起使用以構(gòu)建完整的服務(wù)網(wǎng)格。

Consul 附帶了一個(gè)簡(jiǎn)單的內(nèi)置代理,因此一切都開(kāi)箱即用,但也支持第三方代理集成,如 Envoy。

Consul 主要特性:

  • 服務(wù)發(fā)現(xiàn)
  • 健康檢查
  • KV 存儲(chǔ)
  • 安全服務(wù)通信
  • 多數(shù)據(jù)中心

Consul 是一個(gè)高可用的分布式系統(tǒng),支持多數(shù)據(jù)中心部署,每個(gè)數(shù)據(jù)中心都運(yùn)行一個(gè) Consul 集群。一個(gè) Consul 集群由部署和運(yùn)行 Consul Agent 的節(jié)點(diǎn)組成。

Consul Agent 負(fù)責(zé)服務(wù)注冊(cè)、運(yùn)行檢查和響應(yīng)查詢(將查詢請(qǐng)求轉(zhuǎn)發(fā)到 Consul server 中進(jìn)行處理),服務(wù)發(fā)現(xiàn)或讀寫 Key/Value 數(shù)據(jù)不需要運(yùn)行 Consul Agent。

Consul 集群包含 Consul server 和 Consul client,Consul server 負(fù)責(zé)存儲(chǔ)和復(fù)制數(shù)據(jù)。多個(gè) Consul server 之間基于 Raft 協(xié)議選舉一個(gè) leader。雖然 Consul 可以只使用一個(gè) Consul server,但官方建議使用 3 到 5 個(gè) Consul server,以避免數(shù)據(jù)丟失。

Consul client 負(fù)責(zé)將請(qǐng)求轉(zhuǎn)發(fā)給同一數(shù)據(jù)中心的 Consul server 處理。當(dāng)發(fā)出跨數(shù)據(jù)中心服務(wù)發(fā)現(xiàn)或配置請(qǐng)求時(shí),本地 Consul server 會(huì)將請(qǐng)求轉(zhuǎn)發(fā)到遠(yuǎn)程數(shù)據(jù)中心并返回結(jié)果。

05總結(jié)

本文我們先簡(jiǎn)單認(rèn)識(shí)一下 Consul,同時(shí)介紹了服務(wù)注冊(cè)與發(fā)現(xiàn)是什么,微服務(wù)作為分布式系統(tǒng)的一種落地實(shí)踐,也需要遵循 CAP 定理,并列舉了業(yè)界目前開(kāi)源的滿足 CP 的服務(wù)注冊(cè)與發(fā)現(xiàn)組件有哪些。

本文轉(zhuǎn)載自微信公眾號(hào)「 Golang語(yǔ)言開(kāi)發(fā)?!梗梢酝ㄟ^(guò)以下二維碼關(guān)注。轉(zhuǎn)載本文請(qǐng)聯(lián)系 Golang語(yǔ)言開(kāi)發(fā)棧公眾號(hào)。

 

責(zé)任編輯:武曉燕 來(lái)源: Golang語(yǔ)言開(kāi)發(fā)棧
相關(guān)推薦

2022-01-26 09:36:53

Consul語(yǔ)言微服務(wù)

2023-06-02 08:33:43

微服務(wù)架構(gòu)服務(wù)注冊(cè)

2017-06-25 13:33:25

Spring Clou微服務(wù)架構(gòu)

2025-01-20 00:10:00

Go語(yǔ)言Kratos

2022-06-17 12:05:25

微服務(wù)注冊(cè)

2020-06-29 07:58:18

ZooKeeperConsul 注冊(cè)中心

2022-04-26 05:36:42

服務(wù)治理模式

2021-04-20 17:20:59

SpringColud EurekaNetflix開(kāi)發(fā)

2015-12-25 11:00:52

Zookeeper的Python

2025-01-09 08:32:50

2020-10-14 15:37:04

Goconsul接口

2023-09-07 23:25:34

微服務(wù)服務(wù)發(fā)現(xiàn)

2023-11-29 16:21:30

Kubernetes服務(wù)注冊(cè)

2022-08-14 07:04:44

微服務(wù)架構(gòu)設(shè)計(jì)模式

2018-09-14 09:23:03

微服務(wù)服務(wù)集成

2022-02-09 07:03:01

SpringNacos服務(wù)注冊(cè)

2022-02-07 07:10:32

服務(wù)注冊(cè)功能

2025-03-31 08:35:00

Eureka微服務(wù)架構(gòu)

2024-07-02 10:58:53

2018-12-17 16:44:49

Golang微服務(wù)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)