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

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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM