成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

HTTP API網關選擇之一Kong介紹

開發 開發工具
本文將從架構、API管理、插件三個層面介紹Kong。

Kong是Mashape開源的高性能高可用API網關和API服務管理層。它基于OpenResty,進行API管理,并提供了插件實現API的AOP。Kong在Mashape 管理了超過15,000 個API,為200,000開發者提供了每月數十億的請求支持。本文將從架構、API管理、插件三個層面介紹Kong。

開源

一、架構

按照康威定律,我們系統架構會拆的很散,系統由一堆服務組成,如下圖所示:

Kong

如在訪問庫存服務、優惠券服務、價格服務時之前都會做一些特殊處理,如限流、緩存、日志、請求統計。而這些處理幾乎是所有服務都需要的,這不就是我們常說的AOP嘛,當我們服務多起來的時候,應該將這些通用處理集中到一個地方進行管理,如下圖所示:

通過Kong統一管理通用功能

即通過Kong統一管理通用功能。

Kong的安裝請參考官網示例。Kong整體架構如下所示:

Kong整體架構

  1. Kong核心基于OpenResty構建,實現了請求/響應的Lua處理化;
  2. Kong插件攔截請求/響應,如果接觸過Java Servlet,等價于攔截器,實現請求/響應的AOP處理;
  3. Kong Restful 管理API提供了API/API消費者/插件的管理;
  4. 數據中心用于存儲Kong集群節點信息、API、消費者、插件等信息,目前提供了PostgreSQL和Cassandra支持,如果需要高可用建議使用Cassandra;
  5. dnsmasq用于提供給Nginx DNS解析功能;
  6. Kong集群中的節點通過gossip協議自動發現其他節點,當通過一個Kong節點的管理API進行一些變更時也會通知其他節點。每個Kong節點的配置信息是會緩存的,如插件,那么當在某一個Kong節點修改了插件配置時,需要通知其他節點配置的變更。

二、API/API消費者/插件管理

Kong的整體流程架構如下圖所示:

Kong的整體流程架構

1. 添加API服務

首先我們需要通過Kong管理API向Kong注冊API服務,如下所示:

  1. curl –I –X POST \ 
  2.   --url http://kong:8001/apis/ \ 
  3.   --data ‘name=queryStockService’\ 
  4.   --data ‘upstream_url=http://stock.jd.local/’\ 
  5.   --data ‘request_host=api.jd.com’ 
  6.   --data ‘request_path=queryStock’ 

向Kong添加了一個API,全局***名字為queryStockService,當我們訪問http://api.jd.com/queryStock時會upstream到http://stock.jd.local/queryStock處理,這不就是Nginx反向代理的功能,Kong實現了API的動態添加。

2. 添加API消費者

我們的API中有些是公開的,所有人都可以訪問,而有些API是私有的,只有授權才能訪問。在開放平臺中,只有授權的開發者才能訪問API,且有些高級API是只針對部分開發者可用,還有如對不同開發者有不同的API調用次數限制,等等。在這些非公開場景下,需要有一個API消費者。

  1. curl -i -X POST \ 
  2.   --url http://kong:8001/consumers/ \ 
  3.   --data "username=zhangkaitao"\ 

其會生成一個consumer_id “e5da92dd-fbe8-4031-bebf-34c741e209b1”,添加插件章節會用到該ID。

3. 添加插件

插件可以是全局的,也可以是局部的。如限流插件,我們可以配置為全局限流。目前支持:所有API和所有消費者、所有API和特定消費者、所有消費者和特定API、特定消費者和特定API。

為queryStockService添加50次/秒的限流。特定API和所有消費者配置。

  1. curl -X POSThttp://kong:8001/apis/queryStockService/plugins \ 
  2.     --data "name=rate-limiting"\ 
  3.     --data "config.second=50

目前Kong的限流實現是基于計數器,默認是本地限流,可以配置為如使用Redis,實現集群限流。

為queryStockService添加密鑰身份認證。

  1. curl -i -X POST \ 
  2.   --url http://kong:8001/apis/queryStockService/plugins/ \ 
  3.   --data 'name=key-auth' 

為消費者添加秘鑰。

  1. curl -i -X POST \ 
  2.   --url http://kong:8001/consumers/zhangkaitao/key-auth/\ 
  3.   --data 'key=myKey

通過秘鑰訪問API。

  1. curl -i -X GET \ 
  2.   --url http://api.jd.com/queryStock \ 
  3.   --header "Host: api.jd.com"\ 
  4.   --header "apikey: myKey" 

特定API和特定消費者限流,需要配合身份認證模塊。

  1. curl -X POST http://kong:8001/apis/abc/plugins \ 
  2. --data "name=rate-limiting"\ 
  3.     --data "consumer_id=e5da92dd-fbe8-4031-bebf-34c741e209b1"\ 
  4.     --data "config.second=1

到此添加API、添加API消費、添加API插件就介紹完了。

 

三、Kong默認插件

身份認證:Kong提供了Basic Authentication、Key authentication、OAuth2.0 authentication、HMAC authentication、JWT、LDAP authentication認證實現。

安全:ACL(訪問控制)、CORS(跨域資源共享)、動態SSL、IP限制、爬蟲檢測實現。

流量控制:請求限流(基于請求計數限流)、上游響應限流(根據upstream響應計數限流)、請求大小限制。限流支持本地、Redis和集群限流模式。

分析監控:Galileo(記錄請求和響應數據,實現API分析)、Datadog(記錄API Metric如請求次數、請求大小、響應狀態和延遲,可視化API Metric)、Runscope(記錄請求和響應數據,實現API性能測試和監控)。

轉換:請求轉換(在轉發到upstream之前修改請求)、響應轉換(在upstream響應返回給客戶端之前修改響應)。

日志:TCP、UDP、HTTP、File、Syslog、StatsD、Loggly等。

也可以開發自己的插件,如緩存等。

四、總結

Kong作為API網關提供了API管理功能,及圍繞API管理實現了一些默認的插件,另外還具備集群水平擴展能力,從而提升整體吞吐量。Kong本身是基于OpenResty,可以在現有Kong的基礎上進行一些擴展,從而實現更復雜的特性。

有一些特性Kong默認是缺失的,如API級別的超時、重試、fallback策略、緩存、API聚合、ABTest等,這些需要開發者自己定制和擴展。

如果你要做開放平臺,你要做HTTP API網關,Kong是您的一個選擇。

【本文是51CTO專欄作者張開濤的原創文章,作者微信公眾號:開濤的博客( kaitao-1234567)】

戳這里,看該作者更多好文

責任編輯:趙寧寧 來源: 51CTO專欄
相關推薦

2020-12-21 13:13:35

API網關Kong代碼

2015-05-08 17:24:41

APIAPI網關Kong

2020-04-29 14:33:49

微服務網關Kong

2023-06-09 14:46:36

2018-04-17 16:29:24

Java面試HTTP

2021-05-06 05:39:30

Inotify監聽系統

2019-12-27 10:42:45

HTTPMQTT物聯網

2021-03-15 07:55:55

API網關微服務架構

2013-07-19 09:50:10

Java8API

2023-09-07 10:56:36

2021-07-26 08:12:31

開源API網關

2009-08-18 17:53:08

思科認證介紹思科培訓

2022-01-17 10:55:50

微服務API網關

2020-07-28 08:32:57

微服務API網關熔斷

2022-05-20 12:14:50

ZuulSpringClou

2018-08-01 22:52:24

微服務容器云平臺API網關

2020-07-07 07:54:01

API網關微服務

2021-08-04 06:56:49

HTTP緩存前端

2023-06-26 18:13:56

開源API

2021-12-02 18:18:21

消費網關工業物聯網網關物聯網
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 欧美日本一区 | 天堂一区在线观看 | 日本精品免费在线观看 | 久久99精品久久久水蜜桃 | 91精品国产91久久久久游泳池 | 欧美区在线 | 久久精品国产v日韩v亚洲 | 亚洲午夜一区二区 | 成人精品| 久夜精品 | 欧美精品在线一区二区三区 | 国产婷婷综合 | 99精品一区二区 | 午夜视频在线播放 | 三级成人在线观看 | 国产精品一区二区在线 | 久久国产精品99久久久大便 | 成人黄色电影在线播放 | 国产成人午夜高潮毛片 | 在线视频一区二区 | 国产精品网页 | 在线免费观看毛片 | 毛片在线免费播放 | 精品久久久久久久久久久 | 亚洲不卡在线观看 | 永久精品 | 日本成人二区 | 水蜜桃亚洲一二三四在线 | 色婷婷一区| 亚洲电影成人 | 婷婷久久五月天 | 九九久久久 | 亚洲精品高清视频在线观看 | 91av视频 | 亚洲一区二区三区四区五区午夜 | 人人爽人人爽人人片av | 国产女人叫床高潮大片免费 | 欧美成人免费 | 日韩在线大片 | 国产综合在线视频 | 欧美一区二区免费电影 |