大數(shù)據(jù)服務(wù)上云的思考">大數(shù)據(jù)服務(wù)上云的思考
831
2025-04-04
一 概述
Kong是一個clould-native、快速的、可擴(kuò)展的、分布式的微服務(wù)抽象層(也稱為API網(wǎng)關(guān)、API中間件或在某些情況下稱為服務(wù)網(wǎng)格)框架。更確切地說,Kong是一個在Nginx中運(yùn)行的Lua應(yīng)用程序,并且可以通過lua-nginx模塊實(shí)現(xiàn)。Kong不是用這個模塊編譯Nginx,而是與OpenResty一起發(fā)布,OpenResty已經(jīng)包含了lua-nginx-module。OpenResty 不是 Nginx的分支,而是一組擴(kuò)展其功能的模塊。
這為可插拔架構(gòu)奠定了基礎(chǔ),可以在運(yùn)行時啟用和執(zhí)行Lua腳本(稱為*“插件”*)。因此,我們認(rèn)為Kong是微服務(wù)架構(gòu)的典范:它的核心是實(shí)現(xiàn)數(shù)據(jù)庫抽象,路由和插件管理。插件可以存在于單獨(dú)的代碼庫中,并且可以在幾行代碼中注入到請求生命周期的任何位置。Kong作為開源項(xiàng)目在2015年推出,它的核心價值是高性能和可擴(kuò)展性。
Kong被廣泛用于從初創(chuàng)企業(yè)到全球5000家公司以及政府組織的生產(chǎn)環(huán)境中。
如果構(gòu)建Web、移動或IoT(物聯(lián)網(wǎng))應(yīng)用,可能最終需要使用通用的功能來實(shí)現(xiàn)這些應(yīng)用。Kong充當(dāng)微服務(wù)請求的網(wǎng)關(guān)(或側(cè)車),通過插件能夠提供負(fù)載平衡、日志記錄、身份驗(yàn)證、速率限制、轉(zhuǎn)換等能力。
一個service可以創(chuàng)建多個routes,routes就相當(dāng)于前端配置,可以隱藏業(yè)務(wù)真正的接口地址,service指定后端真實(shí)的轉(zhuǎn)發(fā)接口地址,在kong上進(jìn)行認(rèn)證/鑒權(quán)/日志/分析/監(jiān)控等控制。
二 特性
云原生(Cloud-Native):Kong可以在Kubernetes或物理環(huán)境上運(yùn)行;
動態(tài)負(fù)載平衡(Dynamic Load Balancing):跨多個上游服務(wù)的負(fù)載平衡業(yè)務(wù)。
基于哈希的負(fù)載平衡(Hash-based Load Balancing):一致的散列/粘性會話的負(fù)載平衡。
斷路器(Circuit-Breaker):智能跟蹤不健康的上游服務(wù)。
健康檢查(Health Checks):主動和被動監(jiān)控您的上游服務(wù)。
服務(wù)發(fā)現(xiàn)(Service Discovery):解決如Consul等第三方DNS解析器的SRV記錄。
無服務(wù)器(Serverless):從Kong中直接調(diào)用和保證AWS或OpenWhisk函數(shù)安全。
WebSockets:通過WebSockets與上游服務(wù)進(jìn)行通信。
OAuth2.0:輕松的向API中添加OAuth2.0認(rèn)證。
日志記錄(Logging):通過HTTP、TCP、UDP記錄請求或者相應(yīng)的日志,存儲在磁盤中。
安全(Security):ACL,Bot檢測,IPs白名單/黑名單等。
系統(tǒng)日志(Syslog):記錄信息到系統(tǒng)日志。
SSL:為基礎(chǔ)服務(wù)或API設(shè)置特定的SSL證書。
監(jiān)視(Monitoring):能夠?qū)崟r對關(guān)鍵負(fù)載和性能指標(biāo)進(jìn)行監(jiān)控。
轉(zhuǎn)發(fā)代理(Forward Proxy):使端口連接到中間透明的HTTP代理。
認(rèn)證(Authentications):支持HMAC,JWT和BASIC方式進(jìn)行認(rèn)證等等。
速率限制(Rate-limiting):基于多個變量的阻塞和節(jié)流請求。
轉(zhuǎn)換(Transformations):添加、刪除或操作HTTP請求和響應(yīng)。
緩存(Caching):在代理層進(jìn)行緩存和服務(wù)響應(yīng)。
命令行工具(CLI):能夠通過命令行控制Kong的集群。
REST API:可以通過REST API靈活的操作Kong。
GEO復(fù)制:在不同的區(qū)域,配置總是最新的。
故障檢測與恢復(fù)(Failure Detection & Recovery):如果Cassandra節(jié)點(diǎn)失效,Kong并不會受影響。
群集(Clustering):所有的Kong節(jié)點(diǎn)會自動加入群集,并更新各個節(jié)點(diǎn)上的配置。
可擴(kuò)展性(Scalability):通過添加節(jié)點(diǎn),實(shí)現(xiàn)水平縮放。
性能(Performance):通過縮放和使用Nigix,Kong能夠輕松處理負(fù)載。
插件(Plugins):基于插件的可擴(kuò)展體系結(jié)構(gòu),能夠方便的向Kong和API添加功能。
三 依賴組件
Kong部署在Nginx和Apache Cassandra或PostgreSQL等可靠技術(shù)之上,并提供了易于使用的RESTful API來操作和配置系統(tǒng)。下面是Kong的技術(shù)邏輯圖。基于這些技術(shù),Kong提供相關(guān)的特性支持:
3.1 Nginx
經(jīng)過驗(yàn)證的高性能基礎(chǔ);
HTTP和反向代理服務(wù)器;
處理低層級的操作。
3.2 OpenRestry
支持Lua腳本;
攔截請求/響應(yīng)生命周期;
基于Nginx進(jìn)行擴(kuò)展。
3.3 Clustering&Datastore
支持Cassandra或PostgreSQL數(shù)據(jù)庫;
內(nèi)存級的緩存;
支持水平擴(kuò)展。
3.4 Plugins
使用Lua創(chuàng)建插件;
功能強(qiáng)大的定制能力;
與第三方服務(wù)實(shí)現(xiàn)集成。
3.5 Restful Administration API
通過Restful API管理Kong;
支持CI/CD&DevOps;
基于插件的可擴(kuò)展。
四 架構(gòu)圖
API Docker NAT 微服務(wù)
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時內(nèi)刪除侵權(quán)內(nèi)容。
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時內(nèi)刪除侵權(quán)內(nèi)容。