學(xué)習(xí)筆記-kong網(wǎng)關(guān)

1.kong簡(jiǎn)介


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

圖片.png

2. kong組件

  • Kong Server :基于nginx的服務(wù)器,用來接收API請(qǐng)求。
  • Apache Cassandra/PostgreSQL :用來存儲(chǔ)操作數(shù)據(jù)。
  • Kong dashboard:官方推薦UI管理工具,當(dāng)然,也可以使用 restfull 方式 管理admin api。

3.kong網(wǎng)關(guān)特性

  • 可擴(kuò)展性: 通過簡(jiǎn)單地添加更多的服務(wù)器,可以輕松地進(jìn)行橫向擴(kuò)展,這意味著您的平臺(tái)可以在一個(gè)較低負(fù)載的情況下處理任何請(qǐng)求;

  • 模塊化: 可以通過添加新的插件進(jìn)行擴(kuò)展,這些插件可以通過RESTful Admin API輕松配置;

  • 在任何基礎(chǔ)架構(gòu)上運(yùn)行: Kong網(wǎng)關(guān)可以在任何地方都能運(yùn)行。您可以在云或內(nèi)部網(wǎng)絡(luò)環(huán)境中部署Kong,包括單個(gè)或多個(gè)數(shù)據(jù)中心設(shè)置,以及public,private 或invite-only APIs。

    圖片.png

  • Kong核心基于OpenResty構(gòu)建,實(shí)現(xiàn)了請(qǐng)求/響應(yīng)的Lua處理化;

  • Kong插件攔截請(qǐng)求/響應(yīng),如果接觸過Java Servlet,等價(jià)于攔截器,實(shí)現(xiàn)請(qǐng)求/響應(yīng)的AOP處理;

  • Kong Restful 管理API提供了API/API消費(fèi)者/插件的管理;

  • 數(shù)據(jù)中心用于存儲(chǔ)Kong集群節(jié)點(diǎn)信息、API、消費(fèi)者、插件等信息,目前提供了PostgreSQL和Cassandra支持,如果需要高可用建議使用Cassandra;

  • Kong集群中的節(jié)點(diǎn)通過gossip協(xié)議自動(dòng)發(fā)現(xiàn)其他節(jié)點(diǎn),當(dāng)通過一個(gè)Kong節(jié)點(diǎn)的管理API進(jìn)行一些變更時(shí)也會(huì)通知其他節(jié)點(diǎn)。每個(gè)Kong節(jié)點(diǎn)的配置信息是會(huì)緩存的,如插件,那么當(dāng)在某一個(gè)Kong節(jié)點(diǎn)修改了插件配置時(shí),需要通知其他節(jié)點(diǎn)配置的變更。

4.kong網(wǎng)關(guān)插件

  • 身份認(rèn)證插件:Kong提供了Basic Authentication、Key authentication、OAuth2.0 authentication、HMAC authentication、JWT、LDAP authentication認(rèn)證實(shí)現(xiàn)。

  • 安全控制插件:ACL(訪問控制)、CORS(跨域資源共享)、動(dòng)態(tài)SSL、IP限制、爬蟲檢測(cè)實(shí)現(xiàn)。

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

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

  • 協(xié)議轉(zhuǎn)換插件:請(qǐng)求轉(zhuǎn)換(在轉(zhuǎn)發(fā)到upstream之前修改請(qǐng)求)、響應(yīng)轉(zhuǎn)換(在upstream響應(yīng)返回給客戶端之前修改響應(yīng))。

  • 日志應(yīng)用插件:TCP、UDP、HTTP、File、Syslog、StatsD、Loggly等。

4.kong網(wǎng)關(guān)請(qǐng)求流程

圖片.png

當(dāng)Kong運(yùn)行時(shí),每個(gè)對(duì)API的請(qǐng)求將先被Kong命中,然后這個(gè)請(qǐng)求將會(huì)被代理轉(zhuǎn)發(fā)到最終的API接口。在請(qǐng)求(Requests)和響應(yīng)(Responses)之間,Kong將會(huì)執(zhí)行已經(jīng)事先安裝和配置好的任何插件,授權(quán)您的API訪問操作。Kong是每個(gè)API請(qǐng)求的入口點(diǎn)(Endpoint)。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容