自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

開源API網(wǎng)關(guān)Kong基本介紹和安裝驗證

網(wǎng)絡(luò) 通信技術(shù)
今天準(zhǔn)備介紹下開源API網(wǎng)關(guān)Kong,在Gtihub搜索API網(wǎng)關(guān)類的開源產(chǎn)品,可以看到Kong網(wǎng)關(guān)常年都是排第一的位置,而且當(dāng)前很多都有一定研發(fā)能力的企業(yè)在API網(wǎng)關(guān)產(chǎn)品選型的時候基本也會選擇Kong網(wǎng)關(guān),并基于Kong網(wǎng)關(guān)進(jìn)行二次開發(fā)和定制。

今天準(zhǔn)備介紹下開源API網(wǎng)關(guān)Kong,在Gtihub搜索API網(wǎng)關(guān)類的開源產(chǎn)品,可以看到Kong網(wǎng)關(guān)常年都是排第一的位置,而且當(dāng)前很多都有一定研發(fā)能力的企業(yè)在API網(wǎng)關(guān)產(chǎn)品選型的時候基本也會選擇Kong網(wǎng)關(guān),并基于Kong網(wǎng)關(guān)進(jìn)行二次開發(fā)和定制。

API網(wǎng)關(guān)概述

 

開源API網(wǎng)關(guān)Kong基本介紹和安裝驗證

簡單來說API網(wǎng)關(guān)就是將所有的微服務(wù)提供的API接口服務(wù)能力全部匯聚進(jìn)來,統(tǒng)一接入進(jìn)行管理,也正是通過統(tǒng)一攔截,就可以通過網(wǎng)關(guān)實現(xiàn)對API接口的安全,日志,限流熔斷等共性需求。如果再簡單說下,通過網(wǎng)關(guān)實現(xiàn)了幾個關(guān)鍵能力。

  • 內(nèi)部的微服務(wù)對外部訪問來說位置透明,外部應(yīng)用只需和網(wǎng)關(guān)交互
  • 統(tǒng)一攔截接口服務(wù),實現(xiàn)安全,日志,限流熔斷等需求

從這里,我們就可以看到API網(wǎng)關(guān)和傳統(tǒng)架構(gòu)里面的ESB總線是類似的,這些關(guān)鍵能力本身也是ESB服務(wù)總線的能力,但是ESB服務(wù)總線由于要考慮遺留系統(tǒng)的接入,因此增加了:

  • 大量適配器實現(xiàn)對遺留系統(tǒng)的遺留接口適配,多協(xié)議轉(zhuǎn)換能力
  • 進(jìn)行數(shù)據(jù)的復(fù)制映射,路由等能力

對于兩者,我原來做過一個簡單的對比,大家可以參考。

 

開源API網(wǎng)關(guān)Kong基本介紹和安裝驗證

基于Openresty開發(fā)API網(wǎng)關(guān)

 

開源API網(wǎng)關(guān)Kong基本介紹和安裝驗證

在談API網(wǎng)關(guān)前,我們先談下Openresty。在前面文章談到過,當(dāng)前適合用于API網(wǎng)關(guān)的架構(gòu),一種是基于Openresty的,一種是基于Go語言的。

OpenResty® 是一個基于 Nginx 與 Lua 的高性能 Web 平臺,其內(nèi)部集成了大量精良的 Lua 庫、第三方模塊以及大多數(shù)的依賴項。用于方便地搭建能夠處理超高并發(fā)、擴(kuò)展性極高的動態(tài) Web 應(yīng)用、Web 服務(wù)和動態(tài)網(wǎng)關(guān)。

OpenResty® 通過匯聚各種設(shè)計精良的 Nginx 模塊(主要由 OpenResty 團(tuán)隊自主開發(fā)),從而將 Nginx 有效地變成一個強大的通用系統(tǒng) Web 應(yīng)用平臺。這樣,Web 開發(fā)人員和系統(tǒng)工程師可以使用 Lua 腳本語言調(diào)動 Nginx 支持的各種 C 以及 Lua 模塊,快速構(gòu)造出足以勝任 10K 乃至 1000K 以上單機(jī)并發(fā)連接的高性能 Web 應(yīng)用系統(tǒng)。

OpenResty® 的目標(biāo)是讓你的Web服務(wù)直接跑在 Nginx 服務(wù)內(nèi)部,充分利用 Nginx 的非阻塞 I/O 模型,不僅僅對 HTTP 客戶端請求,甚至于對遠(yuǎn)程后端諸如 MySQL、PostgreSQL、Memcached 以及 Redis 等都進(jìn)行一致的高性能響應(yīng)。

  • 為何Openresty適合用于API網(wǎng)關(guān)開發(fā)?

對于API網(wǎng)關(guān),有一個最基礎(chǔ)的核心功能即需要實現(xiàn)接口服務(wù)代理路由,而這個本身也是Nginx反向代理能夠提供的一個標(biāo)準(zhǔn)功能。

如果應(yīng)用場景比較簡單,僅僅是實現(xiàn)統(tǒng)一接口對外暴露,可以看到很多企業(yè)實際并沒有采用API網(wǎng)關(guān),而是直接采用了Nginx來替代API網(wǎng)關(guān)的服務(wù)代理路由功能。

其次,對于常規(guī)的API網(wǎng)關(guān)的中間件研發(fā),在研發(fā)完成后本身還要依托一個Web容器進(jìn)行部署,同時還需要自己去實現(xiàn)類似路由代理等各種能力。

在這種場景下可以看到,依托于Nginx,在其內(nèi)部來擴(kuò)展一個Web容器能力,既可以充分的利用Nginx本身的代理路由和性能優(yōu)勢就是一個重要的選擇。而OpenResty本身可以看做是基于Nginx服務(wù)器,在其worker里面內(nèi)嵌了一個LuaJVM,通過這種方式來實現(xiàn)了兩者的融合。同時又可以通過開發(fā)和定制各種Lua庫來進(jìn)行快速的功能擴(kuò)展。

也正是這樣原因,基于Openresty來擴(kuò)展動態(tài)網(wǎng)關(guān)功能是一個很好的選擇。

  • OpenResty的安裝

在Centos下可以通過yum很方便的安裝OpenResty,具體如下:

  1. //安裝yum-utils 
  2. # sudo yum install yum-utils 
  3. //添加 openresty 倉庫 
  4. sudo yum-config-manager --add-repo https://openresty.org/package/centos/openresty.repo 
  5. //安裝openresty 
  6. # sudo yum install openresty 
  7. //安裝命令行工具 
  8. # sudo yum install openresty-resty 
  9. //至此安裝成功,默認(rèn)安裝在  /usr/local/openresty 
  10. //測試 
  11. # sudo /sbin/service openresty start 
  12. # sudo /sbin/service openresty stop 

注意在安裝完成后如果通過瀏覽器訪問,需要先關(guān)閉防火墻或者打開放行80端口。

Kong網(wǎng)關(guān)概述

 

開源API網(wǎng)關(guān)Kong基本介紹和安裝驗證

首先我們看下GitHub上對Kong網(wǎng)關(guān)的一些介紹

當(dāng)我們決定對應(yīng)用進(jìn)行微服務(wù)改造時,應(yīng)用客戶端如何與微服務(wù)交互的問題也隨之而來,畢竟服務(wù)數(shù)量的增加會直接導(dǎo)致部署授權(quán)、負(fù)載均衡、通信管理、分析和改變的難度增加。

面對以上問題,API GATEWAY是一個不錯的解決方案,其所提供的訪問限制、安全、流量控制、分析監(jiān)控、日志、請求轉(zhuǎn)發(fā)、合成和協(xié)議轉(zhuǎn)換功能,可以解放開發(fā)者去把精力集中在具體邏輯的代碼,而不是把時間花費在考慮如何解決應(yīng)用和其他微服務(wù)鏈接的問題上。

Kong網(wǎng)關(guān)是一款基于OpenResty(Nginx + Lua模塊)編寫的高可用、易擴(kuò)展的,由Mashape公司開源的API Gateway項目。Kong是基于NGINX和Apache Cassandra或PostgreSQL構(gòu)建的,能提供易于使用的RESTful API來操作和配置API管理系統(tǒng),所以它可以水平擴(kuò)展多個Kong服務(wù)器,通過前置的負(fù)載均衡配置把請求均勻地分發(fā)到各個Server,來應(yīng)對大批量的網(wǎng)絡(luò)請求。

KONG本身提供包括HTTP基本認(rèn)證、密鑰認(rèn)證、CORS、TCP、UDP、文件日志、API請求限流、請求轉(zhuǎn)發(fā)及NGINX監(jiān)控等基本功能。目前,Kong在Mashape管理了超過15,000個API,為200,000開發(fā)者提供了每月數(shù)十億的請求支持。

Kong網(wǎng)關(guān)核心組件

  • Kong Server :基于nginx的服務(wù)器,用來接收API請求。
  • Apache Cassandra/PostgreSQL :用來存儲操作數(shù)據(jù)。
  • Kong dashboard:官方推薦UI管理工具,也可以使用開源的Konga平臺

Kong采用插件機(jī)制進(jìn)行功能定制,當(dāng)前本身已經(jīng)具備了類似安全,限流,日志,認(rèn)證,數(shù)據(jù)映射等基礎(chǔ)插件能力,同時也可以很方便的通過Lua定制自己的插件。插件完全是一種可以動態(tài)插拔的模式,通過插件可以方便的實現(xiàn)Kong網(wǎng)關(guān)能力的擴(kuò)展。

Kong網(wǎng)關(guān)核心組件關(guān)鍵特性

  • Cloud-Native云原生:與平臺無關(guān),Kong可以在從裸機(jī)到容器的任何平臺上運行,并且可以在每個云上本地運行。
  • Kubernetes集成能力:使用官方的Ingress Controller通過本地Kubernetes CRD聲明性地配置Kong,以路由和連接所有L4 + L7層網(wǎng)絡(luò)流量。
  • 動態(tài)負(fù)載均衡:在多個上游服務(wù)之間平衡流量。
  • 基于哈希的負(fù)載均衡:具有一致的哈希/粘性會話的負(fù)載均衡。
  • 斷路器:智能跟蹤不健康的上游服務(wù)。
  • 健康檢查:主動和被動監(jiān)視上游服務(wù)。
  • 服務(wù)發(fā)現(xiàn):在Consul之類的第三方DNS解析器中解析SRV記錄。
  • Serverless:直接從Kong調(diào)用和保護(hù)AWS Lambda或OpenWhisk功能。
  • WebSockets:通過WebSockets與您的上游服務(wù)進(jìn)行通信。
  • gRPC:與gRPC服務(wù)進(jìn)行通信,并通過日志記錄和可觀察性插件觀察流量
  • OAuth2.0:輕松將OAuth2.0身份驗證添加到您的API。
  • 日志功能:通過HTTP,TCP,UDP或磁盤Log對系統(tǒng)的請求和響應(yīng)。
  • 安全性:ACL,僵尸程序檢測,允許/拒絕IP等...
  • Syslog:登錄到系統(tǒng)日志。
  • SSL:為基礎(chǔ)服務(wù)或API設(shè)置特定的SSL證書。
  • 監(jiān)控:對關(guān)鍵負(fù)載和性能服務(wù)器指標(biāo)提供動態(tài)實時監(jiān)控。
  • 轉(zhuǎn)發(fā)代理:使Kong連接到透明的中介HTTP代理。
  • 認(rèn)證:HMAC,JWT,Basic等。
  • 限流:基于許多變量的阻止和限制請求。
  • 轉(zhuǎn)換:添加,刪除或處理HTTP請求和響應(yīng)。
  • 緩存:在代理層緩存并提供響應(yīng)。
  • CLI:從命令行控制Kong群集。
  • 開放API接口:Kong可以使用其RESTful API進(jìn)行操作,以實現(xiàn)最大的靈活性。
  • 跨區(qū)域復(fù)制:跨不同區(qū)域的配置始終是最新的。
  • 故障檢測和恢復(fù):如果您的Cassandra節(jié)點之一發(fā)生故障,則Kong不會受到影響。
  • 群集:所有Kong節(jié)點自動加入群集,并在各個節(jié)點之間更新其配置。
  • 可擴(kuò)展性:Kong本質(zhì)上分布,只需添加節(jié)點即可水平擴(kuò)展。
  • 性能:Kong通過擴(kuò)展和使用NGINX作為核心輕松處理負(fù)載。
  • 插件:可擴(kuò)展的體系結(jié)構(gòu),用于向Kong和API添加功能。

Kong網(wǎng)關(guān)的主要功能分析

 

開源API網(wǎng)關(guān)Kong基本介紹和安裝驗證

對于Kong網(wǎng)關(guān)本身基于OpenResty構(gòu)建,因此前面介紹的OpenResty本身的特性也就成了Kong網(wǎng)關(guān)的特性,同時Kong網(wǎng)關(guān)本身天然和OpenResty融合在一起,不再需要依賴其他的中間件或Web容器進(jìn)行部署。

其次就是Kong網(wǎng)關(guān)本身的插件化開發(fā)機(jī)制,通過插件對Http接口請求和響應(yīng)進(jìn)行攔截,在攔截處就可以實現(xiàn)各種API接口管控和治理的要求。插件通過Lua語言開發(fā),可以動態(tài)插拔。

要實現(xiàn)和Kong網(wǎng)關(guān)本身的集成和管理本身也很簡單,Kong網(wǎng)關(guān)提供各類的Rest API接口,可以很方便的實現(xiàn)和Kong網(wǎng)關(guān)能力的對接。也就是說你完全可以自己開發(fā)要給API管控治理平臺,而底層引擎用Kong網(wǎng)關(guān)。

支持高可用集群,節(jié)點之間的發(fā)現(xiàn)采用的gossip協(xié)議,當(dāng)Kong節(jié)點啟動后,會將自己的IP信息加入到node列表,廣播給任何其他的Kong節(jié)點,當(dāng)另一個Kong節(jié)點啟動后,會去讀取數(shù)據(jù)庫中的node列表,并將自己的信息加入到列表中。

另外再來看下Kong API網(wǎng)關(guān)提供的一些基本功能:

  • API注冊和服務(wù)代理

對于原始的API接口進(jìn)行注冊,并提供服務(wù)代理能力,即不同的API接口注冊到網(wǎng)關(guān)后,網(wǎng)關(guān)可以提供一個統(tǒng)一的訪問地址和接口。這和ESB總線的代理服務(wù)道理是一致的,在服務(wù)注冊到API網(wǎng)關(guān)后,所有的內(nèi)部服務(wù)對外界都是透明的,外部的服務(wù)訪問必須要通過API網(wǎng)關(guān)進(jìn)行。

該部分對應(yīng)到Kong API網(wǎng)關(guān)的服務(wù)注冊和Routing部分的功能和能力上。

  • 負(fù)載均衡

由于Kong API網(wǎng)關(guān)本身底層也是基于Nginx的,因此對應(yīng)負(fù)載均衡的能力實際上是通過底層的Nginx來完成的。要在Kong上面實現(xiàn)負(fù)載均衡和API注冊代理實際上需要分開為兩個步驟進(jìn)行。

即首先是要配置負(fù)載均衡能力,建立Upstream組,并添加多個Target,其次才是進(jìn)行API注冊。

  • AUTHENTICATION實現(xiàn)

通過OAuth 2.0 Authentication插件實現(xiàn)user端口的用戶訪問限制。其具體步驟如下:

  • 注冊O(shè)auth2插件,配置參考
  • 添加Consumer及Consumer對應(yīng)的credentials
  • 申請accesstoken并訪問,如果不帶token訪問將被拒絕

安全和訪問控制

支持最基本的基于IP的安全訪問控制和黑白名單設(shè)置。即為相應(yīng)的端口添加IP Restriction插件擴(kuò)展,并設(shè)置白名單(只有名單內(nèi)的IP可以訪問API)。

這和我們當(dāng)前ESB的基于IP的訪問控制和授權(quán)是一個道理。但是我們的ESB更加靈活,多了業(yè)務(wù)系統(tǒng)這一層,即可以直接對業(yè)務(wù)系統(tǒng)這層統(tǒng)一進(jìn)行授權(quán)。

如果沒有授權(quán),在進(jìn)行訪問的時候?qū)⒎祷豗our IP address is not allowed的訪問錯誤。

  • 流量控制-Traffic Control

流量控制在當(dāng)前Kong網(wǎng)關(guān)上,從GitHub上的參考來看,主要是實現(xiàn)了可以基于單位時間內(nèi)的訪問次數(shù)進(jìn)行流量控制,如果超過了這個訪問次數(shù),則直接提示流控約束且無法訪問的提示。當(dāng)前的流量控制,暫時不支持基于數(shù)據(jù)量的流控。

當(dāng)前的流控暫時沒有看到微服務(wù)網(wǎng)關(guān)常用的熔斷操作,即服務(wù)并發(fā)或服務(wù)響應(yīng)時間大過某個臨界值的時候,直接對服務(wù)進(jìn)行熔斷和下線操作。

  • 日志Logging實現(xiàn)

通過File-log插件實現(xiàn)對于每次訪問日志的獲取,需要注意為日志文件寫權(quán)限,日志格式參考Log Format。具體包括兩個步驟。

  • 為端口添加File-log插件,并設(shè)置為日志文件路徑設(shè)為:/tmp/file.log
  • 添加日志插件后,每次訪問都會被記錄

當(dāng)前Kong網(wǎng)關(guān)日志都是寫入到文件系統(tǒng)中,但是這塊可以很方便的定制日志插件將日志寫入到緩存庫,時序數(shù)據(jù)庫或分布式數(shù)據(jù)庫。另外當(dāng)前的日志LOGGING是沒有提供日志查詢的前端功能界面的,如果需要的話還需要自己開發(fā)對應(yīng)的日志查詢功能。

這個日志功能和我們當(dāng)前的ESB總線的日志Log完全是類似的。但是我們ESB這塊的能力更加強,包括后續(xù)的服務(wù)運行日志的統(tǒng)計分析和報表查看等。

Kong網(wǎng)關(guān)插件說明

 

開源API網(wǎng)關(guān)Kong基本介紹和安裝驗證

從上圖可以看到,Kong網(wǎng)關(guān)是基于OpenResty應(yīng)用服務(wù)器,OpenResty是一個基于 Nginx 與 Lua 的高性能 Web 平臺,其內(nèi)部集成了大量精良的 Lua 庫、第三方模塊以及大多數(shù)的依賴項。用于方便地搭建能夠處理超高并發(fā)、擴(kuò)展性極高的動態(tài) Web 應(yīng)用、Web 服務(wù)和動態(tài)網(wǎng)關(guān)。而Kong 核心基于OpenResty構(gòu)建,并且擁有強大的插件擴(kuò)展功能。

在Http請求到達(dá)Kong網(wǎng)關(guān)后,轉(zhuǎn)發(fā)給后端應(yīng)用之前,可以通過網(wǎng)關(guān)的各種插件對請求進(jìn)行流量控制,安全,日志等各方面的處理能力。當(dāng)前Kong的插件分為開源版和社區(qū)版,社區(qū)版還有更多的定制功能,但是社區(qū)版是要收費的。

目前,KONG開源版本一共開放28個插件,如下:

  • acl、aws-lambda、basic-auth、bot-detection、correlation-id、cors、datadog、file-log、galileo、hmac-auth、http-log、ip-restriction、jwt、key-auth、ldap-auth、loggly、oauth2、rate-limiting、request-size-limiting、request-termination、request-transformer、response-ratelimiting、response-transformer、runscope、statsd、syslog、tcp-log、udp-log。

以上這些插件主要分五大類,Authentication認(rèn)證,Security安全,Traffic Control流量控制,Analytics & Monitoring分析&監(jiān)控,Logging日志,其他還有請求報文處理類。插件類似AOP開發(fā)中的橫切功能,可以靈活的配置進(jìn)行攔截控制,下面選擇一些關(guān)鍵性的插件進(jìn)行簡單的說明。

  • 黑白名單控制能力-ip-restriction

Kong提供的IP黑白名單控制能力還算相當(dāng)強,從配置項里面可以看到主要可以針對兩個維度進(jìn)行配置,一個是針對所有的API接口還是針對特定的API接口,一個是針對所有的消費方還是特定的某個消費方。

對于IP配置可以是一個區(qū)段,也可以是特定的IP地址。但是黑白名單不能同時配置,其次當(dāng)前沒有一個功能是針對某一個系統(tǒng)提供的所有服務(wù)都啟用黑名單或白名單功能。

  • 日志記錄能力-syslog, file-log,http-log

這里主要日志的插件比較多,一個是sysLog在配置后可以直接將Kong產(chǎn)生的日志寫入到應(yīng)用服務(wù)器的系統(tǒng)日志文件中。如果配置了file-log則是單獨寫入到你指定的file文件中。對于http-log則是對于http服務(wù)請求,可以詳細(xì)的記錄請求的輸入和輸出報文信息,但是具體是記錄到哪里,需要通過config.http_endpoint配置。

如果需要將API接口調(diào)用消息報文日志寫入到分布式存儲或數(shù)據(jù)庫中,則需要自己定義相應(yīng)的日志插件來接入寫入問題。

  • 熔斷插件-request-termination

該插件用來定義指定請求或服務(wù)不進(jìn)行上層服務(wù),而直接返回指定的內(nèi)容,用來為指定的請求或指定的服務(wù)進(jìn)行熔斷。注意Kong的熔斷插件感覺是臨時對服務(wù)的禁用,而不是說當(dāng)達(dá)到某一種監(jiān)控閾值的時候自動觸發(fā)熔斷。從官方文檔的應(yīng)用場景也可以看到這點。

如果僅僅是這種方式的熔斷話,實際上意義并不是很大。但是可用的地方就在于當(dāng)某個業(yè)務(wù)系統(tǒng)進(jìn)行發(fā)版部署的時候我們可以對該業(yè)務(wù)系統(tǒng)或該業(yè)務(wù)系統(tǒng)所提供的所有服務(wù)進(jìn)行熔斷。

  • 限流插件-rate-limiting

Kong當(dāng)前提供的限流相對來說還是比較弱,即主要是控制某一個API接口服務(wù)在單位時間內(nèi)最多只能夠調(diào)用多少次,如果超過這個次數(shù)那么網(wǎng)關(guān)就直接拒絕訪問并返回錯誤提示信息。而在前面我講限流和流量控制的時候經(jīng)常會說到,就是限流實際上一個是根據(jù)服務(wù)調(diào)用次數(shù),一個是根據(jù)服務(wù)調(diào)用數(shù)據(jù)量,需要在這兩個方面進(jìn)行限流。而里面更加重要的反而是數(shù)據(jù)量的限流,因為大數(shù)據(jù)量報文往往更加容易造成內(nèi)存溢出異常。

  • 安全認(rèn)證類插件

當(dāng)前Kong網(wǎng)關(guān)提供basic-auth,key-auth、ldap-auth,hmac-auth多種認(rèn)證插件。

Basic-auth基本認(rèn)證插件,即我們根據(jù)用戶名和密碼來生成一個base64編碼,同時將該編碼和目標(biāo)服務(wù)綁定,這樣在消費目標(biāo)服務(wù)的時候就需要在報文頭填寫這個Base64編碼信息。

Key-auth認(rèn)證插件則是利用提前預(yù)設(shè)好的關(guān)鍵字名稱,如下面設(shè)置的keynote = apices,然后為consumer設(shè)置一個key-auth 密鑰,假如key-auth=test@keyauth。在請求api的時候,將apikey=test@keyauth,作為一個參數(shù)附加到請求url后,或者放置到headers中。

Hmac-auth插件是設(shè)置綁定的service和rout,以啟動hmac驗證。然后在Consumers頁面中Hmac credentials of Consumer設(shè)置中添加一個username和secret。

  • 請求報文容量限制-request-size-limiting

該插件用于限制請求報文的數(shù)據(jù)量大小,可以限制單個服務(wù),也可以顯示所有的API接口服務(wù)。這個實際上是很有用的一個功能,可以防止大消息報文調(diào)用導(dǎo)致整個API網(wǎng)關(guān)內(nèi)存溢出。

  • 支持OAuth2.0身份認(rèn)證-oauth2

Kong網(wǎng)關(guān)支持OAuth2.0身份認(rèn)證,OAuth2.0 協(xié)議根據(jù)使用不同的適用場景,定義了用于四種授權(quán)模式。即Authorization code(授權(quán)碼模式),Implicit Grant(隱式模式),Resource Owner Password Credentials(密碼模式),Client Credentials(客戶端模式)。

在四種方式中經(jīng)常采用的還是授權(quán)碼這種標(biāo)準(zhǔn)的 Server 授權(quán)模式,非常適合 Server 端的 Web 應(yīng)用。一旦資源的擁有者授權(quán)訪問他們的數(shù)據(jù)之后,他們將會被重定向到 Web 應(yīng)用并在 URL 的查詢參數(shù)中附帶一個授權(quán)碼(code)。

在客戶端里, code 用于請求訪問令牌(access_token)。并且該令牌交換的過程是兩個服務(wù)端之前完成的,防止其他人甚至是資源擁有者本人得到該令牌。另外,在該授權(quán)模式下可以通過 refresh_token 來刷新令牌以延長訪問授權(quán)時間,也是最為復(fù)雜的一種方式。

  • 簡單轉(zhuǎn)換能力

對于簡單轉(zhuǎn)換能力通過request-transformer 和 response transformer兩個插件來完成。Kong網(wǎng)關(guān)提供對輸入和輸出報文簡單轉(zhuǎn)換的能力,這部分內(nèi)容后續(xù)再詳細(xì)展開介紹。從當(dāng)前配置來看,主要是對消息報文提供了Add, Replace,Rename,Append等各種簡單操作能力。

  • Kong網(wǎng)關(guān)和其它網(wǎng)關(guān)對比

對于開源的Kong網(wǎng)關(guān)和其它網(wǎng)關(guān)的對比如下。

 

開源API網(wǎng)關(guān)Kong基本介紹和安裝驗證

從上面對比圖也可以看到,Kong網(wǎng)關(guān)在功能,性能,插件可擴(kuò)展性各方面都能夠更好的滿足企業(yè)API網(wǎng)關(guān)的需求。因此我們也是基于Konga來進(jìn)一步定制對Kong網(wǎng)關(guān)的管控治理平臺。

 

開源API網(wǎng)關(guān)Kong基本介紹和安裝驗證

在整個定制中增加了基于DB適配的Http Rest API接口的自動發(fā)布,API服務(wù)自動化注冊,服務(wù)日志采集和服務(wù)日志查詢,常見映射模板定制,接口服務(wù)的自動化測試等方面的能力。

Kong網(wǎng)關(guān)的安裝

 

開源API網(wǎng)關(guān)Kong基本介紹和安裝驗證

在這里以在Centos7下安裝Kong2.2版本說明。注意centos7安裝Postgresql不再列出,可以參考網(wǎng)上的文章進(jìn)行安裝。

  1. # 安裝kong-yum源 
  2. $wget https://bintray.com/kong/kong-rpm/rpm -O bintray-kong-kong-rpm.repo 
  3. $export major_version=`grep -oE '[0-9]+\.[0-9]+' /etc/redhat-release | cut -d "." -f1` 
  4. $sed -i -e 's/baseurl.*/&\/centos\/'$major_version''/ bintray-kong-kong-rpm.repo 
  5. $mv bintray-kong-kong-rpm.repo /etc/yum.repos.d/ 
  6.    
  7. # 清空緩存,重新生成緩存 
  8. $yum clean all && yum makecache 
  9. # 查看yum源信息 
  10. $yum repolist 
  11. # 更新yum源 
  12. $yum update -y 
  13.  
  14. ############################# 
  15. #通過yum安裝kong 
  16. #注意如果出現(xiàn)和openresty不兼容,需要先下載老版本的openresty 
  17. $yum install -y kong 
  18. # 查看配置文件位置 
  19. $whereis kong 
  20. $kong: /etc/kong /usr/local/bin/kong /usr/local/kong 
  21.  
  22. ############################# 
  23. #安裝postgresql數(shù)據(jù)庫(略) 
  24. ############################# 
  25.  
  26. #數(shù)據(jù)庫創(chuàng)建kong用戶 
  27. $su - postgres 
  28. $psql -U postgres 
  29.  CREATE USER kong;  
  30.  CREATE DATABASE kong OWNER kong; 
  31.  ALTER USER kong with encrypted password 'kong';   
  32. #修改kong,postgresql連接配置 
  33. $cp -r /etc/kong/kong.conf.default /etc/kong/kong.conf 
  34. $vi /etc/kong/kong.conf 
  35.     database = postgres 
  36.     pg_host = 172.28.102.62 
  37.     pg_port = 5432 
  38.     pg_timeout = 5000 
  39.     pg_user = kong 
  40.     pg_password = kong 
  41.     pg_database = kong 
  42.      
  43. # 初始化數(shù)據(jù)庫 
  44. $kong migrations bootstrap [-c /etc/kong/kong.conf] 
  45. 注意執(zhí)行過程如遇到 failed to retrieve PostgreSQL server_version_num: FATAL: Ident authentication failed for user "kong",請給該用戶設(shè)定密碼,并修改postgres的授權(quán)方式為MD5,操作如下: 
  46. $alter user kong with password  'kong'
  47. # 啟動kong 
  48. $kong start [-c /etc/to/kong.conf] 
  49. #檢查 KONG 是否正確運行 
  50. $curl -i http://localhost:8001/ 
  51. 或者 
  52. $kong health 
  53. #停止 KONG 
  54. $ kong stop 

Kong-Dashboard安裝

對于Kong網(wǎng)關(guān)本身也提供了Kong Dashboard管理頁面,下面再看下Dashboard的安裝。在安裝Dashboard前需要首先安裝node.js,具體如下:

  1. #解壓安裝包 
  2. $wget http://nodejs.org/dist/v8.1.0/node-v8.1.0.tar.gz  
  3. $tar zxvf node-v8.1.0.tar.gz  
  4. $cd node-v8.1.0 
  5.  
  6. #進(jìn)行編譯和安裝(注意編譯需要很長時間) 
  7. $./configure –prefix=/usr/local/node/* 
  8. $make 
  9. $make install 
  10.  
  11. ln -s /usr/local/node/bin/* /usr/sbin/   
  12.  
  13. #npm 配置 
  14. npm set prefix /usr/local 
  15. echo -e '\nexport PATH=/usr/local/lib/node_modules:$PATH' >> ~/.bashrc 
  16. source ~/.bashrc 

在node.js安裝完成后可以安裝Dashboard

  1. #從git庫克隆 
  2. git clone https://github.com/PGBI/kong-dashboard 
  3.  
  4. #安裝Kong Dashboard: 
  5. npm install -g kong-dashboard@v2 
  6.  
  7. #啟動kong-dashboard,注意和老版本有變化 
  8. #啟動時候可以自己指定端口號如9001 
  9. kong-dashboard start -p 9001 
  10.  
  11. #訪問kong-dashboard 
  12. http://localhost:9001 

在啟動后再配置Dashboard需要綁定的Kong Server,如下:

 

開源API網(wǎng)關(guān)Kong基本介紹和安裝驗證

訪問Dashboard界面如下:

 

開源API網(wǎng)關(guān)Kong基本介紹和安裝驗證

可以看到Dashboard2.0版本的界面已經(jīng)和V1版本有了較大的變化,在Dashboard上可以實現(xiàn)最近的API接口注冊接入,路由,安全管理,限流熔斷配置的。由于本身還有另外一個開源的kong網(wǎng)關(guān)管理平臺Konga,因此后續(xù)準(zhǔn)備基于Konga來對網(wǎng)關(guān)的關(guān)鍵功能進(jìn)一步做說明和介紹。

責(zé)任編輯:未麗燕 來源: 今日頭條
相關(guān)推薦

2015-05-08 17:24:41

APIAPI網(wǎng)關(guān)Kong

2017-02-27 14:09:45

HTTPAPI網(wǎng)關(guān)Kong

2023-06-26 18:13:56

開源API

2021-07-26 08:12:31

開源API網(wǎng)關(guān)

2023-06-09 14:46:36

2022-01-17 10:55:50

微服務(wù)API網(wǎng)關(guān)

2020-07-28 08:32:57

微服務(wù)API網(wǎng)關(guān)熔斷

2020-04-29 14:33:49

微服務(wù)網(wǎng)關(guān)Kong

2019-04-02 14:20:14

微服務(wù)API網(wǎng)關(guān)

2023-06-26 10:51:56

開源API

2010-04-16 11:42:55

無線網(wǎng)關(guān)配置

2023-09-07 10:56:36

2020-07-07 07:54:01

API網(wǎng)關(guān)微服務(wù)

2012-02-13 23:29:52

lvslinux集群

2011-03-02 17:17:36

FireFTP安裝

2021-12-02 18:18:21

消費網(wǎng)關(guān)工業(yè)物聯(lián)網(wǎng)網(wǎng)關(guān)物聯(lián)網(wǎng)

2019-07-02 14:17:18

API網(wǎng)關(guān)網(wǎng)關(guān)流量

2021-09-03 13:48:07

API網(wǎng)關(guān)網(wǎng)絡(luò)

2024-09-03 13:59:37

2021-11-23 06:02:20

APIOpenResty網(wǎng)關(guān)
點贊
收藏

51CTO技術(shù)棧公眾號