下一代服務型流量網關

今天,所有的軟件架構都在遷移到雲原生架構。雲原生架構具有以下特點:

並且有四個關鍵性的東西要很好地通過雲原生方式構建並被調度

  1. 基礎設施運行時資源。底層的計算節點、存儲、網絡,目前,這些資源在都由容器和 Kubernetes 來管理和調度。

  2. 應用程序數據和狀態。應用程序數據和狀態需要持久化或在集羣範圍內同步。我們可以看到主流的數據庫(SQL/NoSQL)、緩存、隊列等現在都支持分佈式集羣和高可用解決方案。

  3. 應用服務。這些服務現在由 Kubernetes 編排並由微服務架構管理,其中包括服務發現、服務配置管理、服務網關 / 代理、彈性和容錯、存活和健康檢查、可觀察性(指標、日誌、跟蹤)、等等組成。

  4. 流量編排。大多數在線服務需要處理來自世界各地的用戶請求。這些流量將用於不同的目的並訪問不同的資源。因此,管理這些流量並將其與雲原生後端服務保持一致非常重要。

關於流量編排,作爲雲原生網關,必須具備以下特點。

爲了實現這一點,在這裏,我們將介紹一個下一代服務流量網關 - Easegress 該軟件是用 Go 編寫的開源軟件(Apache 2.0 許可證),採用 Go 編程語言,天然具備在高併發場景下提供高性能服務的能力。

在說明 Easegress 的功能之前,想先說一下,爲什麼我們要從頭做一個這樣的網關。其實,我們在解決用戶的一些性能問題的時候需要用到一個流量調度的控制系統在一開始的時候,我們主要是使用 Nginx + Lua 的方式,但在解決用戶問題的過程中發現,對於一個流量調度網關,有兩個非常重要的特點是我們無法避開的

這三種方案各有千秋,適用於不同的場景。

我們認爲,要支持好上述的這些功能,目前整個開源社區中基本沒有,最接近的是 Envo,但可惜是 C++ 的。所以,我們決定用 Go 語言寫一個。

Easegress 的架構構圖如下所示:

圖片源: https://github.com/megaease/easegress/blob/main/doc/architecture.png

Easegress 的主要設計如下:

此外,Easegress 還具有以下 Cloud Native 功能

此外,Easegress 具有很好的可擴展性,可以很容易地將自定義特性或功能添加到 Easegress 中,有三種方法可以做到這一點。

因此,Easegress 可以是一個開發框架或一個二次開發平臺,您可以在之上專注於自己的業務邏輯。

Easegress 有能力勝任如下工作(包括並不限於)。

等等。

今天,我們期待您對這個新的流量網關提出建議或關注,甚至幫助我們把這個網關做得更好。請隨意提交問題或在我們的 Github 中貢獻代碼 - https://github.com/megaease/easegress

本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源https://mp.weixin.qq.com/s/lgq10J449RN1ZwWXoxW02A