最近在了解API網(wǎng)關(guān)相關(guān)的內(nèi)容,為此甚淡,我對市面上較火的開源網(wǎng)關(guān)做了一定的了解調(diào)研大诸。剛好在翻閱資料時,找到一篇中立客觀的開源API網(wǎng)關(guān)介紹贯卦,特此做了一些翻譯资柔,并記錄在此。
翻譯來源:https://nordicapis.com/6-open-source-api-gateways/
前言
隨著API越來越廣泛和規(guī)范化撵割,對標準化贿堰、安全協(xié)議和可擴展性的需求呈指數(shù)級增長。隨著對微服務(wù)的興趣激增啡彬,這一點尤其如此羹与,微服務(wù)依賴于API進行通信故硅。API網(wǎng)關(guān)通過一個相對容易實現(xiàn)的解決方案來滿足這些需求。
也許最重要的是纵搁,API網(wǎng)關(guān)充當用戶和數(shù)據(jù)之間的中介吃衅。API網(wǎng)關(guān)是針對不正確暴露的端點的基本故障保護,而這些端點是黑客最喜歡的目標腾誉∨遣悖考慮到一個被破壞的API在某些情況下可能會產(chǎn)生驚人的災(zāi)難性后果,僅此一點就使得API網(wǎng)關(guān)值得探索利职。網(wǎng)關(guān)還添加了一個有用的抽象層趣效,這有助于將來驗證您的API,防止由于版本控制或后端更改而導(dǎo)致的中斷和服務(wù)中斷猪贪。
不幸的是跷敬,許多API網(wǎng)關(guān)都是專有的,而且價格不便宜哮伟!值得慶幸的是干花,已經(jīng)有幾個開源API網(wǎng)關(guān)來滿足這一需求妄帘。我們已經(jīng)回顧了六個著名的開源API網(wǎng)關(guān)楞黄,您可以自行測試,而無需向供應(yīng)商作出大量承諾抡驼。
Kong Gateway (Open Source)
Kong Gateway(OSS)是一個受歡迎的開源API網(wǎng)關(guān)鬼廓,因為它界面流暢、社區(qū)活躍致盟、云原生架構(gòu)和廣泛的功能碎税。它速度極快,重量輕馏锡。Kong還為許多流行的基于容器和云的環(huán)境提供了現(xiàn)成的部署雷蹂,從Docker到Kubernetes再到AWS。這使您可以輕松地將Kong集成到現(xiàn)有的工作流程中杯道,從而使學(xué)習(xí)曲線不那么陡峭匪煌。
Kong支持日志記錄、身份驗證党巾、速率限制萎庭、故障檢測等。更好的是齿拂,它有自己的CLI驳规,因此您可以直接從命令行管理Kong并與之交互。您可以在各種發(fā)行版上安裝開源社區(qū)Kong Gateway署海÷鸸海基本上医男,Kong擁有API網(wǎng)關(guān)所需的一切。
Tyk Open-Source API Gateway
Tyk被稱為“行業(yè)最佳API網(wǎng)關(guān)”捻勉。與我們列表中的其他API網(wǎng)關(guān)不同昨登,Tyk確實是開源的,而不僅僅是開放核心或免費增值贯底。它為開源解決方案提供了一系列令人印象深刻的特性和功能丰辣。和Kong一樣,Tyk也是云原生的禽捆,有很多插件可用笙什。Tyk甚至可以用于以REST和GraphQL格式發(fā)布自己的API。
Tyk對許多功能都有本機支持胚想,包括各種形式的身份驗證琐凭、配額、速率限制和版本控制浊服。它甚至可以生成API文檔统屈。最令人印象深刻的是,Tyk提供了一個API開發(fā)者門戶牙躺,允許您發(fā)布托管API愁憔,因此第三方可以注冊您的API,甚至管理他們的API密鑰孽拷。Tyk通過其開源API網(wǎng)關(guān)提供了如此多的功能吨掌,實在令人難以置信。
KrakenD Open-Source API Gateway
KrakenD的開源API網(wǎng)關(guān)是在Go中編寫的脓恕,它有幾個顯著的特點膜宋,尤其是對微服務(wù)的優(yōu)化。它的可移植性和無狀態(tài)性是其他強大的賣點炼幔,因為它可以在任何地方運行秋茫,不需要數(shù)據(jù)庫。由于KrakenDesigner乃秀,它比我們列表中的其他一些API網(wǎng)關(guān)更靈活肛著、更易于接近,這是一個GUI环形,它可以讓您直觀地設(shè)計或管理API策泣。您還可以通過簡單地編輯JSON文件輕松地編輯API。
KrakenD包括速率限制抬吟、過濾萨咕、緩存和授權(quán)等基本功能,并且提供了比我們提到的其他API網(wǎng)關(guān)更多的功能火本。在不修改源代碼的情況下危队,可以使用許多插件和中間件聪建。它的效率也很高-據(jù)維護人員稱,KrakenD的吞吐量優(yōu)于Tyk和Kong的其他API網(wǎng)關(guān)茫陆。它甚至具有本地GraphQL支持金麸。所有這些,KrakenD的網(wǎng)關(guān)非常值得一看簿盅。
Gravitee OpenSource API Management
Gravite.io是另一個API網(wǎng)關(guān)挥下,它具有一系列令人印象深刻的功能,這次是用Java編寫的桨醋。Gravitee有三個模塊用于發(fā)布棚瘟、監(jiān)控和記錄API:
API管理(APIM):APIM是一個開源模塊,可以讓您完全控制誰訪問您的API以及何時何地喜最。
訪問管理(AM):Gravite為身份和訪問管理提供了一個本地開源授權(quán)解決方案偎蘸。它基于OAuth 2.0/OpenID協(xié)議,具有集中的身份驗證和授權(quán)服務(wù)瞬内。
警報引擎(AE):警報引擎是一個用于監(jiān)視API的模塊迷雪,允許您自定義多渠道通知,以提醒您可疑活動虫蝶。
Gravitee還具有API設(shè)計器Cockpit和命令行界面graviteio-cli章咧。所有這些都使Gravitee成為最廣泛的開源API網(wǎng)關(guān)之一。您可以在GitHub上查看Gravite.io OpenSource API管理秉扑,或直接下載AWS慧邮、Docker调限、Kubernetes舟陆、Red Hat,或在此處作為Zip文件耻矮。
Apinto Microservice Gateway
顯然秦躯,Go是編寫API網(wǎng)關(guān)的流行語言。Apinto API網(wǎng)關(guān)用Go編寫裆装,旨在管理微服務(wù)踱承,并提供API管理所需的所有工具。它支持身份驗證哨免、API安全以及流控制茎活。
Apinto支持HTTP轉(zhuǎn)發(fā)、多租戶管理琢唾、訪問控制和API訪問管理载荔,非常適合微服務(wù)或具有多種類型用戶的任何開發(fā)項目。Apinto還可以通過多功能的用戶定義插件系統(tǒng)輕松地為特定用戶定制采桃。它還具有API健康檢查和儀表板等獨特功能懒熙。
Apinto Microservice針對性能進行了優(yōu)化丘损,具有動態(tài)路由和負載平衡功能。根據(jù)維護人員的說法工扎,Apinto比Nginx或Kong快50%徘钥。
Apache APISIX API Gateway
我們將使用世界上最大的開源組織之一Apache軟件基金會的一個開源API網(wǎng)關(guān)來完善我們的開源API網(wǎng)關(guān)列表。Apache APISIX API網(wǎng)關(guān)是另一個云原生API網(wǎng)關(guān)肢娘,具有您目前已經(jīng)認識到的所有功能——負載平衡呈础、身份驗證、速率限制和API安全橱健。然而猪落,有一些特殊的功能,包括多協(xié)議支持和Kubernetes入口控制畴博。
關(guān)于開源API網(wǎng)關(guān)的最后思考
不受限制笨忌、不受限制的API訪問時代已經(jīng)結(jié)束。隨著API使用的廣泛普及俱病,有無數(shù)理由實現(xiàn)API網(wǎng)關(guān)以實現(xiàn)安全性官疲,因為不正確暴露的API端點可能會造成嚴重損害。API網(wǎng)關(guān)可以幫助圍繞API設(shè)置速率限制亮隙,以確保安全使用途凫。而且,如果您向第三方供應(yīng)商支付高昂的價格溢吻,開源選項可能會減少您的每月IT預(yù)算维费。
總之,API網(wǎng)關(guān)為您的API環(huán)境添加了一個重要的抽象層促王,這可能是它們最有用的功能犀盟。這樣的抽象層是防止API端點和用戶數(shù)據(jù)不當暴露的一些最佳方法。然而蝇狼,幾乎同樣重要的是它為您的API增加了靈活性阅畴。
如果沒有抽象層,即使對后端的微小更改也可能導(dǎo)致下游的嚴重破壞迅耘。添加API網(wǎng)關(guān)可以使敏捷框架受益贱枣,并有助于簡化CI/CD管道。