小白入門微服務(3) - 什麼是 API gateway
阿新 • • 發佈:2018-12-25
概述
- 前言
- 什麼是 API gateway
- 為什麼要用 API gateway
- 後記
前言
一開始吧,感覺我也描述不好什麼是 API gateway,在看了這篇文章(https://microservices.io/patterns/apigateway.html)之後,感覺豁然開朗,那麼我這邊就用我的語言來描述一遍。
什麼是 API gateway
API gateway 處於客戶端與各個微服務之間,它擔任了反向代理的角色,將不同的請求路由到相對應的微服務中去。與此同時,它還有以下功能:安全,限流,快取,日誌,監控,重試,熔斷等。
為什麼要用 API gateway
首先我們來大膽想想一下,你是一個公司的 CTO,你公司的產品是要做一個類似於噹噹的賣書產品,叫【叮叮噹噹】。那麼你的產品可能有以下三端:
- 網頁版
- Android/iOS 客戶端
- 小程式
當然你的產品做得足夠大的話,你有必要開放一些給第三方呼叫的 REST API 介面。
那麼現在來討論一下產品的一些功能: - 登入註冊(登入註冊、使用者基礎資訊的存取)
- 價格服務(記錄價格、雙十一特價、秒殺價、優惠券價等價格的計算)
- 產品服務(產品資訊、名稱、單價、圖片展示)
- 庫存服務(記錄產品庫存)
- 評價服務(購買商品後的客戶評價、討論區)
- 第三方開放介面(例如:微信開放平臺,提供給第三個呼叫的介面)
那麼問題來了:
問題來了:
來了:
- 客戶端與眾多微服務互動,協議不統一,有些協議是對客戶端不友好的。
- 資料不統一,可能在一個操作中,需要多個微服務的資料組裝起來,才是我們一次請求想要的資料。
- 微服務 ip 和 port 改變,客戶端無法感知。
- 不同的終端需要不同的資料,移動端可能僅僅 json 資料就能解決問題,網頁端可能需要更多的資料展示。
解決方案 – API gateway(如圖)
使用 API gateway,那麼眾多問題都得到解決:
- 各個微服務先與 API gateway 互動,轉換成客戶端友好的 REST API。
- 在 API gateway 中組裝好資料再返回給客戶端。
- 在 API gateway 中修改 ip 與 port 客戶端無感知,正常使用。
- 採用多個 API gateway ,不同 API gateway 響應不同的資料給不同終端。
如此修改之後,眾多問題都迎刃而解,客戶端對眾多微服務是無感知的。
後記
真正的微服務架構還遠不止這些東西,還有服務註冊、服務發現等等。這裡只是帶領你入個門,後面會循序漸進,逐步走向完整。很高興你能看到這裡,又進一步學習了微服務。
個人的知識儲備總是有限的,如有錯誤的地方,還請大佬斧正。點選閱讀原文,連結到我的知乎,我會在知乎上對文章錯誤的地方進行修改。
本篇文章首發於公眾號「zone7」,關注公眾號獲取最新推文,後臺回覆【小白微服務】獲取原始碼。