2017-04-21 93 views
2

我無法理解Zuul和功能區之間的連接。Zuul和功能區集成

我想我明白了Zuul。這是一個反向代理,我可以聯繫到我的幾個服務實例之一。它將使用循環算法或任何您配置的方式來選擇合適的服務器。這是一個傳統的負載平衡器。要知道可用的實例,可以使用像Eureka這樣的註冊表。

但是我用絲帶有更多的麻煩。它作爲客戶端負載均衡器出售,但它意味着什麼?它不需要外部服務器?功能區嵌入客戶端的方式與Eureka客戶端的方式相同?如果是的話它是如何工作的?使用Ribbon時是否需要Zuul,反之亦然?

在一些文章中,我看到實際上,Zuul默認使用Ribbon作爲負載平衡部分,這讓我更加困惑。如果這是真的,「客戶端」是什麼意思? Zuul除了路由之外還做了什麼?

我希望你能幫助我。

回答

10

客戶端和服務器始終是相對的。 Zuul是您的服務實例的客戶端,您的服務實例是Zuul的服務器。

當我們使用傳統的負載均衡器(服務器端負載均衡器)時,API調用者(客戶端)只知道一個端點是負載均衡器,客戶端不知道服務器列表。負載均衡器從列表中選擇一臺服務器。

當我們使用像Ribbon這樣的客戶端負載均衡器時,API調用者(客戶端)應該知道服務器列表並從列表中選擇其中一個。這就是我們稱之爲客戶端負載均衡器的原因。

如您所知,Ribbon是一個客戶端負載均衡器模塊,並集成到許多http客戶端模塊中。例如,Feign和負載均衡RestTemplate支持Ribbon。即,Feign和負載平衡的RestTemplate可以從給定列表中選擇服務器,或者在使用功能區時從eureka列表中選擇一個服務器。

關於Zuul,有一個RibbonRoutingFilter將您的請求路由到實際的服務實例。 RibbonRoutingFilter正在使用功能區從列表中選擇服務器,該服務器由您的配置或Eureka提供。所以如果你想使用Zuul作爲負載均衡的反向代理,Zuul需要Ribbon。