概述
- 前言
- 什麼是 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」,關注公衆号擷取最新推文,背景回複【小白微服務】擷取源碼。