前面提到微服務方案,介紹了該東西,推薦一篇介紹博文https://www.cnblogs.com/jesse2013/p/net-core-apigateway-ocelot-docs.html
我要說的是Ocelot服務發現方案,其自身已經集成了Consul,Eureka服務發現,其項目名稱分別是Ocelot.Provider.Consul,Ocelot.Provider.Eureka。
配置使用方法:
GlobalConfiguration中需要以下內容。提供程序是必需的,如果您未指定主機和端口,則將使用Consul默認值。
"ServiceDiscoveryProvider": {
"Host": "localhost",
"Port": 8500,
"Type": "Consul"
}
由於一些原因,我是不建議使用的,但是不得不說這2個是成熟穩定的,對於一般的中小項目推薦使用etcd.Ocelot並沒有直接集成它,但是完全可以按照Ocelot.Provider.Consul集成,Git上面已經存在了https://github.com/BuiltCloud/Ocelot.Provider.Etcd.git
對應的
GlobalConfiguration中需要以下內容。提供程序是必需的,如果您未指定主機和端口,則將使用默認值。
"ServiceDiscoveryProvider": {
"Host": "localhost",
"Port": 8500,
"Type": "Etcd"
}
類型這裏還可以設置PollEtcd,這樣內部會定時刷新服務列表,因爲Ocelot註冊單例,每次獲取只是獲取的服務列表
由於etcd是底層建設,所以我擴展了項目,提供了etcd對服務註冊和發現。
Ocelot.Provider.Etcd項目採用了Consul的方法,當前服務發現是基於單節點的,配置的是IP和端口。
所以我再此擴展了Ocelot.Provider.Etcd,裏面重寫了服務發現提供類,並且擴展IOcelotBuilder。可以通過單節點啓動後,內部定時間隔刷新集羣的地址,一旦該單節點失效,內部將根據獲取的集羣節點,立即重新建立一個連接。
etcd服務註冊發現項目:https://github.com/jinyuttt/etcd.Provider.Service.git
Ocelot.Provider.Etcd項目擴展:https://github.com/jinyuttt/Ocelot.Provider.Etcd.Extensions
上面項目都已經上傳nuget
完美!!!!!!!!!哈哈哈