微服務 服務註冊發現(三)Consule

2022-03-21 08:52:55 字數 2492 閱讀 6615

consul 集群

在consul方案中,每個提供服務的節點上都要部署和執行consul的agent,所有執行consul agent節點的集合構成consul cluster。

consul agent有兩種執行模式:server和client。這裡的server和client只是consul集群層面的區分,與搭建在cluster之上的應用服務無關。

以server模式執行的consul agent節點用於維護consul集群的狀態,

官方建議每個consul cluster至少有3個或以上的執行在server mode的agent,client節點不限。

我們選擇了consul作為服務註冊中心的實現方案,主要原因有兩點:

最小化對已有應用的侵入性,這也是貫穿我們整個微服務化改造的原則之一

降低運維的複雜度,consul agent既可以執行在伺服器模式,又可以執行在客戶端模式

consul本質上屬於應用外的註冊方式,但可以通過sdk簡化註冊流程。而服務發現恰好相反,預設依賴於sdk,但可以通過consul template(下文會提到)去除sdk依賴。

上文提到使用consul,預設服務呼叫者需要依賴consul sdk來發現服務,這就無法保證對應用的零侵入性。所幸通過consul template,可以定時從consul集群獲取最新的服務提供者列表並重新整理lb配置(比如nginx的upstream),這樣對於服務呼叫者而言,只需要配置乙個統一的服務呼叫位址即可。改造後的呼叫關係如下:

consul 的優勢

使用 raft 演算法來保證一致性, 比複雜的 paxos 演算法更直接. 相比較而言, zookeeper 採用的是 paxos, 而 etcd 使用的則是 raft.

支援多資料中心,內外網的服務採用不同的埠進行監聽。 多資料中心集群可以避免單資料中心的單點故障,而其部署則需要考慮網路延遲, 分片等情況等. zookeeper 和 etcd 均不提供多資料中心功能的支援.

支援健康檢查. etcd 不提供此功能.

支援 http 和 dns 協議介面. zookeeper 的整合較為複雜, etcd 只支援 http 協議.

官方提供web管理介面, etcd 無此功能.

consul 的角色

spring cloud consul 整合

由於我們選用了spring boot作為統一的微服務實現框架,很自然的,可以利用spring cloud提供的consul元件進一步簡化服務註冊流程,省去額外的服務提供端的consul配置。

引入依賴

<

dependencies

>

<

dependency

>

<

groupid

>org.springframework.boot

groupid

>

<

artifactid

>spring-boot-starter-actuator

artifactid

>

dependency

>

<

dependency

>

<

groupid

>org.springframework.cloud

groupid

>

<

artifactid

>spring-cloud-starter-consul-discovery

artifactid

>

dependency

>

<

dependency

>

<

groupid

>org.springframework.boot

groupid

>

<

artifactid

>spring-boot-starter-test

artifactid

>

<

scope

>test

scope

>

dependency

>

dependencies

>

鏈結史上最簡單的 springcloud 教程 | 第十四篇: 服務註冊(consul)

spring cloud構建微服務架構:服務註冊與發現(eureka、consul)【dalston版】

spring cloud構架微服務 服務註冊consul

consul入門01 - 安裝consul

微服務 Consul(服務註冊發現)

類似dns伺服器會根據我們的網域名稱解析出乙個ip位址,然後去請求這個ip來獲取我們想要的資料,它可以讓我們只需說我想要什麼服務即可,而不必去關心服務提供者的具體網路位置 ip 位址 埠等 目前,服務發現主要分為兩種模式,客戶端模式與服務端模式 在客戶端模式下,首先要到服務註冊中心獲取服務列表,然後...

微服務2,3,4 註冊與發現

格物致知,格註冊與發現。服務發現承載服務提供與消費者之間的橋梁,各個微服務與服務發現元件使用心跳機制進行通訊。服務發現元件如果長時間無法與某微服務例項通訊,就會登出該例項。spring cloud提供了多種服務發現元件的支援,如eureka,consul 和 zookeeper等 單節點eureka...

聊聊微服務的服務註冊與發現

摘要 乙個好的服務註冊發現中介軟體,應該是能完整地滿足服務開發和治理的基礎功能,然後才是效能和高可用。如果沒有想清楚前面的功能,再高的可用性和效能都是浮雲。最後,安全也同樣重要。下面將從 服務註冊 服務發現 容災和高可用三個大方面來回答這些問題的主流做法。聊起微服務的服務註冊與發現,很多人立馬就會脫...