Kong-Microservice & API Management Layer
背景
最近突然喜歡上了Openresty的這個開源項目,然後就開始了解&學習Openresty這個項目,發現基於Openresty做API開發也是蠻好玩的(我覺得業務不複雜的話真的可以玩,其實複雜的話也可以用),所以決定以後自己寫的小東西就全部用這玩意(誰叫我的阿里雲主機配置比較低呢)。Openresty是基於Nginx 與Lua 的高性能Web 平台,官方所有的Lua庫都阻塞,難怪性能那麼高,況且Nginx對內存的管理&使用是極其小氣的(哈哈),Openresty這一層做許可權控制&日誌收集&web渲染很不錯的。廢話說完了,該說說主角Kong了,這是什麼玩意,官方介紹:Open-Source, Microservice & API Management Layer built on top of NGINX,管理微服務&API的一個東東,它背後的公司Mashape做了一件這樣的事情,就是做API&微服務的中間商,其實類比一下角色就是淘寶,只不過淘寶是交易商品,而這個是API的交易。現在的互聯網的世界裡,運行著由各種語言提供的各種各樣API服務,
並且大部分都是基於HTTP協議&rest構建的API服務,每個服務都會有各種各樣頻率、許可權的控制,絕大部分就會產生了下面這個圖結構:
從上圖可以看出,其實有很多都是很通用的比如許可權認證,頻率限制,日誌、緩存等,Kong的出現就是為了解決上面的問題,來看看Kong的架構圖(右邊):
右邊的圖看來是不是清晰好多了,所以mashape公司就是解決這樣的問題而產生的,看到這個圖是不是有繼續想了解Kong的架構了??.
Kong核心
- 編程語言: Nginx + Openresty + Lua
- 存儲: Cassandra 分散式Nosql資料庫
- 提供Rest API介面
- 每個節點是無狀態的也就是說可以動態擴容
- 提供Authentication、Security、Traffic Control、Transformations的插件&很容易自定義插件
- 可以根據自己的業務需求定製開發
資料來源
- GitHub - Mashape/kong: Open-Source, Microservice & API Management Layer built on top of NGINX
- How Mashape Manages Over 15,000 APIs & Microservices
- Documentation for Kong
- nginx news
- GitHub - openresty/openresty: Turning Nginx into a Full-Fledged Scriptable Web Platform
- The Programming Language Lua
- https://www.wikiwand.com/zh/Cassandra
推薦閱讀:
※使用uwsgi和nginx做伺服器和django框架,為什麼每次修改代碼都需要重啟uwsgi呢?
※Ubuntu上使用letsencrypt獲得免費的HTTPS證書
※Nginx 教程 #3:SSL 設置
※為什麼中國程序員對待外國人抱怨和對待國人抱怨採取截然不同的態度?
※基於ReactRouter實現的SPA應用的Nginx配置