引用 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提供了一種完整的服務...