一.為什麼有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
namespace3.3.**啟動後需要consul註冊3.3.1.consulservicefind
public
static iwebhostbuilder createwebhostbuilder(string args) =>webhost.createdefaultbuilder(args)
.configurelogging((context, loggingbuilder)
=>//ilogger
).usestartup
(); }
}
nuget
引用consul後,封裝consulregister類
namespace3.3.2.consulservicefind
);
//向consul註冊服務
taskresult = consulclient.agent.serviceregister(new
agentserviceregistration() ,//
可以用來設定權重
check=new
agentservicecheck() :/api/health
",//
健康檢查位址
timeout = timespan.fromseconds(5
) }
});}}}
在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未指定...