0

我們正在設計一個應用程序基礎結構,旨在將Zuul作爲Web應用程序的智能路由器(以及微型服務,但與此問題正交)。Netflix Zuul - 查找元數據以影響路由?

我很努力地理解Zuul的工作方式,我很失望我找不到一些信息豐富的概述,所以我可以理解如何去做我想做的事情。有沒有人知道這樣的參考?

我們有兩個要求,我很難理解Zuul如何處理。

  1. 我們想實現基於應用程序版本的路由。另外,如果客戶端處於升級模式,我們將返回「稍後再試」頁面。

  2. 我們可能必須忍受Web應用程序的粘性會話。

對於基於版本的路由,我們將有權訪問分佈式緩存元數據可用的微服務。在緩存中,我們將獲得有關基礎設施的客戶端信息。我們可以從請求URL中確定客戶端。

所以,我想我們會在前置過濾器中進行客戶端查找,並在路由過濾器中對這些信息進行智能處理。有人能讓我開始這個嗎?

對於粘性會話,我發現:

Sticky Sessions using Ribbon

這看起來很聰明的我,似乎正是我要找的。但是,我想更好地瞭解這是如何工作的。有人可以建議嗎?

+0

github.com鏈接被破壞 – rjdkolb

回答

1

對於您關於基於版本的路由的第一個要求,您可以使用版本後綴註冊您的微服務。對於例如,在尤里卡服務器,兩個不同版本的服務ABC將註冊爲:

 
|--------------|---------|--------------|-------------| 
| Application | AMIs | Availability | Status  | 
|    |   | Zones  |    | 
|--------------|---------|--------------|-------------| 
| ABCV1  |(n/a) (1)|  (1) | UP(1) host1 | 
|--------------|---------|--------------|-------------| 
| ABCV2  |(n/a) (1)|  (1) | UP(1) host2 | 
|--------------|---------|--------------|-------------| 

在Zuul,您可以創建基於URL和服務ID路線。例如,

zuul: 
    ignoredPatterns: /health/** 
    routes: 
    abc1: 
     path: /v1/abc/** 
     stripPrefix: false 
     serviceId: ABCV1 
    abc2: 
     path: /v2/abc/** 
     stripPrefix: false 
     serviceId: ABCV2