" />
然而今天,托管堆棧變得更加復雜。隨著越來越多的應用程序遷移到分布式,微服務基于的架構和托管環境,一種新型的工具API網關——正在成為許多堆棧的基本層。在過去,托管棧由應用程序和運行它們的服務器組成。
這里有101條關于API網關的功能,以及你什么時候想使用或者不想使用。
什么是API網關?
API網關是一種工具或服務,它接受來自客戶端的API請求,將它們轉發給應用程序,并將結果發送回客戶端。
換句話說,API網關是位于客戶端和應用程序之間的一個層,用于管理傳入的API調用。
API網關的主要優勢
您不一定需要API網關來接受應用程序的API請求。您可以簡單地直接向應用程序發送請求,讓它們做出響應。
然而,將API網關添加到您的托管堆棧中有幾個重要的好處:
API請求管理: 通過攔截API請求,API網關可以組合、重新格式化或操縱請求和結果響應。如果客戶端在調用API時“說”了一件事,但您的微服務需要“聽到”不同的東西才能做出響應,這將非常有用。在這種情況下,API網關本質上充當API調用的轉換層.
速率限制: API網關可以“節流”或限制傳入請求的速率,這意味著限制客戶端在給定時間范圍內可以發出的請求數量。速率限制有助于減少安全濫用。它還可以防止錯誤的或管理不善的客戶端通過發出大量重復的、不必要的請求而淹沒應用程序的風險。
負載平衡: 雖然API網關不僅僅做負載平衡,通過在多個應用實例或微服務之間分配流量來平衡負載的能力也是其特性之一。
監控和可觀察性: API網關可以監控和記錄API請求,提供驅動可觀察性所必需的數據。
安全性: API網關也可以實施安全規則。例如,他們可以阻止惡意請求,以防止DDoS攻擊.
使用其他類型的工具可以實現這些功能中的許多功能,至少是部分功能。例如,您可以嘗試直接在應用程序中監控和記錄API請求。但是通過將這些任務外包給API網關,您可以獲得一種集中的方式來處理API管理的所有關鍵方面,而不必直接在應用程序邏輯中實現這些功能。
API網關與負載平衡器、編排器和服務網格
API網關并不是你在現代主機棧中可能找到的唯一新穎的層。它們通常與其他類型的解決方案一起運行,包括負載平衡器、編排器和服務網格,企業也開始部署這些解決方案來幫助管理分布式的、基于微服務的應用。
API網關功能補充了這些其他類型服務的功能,并且在某些情況下與它們重疊。但是API網關在幾個基本方面是不同的:
API網關與負載平衡器: 負載平衡器的唯一工作是分配應用程序負載。API網關可以做到這一點,但是正如上面解釋的,它們還可以做許多其他的事情。
API網關與編排器: 協調器管理微服務的部署。它們通常還提供一些可觀察性和安全性特性,這些特性可能與API網關的特性重疊。然而,除此之外,API網關和編排器是根本不同類型的工具。
API網關與服務網格: 服務網格管理微服務之間的內部API調用。相反,API網關管理來自應用程序外部的外部API調用。
API網關的利與弊
API網關是強大的工具,但是它們并不是每個應用程序部署所必需的。
API網關的主要用例是當您部署一個接受外部API請求的應用程序時,這些請求涉及任何復雜程度,并且/或者您需要對它們實施流量或安全控制。
也就是說,API網關的缺點包括:
潛在的較低性能: API網關創建了流量需要通過的另一層,這可能會降低應用程序的性能——尤其是當網關配置不良時。
可靠性挑戰: 如果您只實現一個API網關實例,網關就會成為應用程序的單點故障,從而帶來可靠性風險。
冗余: 如上所述,API網關的許多功能可以使用其他工具來實現。如果你已經在用其他方式處理流量管理、監控、可觀察性和安全性,那么API網關就是多余的,會給你的主機棧增加不必要的復雜性。
結論
綜上所述,API網關已經成為很多托管棧的重要組成部分。如果您需要一種集中的方式來管理外部API調用的所有方面,API網關是最直接的方式。
也就是說,API網關并不是對每個用例都是必要的或者有益的。在將API網關添加到您的堆棧之前,請認真考慮使用API網關的潛在缺點,以及實現您所尋求的功能的替代方法。