c# 微服務Ocelot網關服務發現

前面提到微服務方案,介紹了該東西,推薦一篇介紹博文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

完美!!!!!!!!!哈哈哈

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章