日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
HTTPAPI網(wǎng)關(guān)選擇之一Kong介紹

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

一、架構(gòu)

按照康威定律,我們系統(tǒng)架構(gòu)會拆的很散,系統(tǒng)由一堆服務(wù)組成,如下圖所示:

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

即通過Kong統(tǒng)一管理通用功能。

Kong的安裝請參考官網(wǎng)示例。Kong整體架構(gòu)如下所示:

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

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

Kong的整體流程架構(gòu)如下圖所示:

1. 添加API服務(wù)

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

 
 
  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實現(xiàn)了API的動態(tài)添加。

2. 添加API消費者

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

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

其會生成一個consumer_id “e5da92dd-fbe8-4031-bebf-34c741e209b1”,添加插件章節(jié)會用到該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的限流實現(xiàn)是基于計數(shù)器,默認是本地限流,可以配置為如使用Redis,實現(xiàn)集群限流。

為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認證實現(xiàn)。

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

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

分析監(jiān)控:Galileo(記錄請求和響應(yīng)數(shù)據(jù),實現(xiàn)API分析)、Datadog(記錄API Metric如請求次數(shù)、請求大小、響應(yīng)狀態(tài)和延遲,可視化API Metric)、Runscope(記錄請求和響應(yīng)數(shù)據(jù),實現(xiàn)API性能測試和監(jiān)控)。

轉(zhuǎn)換:請求轉(zhuǎn)換(在轉(zhuǎn)發(fā)到upstream之前修改請求)、響應(yīng)轉(zhuǎn)換(在upstream響應(yīng)返回給客戶端之前修改響應(yīng))。

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

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

四、總結(jié)

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

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

如果你要做開放平臺,你要做HTTP API網(wǎng)關(guān),Kong是您的一個選擇。

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


分享標題:HTTPAPI網(wǎng)關(guān)選擇之一Kong介紹
本文URL:http://www.dlmjj.cn/article/dpohpcc.html