天天看點

小白入門微服務(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 響應不同的資料給不同終端。
小白入門微服務(3) - 什麼是 API gateway
小白入門微服務(3) - 什麼是 API gateway

如此修改之後,衆多問題都迎刃而解,用戶端對衆多微服務是無感覺的。

後記

真正的微服務架構還遠不止這些東西,還有服務注冊、服務發現等等。這裡隻是帶領你入個門,後面會循序漸進,逐漸走向完整。很高興你能看到這裡,又進一步學習了微服務。

個人的知識儲備總是有限的,如有錯誤的地方,還請大佬斧正。點選閱讀原文,連結到我的知乎,我會在知乎上對文章錯誤的地方進行修改。

本篇文章首發于公衆号「zone7」,關注公衆号擷取最新推文,背景回複【小白微服務】擷取源碼。

繼續閱讀