微服務治理 Consul服務註冊與發現,健康檢查

2022-03-05 22:11:11 字數 3104 閱讀 5147

一.為什麼有consul?

在微服務架構中,每1個服務都是集群式的提供服務,訂單服務在10臺伺服器上都有,那麼使用者的請求到達,獲取哪台伺服器的訂單服務呢?如果10台中有的訂單服務掛了怎麼辦?10臺伺服器扛不住了,水平擴充套件又新增加了1臺

伺服器提供訂單服務,怎麼讓使用者請求知道有新的伺服器提供訂單服務了?這時候就需要consul了,它能通過心跳檢測哪些服務還活著,而且有新的服務啟動,它也能夠主動發現。

1.s-b-1服務,s-b-2服務,s-b-3服務註冊到consul

2.consul健康檢查s-b-1服務,s-b-2服務,s-b-3服務

3.s-a呼叫s-b-1服務,或s-b-2服務,或s-b-3服務

二.consul環境準備

consul官網:

2.2.啟動consul管理後台

碟符切到放consul.exe的目錄,然後cmd啟動,

cd d:\consul\consul agent -dev

2.3.訪問consul管理後台:http://localhost:8500

三.**落地

3.1.新增webapi服務

}}3.2.log4net 整合到core3.2.1.nuget引入log4net

3.2.2.

nuget

引入microsoft.extensions.logging.log4net.aspnetcore

3.2.3.新增log4net 配置檔案 (設定配置檔案屬性為始終複製,預設配置檔案放在根目錄下)

3.2.4.注入ilogger

namespace

consulservicefind

public

static iwebhostbuilder createwebhostbuilder(string args) =>webhost.createdefaultbuilder(args)

.configurelogging((context, loggingbuilder)

=>//ilogger

).usestartup

(); }

}

3.3.**啟動後需要consul註冊3.3.1.

nuget

引用consul後,封裝consulregister類

namespace

consulservicefind

);

//向consul註冊服務

taskresult = consulclient.agent.serviceregister(new

agentserviceregistration() ,//

可以用來設定權重

check=new

agentservicecheck() :/api/health

",//

健康檢查位址

timeout = timespan.fromseconds(5

) }

});}}}

3.3.2.

在startup的configure方法裡使用consul

心跳檢測,新增healthcheck也就是另外乙個webapi,做健康檢查

4.啟動多個webapi例項,執行兩個webapi服務起來4.4.

2.通過命令列啟動2個不同埠的webapi

4.3.去consul管理後台http://localhost:8500檢視多個服務被發現和心跳檢測 

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

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

服務治理 Consul

consul 註冊中心 功能 1 服務發現 service discovery consul的客戶端可以註冊服務,比如api,另外一些客戶端可使用consul查詢給定服務的提供者。使用dns或者http,應用程式可以輕鬆找到它們依賴的服務。理解 用dns舉例 consul是儲存服務名稱與ip和埠對應...

consul服務註冊

這是定義服務的根級引數。您可以指定引數來配置服務。範圍描述 預設必需的 id 指定服務 id 的字串值。如果未指定,name將使用該字段的值。每個節點的服務必須具有唯一的 id,因此如果預設值name會與其他服務衝突,您應該指定唯一的值。name引數值 可選的name 指定服務的名稱。如果id未指定...