Ocelot中文文件-服務發現
Ocelot允許您指定服務發現提供程式,並使用它來查詢Ocelot正在將請求轉發給下游服務的主機和埠。目前,這僅在GlobalConfiguration部分中受支援,這意味著所有ReRoute將使用相同的服務發現提供程式,以便在ReRoute級別指定ServiceName。
Consul
GlobalConfiguration中需要以下內容。 提供者是必需的,如果你沒有指定主機和埠,預設使用Consul。
"ServiceDiscoveryProvider": {
"Host": "localhost",
"Port": 9500
}
將來我們可以新增一個功能,允許ReRoute配置服務發現提供程式。
為了告訴Ocelot一個ReRoute需要使用服務發現提供程式來發現下游主機和埠,您必須在下游請求配置中新增ServiceName,UseServiceDiscovery和LoadBalancer。 目前Ocelot有RoundRobin(輪詢)和LeastConnection(最少連線)兩個負載均衡的演算法。 如果沒有指定負載均衡器,Ocelot將不會均衡請求。
{
"DownstreamPathTemplate": "/api/posts/{postId}",
"DownstreamScheme": "https",
"UpstreamPathTemplate": "/posts/{postId}",
"UpstreamHttpMethod": [ "Put" ],
"ServiceName": "product",
"LoadBalancer": "LeastConnection",
"UseServiceDiscovery": true
}
如此設定之後,Ocelot將從服務發現提供程式查詢下游主機和埠,並通過可用服務平衡請求。
ACL Token
如果您使用Consul的ACL,Ocelot也支援新增X-Consul-Token頭。 為了實現ACL訪問,您必須新增下面的附加屬性Token。
"ServiceDiscoveryProvider": {
"Host": "localhost",
"Port": 9500,
"Token": "footoken"
}
Ocelot會將這個令牌新增到用來發出請求的consul客戶端,然後用於後續的每個請求。
Eureka
這個功能是作為問題 262的一部分被提出。為Netflix的Eureka服務發現提供程式新增支援。 主要原因是它是Steeltoe的一個關鍵部分,Steeltoe又與Pivotal有關! 反正背景很牛逼。
為了使Eureka工作,需要在 ocelot.json中新增如下配置..
"ServiceDiscoveryProvider": {
"Type": "Eureka"
}
遵循這裡的指導,您可能還需要新增一些內容到appsettings.json。 例如,下面的json告訴steeltoe/關鍵服務在哪裡尋找服務發現伺服器,以及服務是否應該向其註冊。
"eureka": {
"client": {
"serviceUrl": "http://localhost:8761/eureka/",
"shouldRegisterWithEureka": false,
"shouldFetchRegistry": true
}
}
我被告知,如果shouldRegisterWithEureka是false,那麼shouldFetchRegistry將會預設為true,所以你不需要顯式地將它留在這裡。
現在Ocelot將在啟動時註冊所有必要的服務,並且如果配置有上述json,則會將其註冊到Eureka。其中一項服務每30秒(預設)輪詢一次Eureka獲取最新的服務狀態並將其保留在記憶體中。當Ocelot要求提供給定的服務時,它會從記憶體中檢索出來,因此效能不是一個大問題。注意,此程式碼由Pivotal.Discovery.Client 的NuGet包提供,所以非常感謝他們的辛勤工作。
相關文章
- Ocelot中文文件-Qos服務質量
- Ocelot中文文件-微服務ServiceFabric微服務
- Ocelot中文文件-管理
- Ocelot中文文件-認證
- Ocelot中文文件-快取快取
- Ocelot中文文件-轉換ClaimsAI
- Ocelot中文文件-轉換HeadersHeader
- Ocelot中文文件-流量控制
- Ocelot整合Consul實現api閘道器與服務發現API
- Ocelot中文文件-中介軟體注入和重寫
- .net5+nacos+ocelot 配置中心和服務發現實現
- Ocelot+Consul實現微服務架構微服務架構
- [翻譯]微服務設計模式 - 5. 服務發現 - 服務端服務發現微服務設計模式服務端
- Ocelot中文文件-Raft(實驗功能不能用於生產環境)Raft
- NodeJs服務註冊與服務發現實現NodeJS
- Docker實現服務發現Docker
- etcd實現服務發現
- 2-服務發現
- 微服務之Eureka服務發現微服務
- JEESZ REST 服務介面文件REST
- go微服務系列(二) - 服務註冊/服務發現Go微服務
- .NET Core微服務開發閘道器篇-ocelot微服務
- 配置中心Nacos(服務發現)
- Spring Cloud Kubernetes服務發現SpringCloud
- 服務發現-從原理到實現
- Zookeeper實現服務註冊/發現
- [開發文件]bootstrap中文手冊boot
- consul服務註冊與服務發現的巨坑
- 小白入門微服務(4) - 服務註冊與服務發現微服務
- 小白入門微服務(4) – 服務註冊與服務發現微服務
- .Net Core微服務——服務發現:Consul(二)微服務
- 微服務4:服務註冊與發現微服務
- .Net Core微服務——服務發現:Consul(一)微服務
- 實現etcd服務註冊與發現
- Eureka實現服務註冊與發現
- nacos服務註冊與發現
- Nodejs 使用 ZooKeeper 做服務發現NodeJS
- Spring Cloud服務發現元件EurekaSpringCloud元件