Consul初探 服務註冊和發現

2022-01-15 13:05:11 字數 3023 閱讀 9984

引用 consul.net 客戶端

在 .netcore 平台下,可以使用 consul 的客戶端元件,使其嵌入到業務系統中,完成服務自動註冊、健康檢查等工作,為了使用這些自動化的功能,需要在專案中進行 nuget 包引用

截止本文發文時,consul 的 netstandard 最新版本是 0.7.2.6,從版本號來看,更新的頻率非常頻繁,但是 github 上的 star 數量並不多,這就表示 .netcore 社群在 consul 的關注度上還是非常小眾的。

改造 program.cs 程式入口

public static iwebhost buildwebhost(string args)

://:";

return webhost.createdefaultbuilder(args)

.usestartup()

.useconfiguration(config)

.useurls(url)

.build();

}

上面的**將命令列的引數編譯為配置檔案物件,這些引數為了方便除錯,我一次性的寫入了properties\launchsettings.json 檔案中,如下圖

在 launchsettings.json 檔案中的表現形式為:

}}

建立 startupextension.cs

我們需要在服務啟動後,將服務自動註冊到 consul 的**伺服器集群中,為此,需要封裝一些簡單的註冊**,以便復用

public static class startupextension

/// /// 將 consulclient 注入管道

///

///

///

///

///

iconfiguration configuration,

ioptionscc)

://:");

var serviceid = $"--";

var ipv4 = clientip.host;

var consulclient = new consulclient(config =>

);var healthcheck = new agentservicecheck()

://:"

};var reginfo = new agentserviceregistration()

,address = ipv4,

id = serviceid,

name = clientconfig.clientname,

port = clientip.port

};consulclient.agent.serviceregister(reginfo).getawaiter().getresult(););}

/// /// 實現健康檢查輸出,無需另行定義 controller

///

///

", datetime.now);

console.foregroundcolor = consolecolor.gray;

await context.response.writeasync("ok");

});});}}

上面的**,實現是服務註冊和健康檢查的邏輯,**比較簡單,每個方法頭部都有注釋,應該還是比較清晰,這裡就不再過多解釋了,接下來開始在 startup.cs 中啟用 consulclient。

服務注入

public void configureservices(iservicecollection services)

加入請求管道佇列

ihostingenvironment env,

ioptionscc)

下面簡單的實現乙個 controller,在該 controller 裡面增加兩個業務介面,方便呼叫就好

}好了,到這裡,服務註冊的準備工作基本完成,接下來,按 f5 啟動程式,程式將自動進行服務註冊等工作

圖中藍色部分,就是 consul **伺服器集群對當前服務執行的健康檢查,健康檢查的原則只有一條,執行 http 請求,並返回 httpstatus=200 即視為健康,開啟 consul 的 web 控制台介面,檢視實際的服務狀態

從上圖中可以看到,服務狀態是正常的(綠色)

consul 系統了許多 api 介面,供服務閘道器(或者**)從 consul 中獲取已註冊的健康的服務,比如下面的 api 位址

獲取所有已註冊的健康的服務

獲取指定的服務
上圖中的內容,就是單個服務的註冊資訊,圖中紅色部分,是真實的服務的主機位址和偵聽的埠,閘道器**可以將指定路由**到該位址實現業務呼叫。

consul服務註冊與發現

是一套開源的分布式服務發現與配置管理系統,有hashicorp公司用go語言開發,提供了微服務系統中的服務治理,配置中心,控制匯流排等功能。這些功能中的每乙個都可以根據需要單獨使用,也可以一起使用,以構建全方位的服務網路,總之consul提供了一整套服務網路解決方案 org.springframew...

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

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

四 服務註冊與發現Consul

三 註冊中心的對比 consul是一套開源的分布式服務發現和配置管理系統,由hashicorp公司用go語言開發。consul提供了微服務系統中的服務治理 配置中心控制匯流排等功能。這些功能中的每乙個都可以根據需要單獨使用,也可以一 起使用以構建全方位的服務網格,總之consul提供了一種完整的服務...