在新版本的服務網關中提供了服務發現和泛域名路由解決功能,服務發現能夠在無須配置的狀況下實現服務自動註冊到網關中解脫對服務配置的繁瑣工做;而泛域名路由則能夠針對不一樣的域名制定不一樣的負載規則。git
網關須要維護相關負載的服務器,手動添加相對來講是一件比較麻煩的工做;爲了解決這一問題組件擴展了一個基於consul
服務發現插件,經過配置這個插件和啓用後網關會自動從consul
服務中獲取服務並添加到網關對應的路由負載規則中。github
Bumblebee
中使用服務發現須要引用兩個插件,分別是BeetleX.Bumblebee.Configuration
和BeetleX.Bumblebee.BeetleX.Bumblebee.Consul
。加載啓動後就能夠經過管理工具進行插件配置.web
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/json
運行程序後進行配置管理工具的插件管理頁面,能夠看到Consul插件,組件默認是關閉須要進行一些配置。api
{ "ConsulAddress": "http://192.168.2.19:8500", "Services": [ "bumblebee_services" ], "Token": null, "DataCenter": "dc1" }
Consul
的服務地址Consul
相應的Token信息配置完成後只須要啓用插件便可服務器
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
會根據自身的檢測機制對應用進行一個負載遷移和恢復處理。flex
泛域名解釋在web
服務代理中比較經常使用的功能,主要由代理服務器根據不一樣請求的域名來作不需同服務的轉發。Bumblebee一樣也支持泛域名路由解釋,就是針對不一樣請求的域名來制定不一樣的轉發規則。Bumblebee
對泛域名的轉發配置很是簡單隻須要加載BeetleX.Bumblebee.Configuration
新版本插件在路由管理配置便可(因爲組件支持標準的http1.1協議,Bumblebee
不只能夠作webapi網關,還能作網站代理)。網站
Bumblebee配置路由解釋,只須要加載BeetleX.Bumblebee.Configuration
插件啓動後在Routes
中配置便可.spa
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 );
若是不想本身編寫代碼能夠下載編譯的運行包 https://github.com/IKende/Bumblebee/blob/master/bin/ 下載1.2或更高版本;運行後 訪問 http://host/__system/bumblebee/
在Routes
添加路由規則,若是轉發規則須要對域名進行一個匹配那規則是域名|路徑
beetlexjs.ikende.com|.*
以上規則是配置通過beetlexjs.ikende.com
域訪問的全部請求都到這個規則裏。
以上官網的路由配置規則 beetlexjs.ikende.com|.*
路由到http://localhost:8081/
,而其它則路由http://localhost:8080/
。因爲服務打開了處理服務地址輸出因此訪問這兩個域的頭信息能夠看到:
更多資料可查看組件開源網站 https://github.com/IKende/Bumblebee/wiki