為什麼閘道器的作用那麼重要?

沒有閘道器,我們的微服務消費端,全都要對外網進行暴露。每個微服務消費端,都要進行自己的安全過濾,身份驗證,這無疑增加了開發工作量。另外一個原因,如果有安全規則問題,需要更新維護,那麼,所有的服務消費端都要更新一遍。

所以,我們需要對請求進行統一的收口,統一的過濾,這是閘道器最重要的作用。其次,配合服務註冊與發現,閘道器對請求代理後,還可以把請求分發到運轉正常的服務消費端,分發的同時也實現了負載均衡,這是閘道器的另一個重要作用。

為了應用的更加安全,有時候,我們還要分為內外閘道器。

為什麼閘道器的作用那麼重要?

小編在這裡主要演示如何搭建閘道器,並對閘道器的功能進行實戰演練。

在開始搭建服務閘道器之前,小編已經搭建好了服務註冊中心,服務客戶端,服務消費端等工程。

為什麼閘道器的作用那麼重要?

並且在整合開發環境中也已配置好了叢集。

為什麼閘道器的作用那麼重要?

訪問服務註冊中心控制檯看板

為什麼閘道器的作用那麼重要?

現在我們開始搭建我們的微服務閘道器

1、建立SpringBoot基礎工程,新增zuul工程依賴

為什麼閘道器的作用那麼重要?

2、建立自定義過濾器類,繼承ZuulFilter類

filterType過濾型別

pre:請求被路由之前呼叫

routing: 路由請求時被呼叫

post:在routing和error過濾器之後被呼叫

error:處理請求時發生錯誤時被呼叫

filterOrder過濾器順序

shouldFilter過濾器是否生效

run方法

這個是處理邏輯的地方,我們做許可權控制就是在這裡。本示例許可權控制邏輯是,有token引數,並且引數值為chuanlu,則准予路由,否則就停止路由。

為什麼閘道器的作用那麼重要?

3、編輯入口啟動類,新增zuul註解,初始化自定義過濾器類

為什麼閘道器的作用那麼重要?

4、編輯資源配置檔案,設定閘道器路由規則

閘道器工程配置埠為8080

自定義了兩套規則

api-ribbon,過濾/ribbon/*所有請求訪問,並路由到ribbon服務消費端

api-feign,過濾/feign/*所有請求訪問,並路由到feign服務消費端

為什麼閘道器的作用那麼重要?

5、啟動執行工程

為什麼閘道器的作用那麼重要?

為什麼閘道器的作用那麼重要?

為什麼閘道器的作用那麼重要?

為什麼閘道器的作用那麼重要?

6、結束

實際生產應用中,閘道器也是要叢集的,並且在閘道器的前端,還會加一層負載均衡代理,如Nginx或Apache。一個請求,先要透過前端代理,然後到達外網閘道器,再到達內網閘道器,然後是服務消費端。服務消費端透過呼叫各個服務客戶的服務完成業務,然後返回請求響應。