一、API網關概念介紹
API 網關,即API Gateway,是大型分布式系統中,為了保護內部服務而設計的一道屏障,可以提供高性能、高可用的 API托管服務,從而幫助服務的開發者便捷地對外提供服務,而不用考慮安全控制、流量控制、審計日志等問題,統一在網關層將安全認證,流量控制,審計日志,黑白名單等實現。網關的下一層,是內部服務,內部服務只需開發和關注具體業務相關的實現。網關可以提供API發布、管理、維護等主要功能。開發者只需要簡單的配置操作即可把自己開發的服務發布出去,同時置於網關的保護之下。
(▲圖片版權來自網絡,版權歸作者所有。)
API Gateway網關使得搭建一個新的應用服務變得簡單、快捷、高效,同時,開發者將精力更多放在和業務緊密相關的工作上。
二、kong簡介
Kong是一款基於Nginx_Lua模塊寫的高可用,易擴展由Mashape公司開源的API Gateway項目。由於Kong是基於Nginx的,所以可以水平擴展多個Kong服務器,通過前置的負載均衡配置把請求均勻地分發到各個Server,來應對大批量的網絡請求。
Kong主要有三個組件:
- Kong Server :基於nginx的服務器,用來接收API請求。
- Apache Cassandra/PostgreSQL :用來存儲操作數據。
- Kong dashboard:官方推薦UI管理工具,當然,也可以使用 restfull 方式 管理admin api。
Kong采用插件機制進行功能定制,插件集(可以是0或n個)在API請求響應循環的生命周期中被執行。插件使用Lua編寫,目前已有幾個基礎功能:HTTP基本認證、密鑰認證、CORS( Cross-origin Resource Sharing,跨域資源共享)、TCP、UDP、文件日志、API請求限流、請求轉發以及nginx監控。
Kong 官網:https://getkong.org/ 插件介紹,幫助文檔等。
Kong 源碼:https://github.com/Mashape/kong
Kong UI管理工具:https://github.com/PGBI/kong-dashboard 瀏覽器UI管理工具
Kong 桌面管理工具:https://github.com/ajaysreedhar/kongdash 有linux版本,windows版本,mac版本。
三、社區資源和工具
安裝KONG的方式
可以選擇不同的方式進行安裝 ->重要
- Kong Docker: A Dockerfile for running Kong in Docker.
- Kong Packages: Pre-built packages for Debian, Red Hat, and OS X distributions (shipped with each release).
- Kong Vagrant: A Vagrantfile for provisioning a development ready environment for Kong.
- Kong Homebrew: Homebrew Formula for Kong.
- Kong CloudFormation: Kong in a 1-click deployment for AWS EC2
- Kong AWS AMI: Kong AMI on the AWS Marketplace.
- Kong on Microsoft Azure: Run Kong using Azure Resource Manager.
- Kong on Heroku: Deploy Kong on Heroku in one click.
- Kong and Instaclustr: Let Instaclustr manage your Cassandra cluster.
第三方管理維護工具
- Ansible role for Kong on Ubuntu
- Biplane: declarative configuration in Crystal Crystal語言版本聲明式配置管理工具,利用配置,一鍵批量執行。
- Bonobo: key management (with Mashery migration scripts)
- Chef cookbook
- Django Kong Admin: Admin UI in Python Python版本UI界面管理工具
- Jungle: Admin UI in JavaScript JS版本UI界面管理工具
- Kong Dashboard: Admin UI in JavaScript JS版本UI界面管理工具
- Kong for CanopyCloud
- Kong image waiting for Cassandra
- Kong image for Tutum
- Kong-UI: Admin UI in JavaScript JS版本UI界面管理工具
- Konga: CLI Admin tool in JavaScript JS客戶端管理工具
- Kongfig: Declarative configuration in JavaScript JS語言版本聲明式配置管理工具,利用配置,一鍵批量執行。
- Kongfig on Puppet Forge
- Puppet recipe
- Puppet module on Puppet Forge
- Python-Kong: Admin client library for Python Python客戶端。
- .NET-Kong: Admin client library for .NET .NET客戶端。
- kong-java-client: Admin client library for Java java客戶端
資源
- The story behind Kong
- Kong mentioned for the Empire PaaS
- Realtime API Management with Pushpin
- How to create your own Kong plugin
- Instaclustr partners with Kong
- How to deploy Kong on Azure
- Kong intro in Portuguese
- Kong tutorial in Japanese 1
- Kong tutorial in Japanese 2
- HAProxy + Kong
- Learn Lua in 15 minutes
- A Question about Microservices
- Kong Intro in Chinese
參考文獻
參考文章1:KONG API Gateway-用戶指南 https://github.com/cloudframeworks-apigateway/user-guide-apigateway#%E6%A1%86%E6%9E%B6%E8%AF%B4%E6%98%8E-%E4%B8%9A%E5%8A%A1
參考文章2:易觀API網關—Kong分享篇https://www.analysys.cn/media/technology/detail/20014914/
參考文章3: Kong:Nginx支持的API管理解決方案https://sdk.cn/news/1596
轉自:https://blog.csdn.net/li396864285/article/details/77371385