你使用Zuul(哪知道微服務通過尤里卡地址),您的微服務之間轉發請求?如果是這種情況,則使用服務器端負載平衡模式。
如果您使用發現服務(您的情況爲Eureka),我認爲最好的方法是對所有服務間請求(在您的系統內)使用客戶端負載平衡模式。 (你可以使用Ribbon或RestTemplate)。
您可以使用Zuul作爲系統的統一前門,它允許瀏覽器,移動應用程序或其他用戶界面使用來自多個主機的服務,而無需管理每個主機的跨源資源共享(CORS)和身份驗證。
例如:客戶端(移動應用程序)請求所有圖片評論。客戶端不需要知道評論服務地址。只需要代理地址,Zuul會將請求轉發給正確的服務。您可以通過
zuul.routes.comments.path=/comments/**
zuul.routes.comments.service-id=comments
在application.yml/.properties
做到這一點的請求將被GET www.myproxy.mycompany.com/comments
。不要忘記你的服務名稱application.yml/.properties
是非常重要的(spring.application.name
)。這是Zuul路由中的服務標識(它在Eureka中是相同的標識符)。
出於某種原因,您的系統需要請求外部服務(如您在第3個註釋中提到的那樣)。在這種情況下,您的外部服務不是發現客戶端,Zuul無法從Eureka中查找服務ID。您使用路由作爲
zuul.routes.currencyprovider.path=/currencies/**
zuul.routes.currencyprovider.url=https://currencies.net/
與這條路線,都要求/currencies/**
從你的服務THROUGH Zuul將完成。用這種方法你可以爲你的系統設置一扇門。這是API Gateway pattern。
有時候,您的系統需要彙總來自不同服務的多個結果以響應客戶端請求。你可以在代理服務器上執行此操作(您的情況爲Zuul)。
嗨redoff,感謝您的迴應。它有比我需要更多的信息:)。我有另一個問題。如果我正在使用發現服務(客戶端負載均衡),是否有任何優勢讓zuul根據服務名Vs顯式配置路徑來路由請求? – Harish
當您使用發現服務時,您不是隱式地使用客戶端負載平衡。它是定義服務器端或客戶端LB的服務之間的通信方式。 使用配置路徑的好處是它可以限制只有指定服務的路由(配置路徑)的訪問**如果只添加'zuul.ignored-services = *'。 – redoff
例如:您有3項服務(評論,用戶,指標)。您希望將訪問** THROUGH **代理限制爲1項服務(例如評論服務)。你處理爲:'zuul.ignored-services = *'和'zuul.routes.comments.path =/comments/**''zuul.routes.comments.service-id = comments'。 通過此屬性行,所有請求**直通**代理將被拒絕,除了'www.myproxy.mycompany.com /評論' – redoff