中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

MOSN核心概念是什么

發布時間:2021-12-24 10:02:50 來源:億速云 閱讀:530 作者:iii 欄目:云計算

這篇文章主要介紹“MOSN核心概念是什么”,在日常操作中,相信很多人在MOSN核心概念是什么問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”MOSN核心概念是什么”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

MOSN 核心概念

MOSN 主要劃分為如下模塊,包括了網絡代理具備的基礎能力,也包含了 xDS 等云原生能力。

MOSN核心概念是什么

xDS(UDPA)支持

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 模型

MOSN 支持以下兩種 IO 模型:

  • Golang 經典 netpoll 模型:goroutine-per-connection,適用于在連接數不是瓶頸的情況。

  • RawEpoll 模型:也就是 Reactor 模式,I/O 多路復用(I/O multiplexing)+ 非阻塞 I/O(non-blocking I/O)的模式。對于接入層和網關有大量長鏈接的場景,更加適合于 RawEpoll 模型。

netpoll 模型

MOSN核心概念是什么

MOSN 的 netpoll 模型如上圖所示,協程數量與鏈接數量成正比,大量鏈接場景下,協程數量過多,存在以下開銷:

  • Stack 內存開銷

  • Read buffer 開銷

  • Runtime 調度開銷

RawEpoll 模型

MOSN核心概念是什么

RawEpoll 模型如上圖所示,使用 epoll 感知到可讀事件之后,再從協程池中為其分配協程進行處理,步驟如下:

  1. 鏈接建立后,想 Epoll 注冊 oneshot 可讀事件監聽;并且此時不允許有協程調用 conn.read,避免與 runtime netpoll 沖突。

  2. 可讀事件到達,從 goroutine pool 挑選一個協程進行讀事件處理;由于使用的是 oneshot 模式,該 fd 后續可讀事件不會再觸發。

  3. 請求處理過程中,協程調度與經典 netpoll 模式一致。

  4. 請求處理完成,將協程歸還給協程池;同時將 fd 重現添加到 RawEpoll 中。

協程模型

MOSN 的協程模型如下圖所示。

MOSN核心概念是什么

  • 一條 TCP 連接對應一個 Read 協程,執行收包、協議解析;

  • 一個請求對應一個 worker 協程,執行業務處理,proxy 和 Write 邏輯;

常規模型一個 TCP 連接將有 Read/Write 兩個協程,我們取消了單獨的 Write 協程,讓 workerpool 工作協程代替,減少了調度延遲和內存占用。

能力擴展

協議擴展

MOSN 通過使用同一的編解碼引擎以及編/解碼器核心接口,提供協議的 plugin 機制,包括支持:

  • SOFARPC

  • HTTP1.x/HTTP2.0

  • Dubbo

NetworkFilter 擴展

MOSN 通過提供 network filter 注冊機制以及統一的 packet read/write filter 接口,實現了 Network filter 擴展機制,當前支持:

  • TCP proxy

  • Fault injection

StreamFilter 擴展

MOSN 通過提供 stream filter 注冊機制以及統一的 stream send/receive filter 接口,實現了 Stream filter 擴展機制,包括支持:

  • 流量鏡像

  • RBAC 鑒權

TLS 安全鏈路

通過測試,原生的 Go 的 TLS 經過了大量的匯編優化,在性能上是 Nginx(OpenSSL)的80%,Boring 版本的 Go(使用 cgo 調用 BoringSSL)因為 cgo 的性能問題, 并不占優勢,所以我們最后選擇使用原生 Go 的 TLS,相信 Go Runtime 團隊后續會有更多的優化,我們也會有一些優化計劃。

Go vs Nginx 測試結果如下圖所示:

MOSN核心概念是什么

  • 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核心概念是什么

到此,關于“MOSN核心概念是什么”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

宁河县| 梁平县| 宜君县| 浦县| 大方县| 五台县| 嘉荫县| 敦化市| 仙居县| 建宁县| 邮箱| 泸西县| 随州市| 长海县| 印江| 茂名市| 三都| 莱州市| 南投县| 内江市| 武强县| 汝阳县| 高州市| 班戈县| 江城| 乐平市| 德庆县| 儋州市| 察隅县| 紫阳县| 鹿泉市| 太谷县| 保亭| 五家渠市| 大埔区| 娱乐| 广西| 犍为县| 博罗县| 高淳县| 类乌齐县|