1. 程式人生 > >小白入門微服務(3) - 什麼是 API gateway

小白入門微服務(3) - 什麼是 API gateway

概述

  • 前言
  • 什麼是 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 響應不同的資料給不同終端。

產品架構

多 API gateway 架構
如此修改之後,眾多問題都迎刃而解,客戶端對眾多微服務是無感知的。

後記

真正的微服務架構還遠不止這些東西,還有服務註冊、服務發現等等。這裡只是帶領你入個門,後面會循序漸進,逐步走向完整。很高興你能看到這裡,又進一步學習了微服務。
個人的知識儲備總是有限的,如有錯誤的地方,還請大佬斧正。點選閱讀原文,連結到我的知乎,我會在知乎上對文章錯誤的地方進行修改。

本篇文章首發於公眾號「zone7」,關注公眾號獲取最新推文,後臺回覆【小白微服務】獲取原始碼。