Bumblebee微服务网关之consul服务发现
網關需要維護相關負載的服務器,手動添加相對來說是一件比較麻煩的工作;為了解決這一問題組件擴展了一個基于consul服務發現插件,通過配置這個插件和啟用后網關會自動從consul服務中獲取服務并添加到網關對應的路由負載規則中。
引用插件
Bumblebee使用服務發現需要引用兩個插件,分別是BeetleX.Bumblebee.Configuration和BeetleX.Bumblebee.BeetleX.Bumblebee.Consul。加載啟動后就可以通過管理工具進行插件配置.
g = new Gateway();g.HttpOptions(
o =>
{
o.Port = 80;
o.LogToConsole = true;
o.LogLevel = BeetleX.EventArgs.LogType.Error;
});
g.Open();
g.LoadPlugin(
typeof(Bumblebee.Configuration.Management).Assembly,
typeof(Bumblebee.Consul.ConsulPlugin).Assembly
);
如果不想自己編寫代碼可以下載編譯的運行包?https://github.com/IKende/Bumblebee/blob/master/bin/?下載1.1.9或更高版本;運行后 訪問?http://host/__system/bumblebee/
插件管理
運行程序后進行配置管理工具的插件管理頁面,可以看到Consul插件,組件默認是關閉需要進行一些配置。?
插件配置
{"ConsulAddress": "http://192.168.2.19:8500",
"Services": [
"bumblebee_services"
],
"Token": null,
"DataCenter": "dc1"
}
ConsulAddress 對應Consul的服務地址
Services 檢索相應名稱的服務列表一個或多個
Token 訪問Consul相應的Token信息
DataCenter 檢索相應的數據中心名稱
配置完成后只需要啟用插件即可
注冊要求
Dictionary<string, string> meta = new Dictionary<string, string>();meta.Add("path", "^/home.*");
client.Agent.ServiceDeregister("api_test1").Wait();
client.Agent.ServiceDeregister("api_test2").Wait();
client.Agent.ServiceRegister(new AgentServiceRegistration
{
Tags = new string[] { "Bumblebee" },
Address = "192.168.2.18",
Port = 8080,
Name = "bumblebee_services",
Meta = meta,
ID = "api_test1"
}).Wait();
以上是一個簡單的注冊代碼,如果想服務需要注冊到相應路由規則下的負載需要指定path,在不指寫的情況bumblebee獲取后會注冊到默認路由規則上。
狀態跟蹤和故障
bumblebee內部有一套服務監控和故障處理機制無須依據consul相關狀態注冊信息;bumblebee會根據自身的檢測機制對應用進行一個負載遷移和恢復處理。
關注公眾號
?https://github.com/IKende/?
高性能的服務通訊框架?Beetlex(http,rpc,gateway的詳細實現)
總結
以上是生活随笔為你收集整理的Bumblebee微服务网关之consul服务发现的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: .NET Core 3.0 新 JSON
- 下一篇: Github带来的不止是开源,还有折叠的