久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

MOSN核心概念是什么

204次閱讀
沒有評論

共計 2092 個字符,預計需要花費 6 分鐘才能閱讀完成。

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

MOSN 核心概念

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

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)等業務場景。

IO 模型

MOSN 支持以下兩種 IO 模型:

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

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

netpoll 模型

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

Stack 內存開銷

Read buffer 開銷

Runtime 調度開銷

RawEpoll 模型

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

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 測試結果如下圖所示:

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 核心概念是什么”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注丸趣 TV 網站,丸趣 TV 小編會繼續努力為大家帶來更多實用的文章!

正文完
 
丸趣
版權聲明:本站原創文章,由 丸趣 2023-08-16發表,共計2092字。
轉載說明:除特殊說明外本站除技術相關以外文章皆由網絡搜集發布,轉載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 封丘县| 鄂尔多斯市| 将乐县| 晋州市| 桓台县| 沙湾县| 襄垣县| 阆中市| 广昌县| 阳曲县| 迭部县| 舞阳县| 衡阳县| 拜城县| 闽侯县| 龙里县| 南通市| 丰都县| 浠水县| 通州区| 鸡东县| 治县。| 巴青县| 保定市| 古田县| 东明县| 武强县| 辽宁省| 湖南省| 揭东县| 垫江县| 陆川县| 东山县| 资溪县| 温州市| 海伦市| 定日县| 新蔡县| 霞浦县| 手机| 清新县|