您好,登錄后才能下訂單哦!
這篇文章主要介紹“MOSN核心概念是什么”,在日常操作中,相信很多人在MOSN核心概念是什么問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”MOSN核心概念是什么”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!
MOSN 主要劃分為如下模塊,包括了網絡代理具備的基礎能力,也包含了 xDS 等云原生能力。
MOSN 支持云原生統一數據面 API(UDPA),支持全動態配置更新。
xDS 是 Envoy 創建的一個關鍵概念,它是一類發現服務的統稱,其包括如下幾類:
CDS:Cluster Discovery Service
EDS:Endpoint Discovery Service
SDS:Secret Discovery Service
RDS:Route Discovery Service
LDS:Listener Discovery Service
正是通過對 xDS 的請求來動態更新 Envoy 配置,另外還有個 ADS(Aggregated Discovery Service)通過聚合的方式解決以上 xDS 的更新順序問題。
MOSN 作為底層的高性能安全網絡代理,支撐了 RPC、消息(Messaging)、網關(Gateway)等業務場景。
MOSN 支持以下兩種 IO 模型:
Golang 經典 netpoll 模型:goroutine-per-connection,適用于在連接數不是瓶頸的情況。
RawEpoll 模型:也就是 Reactor 模式,I/O 多路復用(I/O multiplexing)+ 非阻塞 I/O(non-blocking I/O)的模式。對于接入層和網關有大量長鏈接的場景,更加適合于 RawEpoll 模型。
MOSN 的 netpoll 模型如上圖所示,協程數量與鏈接數量成正比,大量鏈接場景下,協程數量過多,存在以下開銷:
Stack 內存開銷
Read buffer 開銷
Runtime 調度開銷
RawEpoll 模型如上圖所示,使用 epoll 感知到可讀事件之后,再從協程池中為其分配協程進行處理,步驟如下:
鏈接建立后,想 Epoll 注冊 oneshot 可讀事件監聽;并且此時不允許有協程調用 conn.read,避免與 runtime netpoll 沖突。
可讀事件到達,從 goroutine pool 挑選一個協程進行讀事件處理;由于使用的是 oneshot 模式,該 fd 后續可讀事件不會再觸發。
請求處理過程中,協程調度與經典 netpoll 模式一致。
請求處理完成,將協程歸還給協程池;同時將 fd 重現添加到 RawEpoll 中。
MOSN 的協程模型如下圖所示。
一條 TCP 連接對應一個 Read 協程,執行收包、協議解析;
一個請求對應一個 worker 協程,執行業務處理,proxy 和 Write 邏輯;
常規模型一個 TCP 連接將有 Read/Write 兩個協程,我們取消了單獨的 Write 協程,讓 workerpool 工作協程代替,減少了調度延遲和內存占用。
MOSN 通過使用同一的編解碼引擎以及編/解碼器核心接口,提供協議的 plugin 機制,包括支持:
SOFARPC
HTTP1.x/HTTP2.0
Dubbo
MOSN 通過提供 network filter 注冊機制以及統一的 packet read/write filter 接口,實現了 Network filter 擴展機制,當前支持:
TCP proxy
Fault injection
MOSN 通過提供 stream filter 注冊機制以及統一的 stream send/receive filter 接口,實現了 Stream filter 擴展機制,包括支持:
流量鏡像
RBAC 鑒權
通過測試,原生的 Go 的 TLS 經過了大量的匯編優化,在性能上是 Nginx(OpenSSL)的80%,Boring 版本的 Go(使用 cgo 調用 BoringSSL)因為 cgo 的性能問題, 并不占優勢,所以我們最后選擇使用原生 Go 的 TLS,相信 Go Runtime 團隊后續會有更多的優化,我們也會有一些優化計劃。
Go vs Nginx 測試結果如下圖所示:
Go 在 RSA 上沒有太多優化,go-boring(CGO)的能力是 Go 的兩倍。
p256 在 Go 上有匯編優化,ECDSA 優于go-boring。
在 AES-GCM 對稱加密上,Go 的能力是 go-boring 的 20 倍。
在 SHA、MD 等 HASH 算法也有對應的匯編優化。
為了滿足金融場景的安全合規,我們同時也對國產密碼進行了開發支持,這個是 Go Runtime 所沒有的。雖然目前的性能相比國際標準 AES-GCM 還是有一些差距,大概是 50%,但是我們已經有了后續的一些優化計劃,敬請期待。
支持國密的性能測試結果如下圖所示:
到此,關于“MOSN核心概念是什么”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。