欧美free性护士vide0shd,老熟女,一区二区三区,久久久久夜夜夜精品国产,久久久久久综合网天天,欧美成人护士h版

首頁綜合 正文
目錄

柚子快報激活碼778899分享:Dubbo運行原理

柚子快報激活碼778899分享:Dubbo運行原理

http://yzkb.51969.com/

目錄

Dubbo通訊協(xié)議

Dubbo負載均衡策略

RPC和HTTP有什么區(qū)別?

讓你設(shè)計一個RPC框架,如何考慮數(shù)據(jù)序列化問題?

Dubbo 是一款高性能、輕量級的開源?RPC(遠程過程調(diào)用)框架,主要用于構(gòu)建分布式服務(wù)和微服務(wù)架構(gòu)。

要說 Dubbo 運行流程就不得不先來了解一下 Dubbo 的核心組件了,因為 Dubbo 的交互流程是和核心組件息息相關(guān)的。

Dubbo 核心組件有以下幾個:

服務(wù)提供者(Provider):暴露服務(wù)的應(yīng)用,通過 Dubbo 框架將自身的服務(wù)接口及實現(xiàn)注冊到注冊中心。 服務(wù)消費者(Consumer):調(diào)用遠程服務(wù)的應(yīng)用,從注冊中心訂閱所需的服務(wù),然后通過遠程調(diào)用消費服務(wù)。 注冊中心(Registry):集中管理服務(wù)的地址信息,服務(wù)提供者和服務(wù)消費者均在此注冊或訂閱服務(wù)信息。常見的注冊中心有 ZooKeeper、Nacos 等。

Dubbo 運行流程如下圖所示:

它的執(zhí)行流程如下:

服務(wù)提供者會將實例(URL 地址)注冊到注冊中心,注冊中心負責對數(shù)據(jù)進行聚合(健康檢測)。 消費者從注冊中心讀取地址列表并訂閱變更,每當?shù)刂妨斜戆l(fā)生變化,注冊中心將最新的列表通知到所有訂閱的消費者實例。 消費者得到服務(wù)實例之后,通過 Dubbo 內(nèi)置的負載均衡策略,選擇其中的一個節(jié)點,之后使用 RPC 的方式與服務(wù)提供者建立連接,并進行通訊和服務(wù)調(diào)用。

更詳細的調(diào)用流程如下:

Dubbo通訊協(xié)議

Dubbo 框架提供了自定義的高性能 RPC 通信協(xié)議:基于 HTTP/2 的 Triple 協(xié)議和基于 TCP 的 Dubbo2 協(xié)議。除此之外,Dubbo 框架支持任意第三方通信協(xié)議,如官方支持的 gRPC、Thrift、REST、JsonRPC、Hessian2 等,更多協(xié)議可以通過自定義擴展實現(xiàn)。這對于微服務(wù)實踐中經(jīng)常要處理的多協(xié)議通信場景非常有用。Dubbo 框架不綁定任何通信協(xié)議,在實現(xiàn)上 Dubbo 對多協(xié)議的支持也非常靈活,它可以讓你在一個應(yīng)用內(nèi)發(fā)布多個使用不同協(xié)議的服務(wù),并且支持用同一個 port 端口對外發(fā)布所有協(xié)議。

通過 Dubbo 框架的多協(xié)議支持,你可以做到:

將任意通信協(xié)議無縫地接入 Dubbo 服務(wù)治理體系。Dubbo 體系下的所有通信協(xié)議,都可以享受到 Dubbo 的編程模型、服務(wù)發(fā)現(xiàn)、流量管控等優(yōu)勢。比如 gRPC over Dubbo 的模式,服務(wù)治理、編程 API 都能夠零成本接入 Dubbo 體系。 兼容不同技術(shù)棧,業(yè)務(wù)系統(tǒng)混合使用不同的服務(wù)框架、RPC 框架。比如有些服務(wù)使用 gRPC 或者 Spring Cloud 開發(fā),有些服務(wù)使用 Dubbo 框架開發(fā),通過 Dubbo 的多協(xié)議支持可以很好的實現(xiàn)互通。 讓協(xié)議遷移變的更簡單。通過多協(xié)議、注冊中心的協(xié)調(diào),可以快速滿足公司內(nèi)協(xié)議遷移的需求。比如如從自研協(xié)議升級到 Dubbo 協(xié)議,Dubbo 協(xié)議自身升級,從 Dubbo 協(xié)議遷移到 gRPC,從 HTTP 遷移到 Dubbo 協(xié)議等。

Dubbo負載均衡策略

目前 Dubbo(3.X)內(nèi)置了如下負載均衡算法如下:

Weighted Random LoadBalance(加權(quán)隨機):默認負載均衡算法,默認權(quán)重相同。按權(quán)重設(shè)置隨機概率。缺點:存在慢的提供者累積請求的問題,比如:第二臺機器很慢,但沒掛,當請求調(diào)到第二臺時就卡在那,久而久之,所有請求都卡在調(diào)到第二臺上。 RoundRobin LoadBalance(加權(quán)輪詢):借鑒于 Nginx 的平滑加權(quán)輪詢算法,默認權(quán)重相同,按公約后的權(quán)重設(shè)置輪詢比率,循環(huán)調(diào)用節(jié)點。缺點:同樣存在慢的提供者累積請求的問題。 LeastActive LoadBalance(最少活躍優(yōu)先+加權(quán)隨機):背后是能者多勞的思想,活躍數(shù)越低,越優(yōu)先調(diào)用,相同活躍數(shù)的進行加權(quán)隨機?;钴S數(shù)指調(diào)用前后計數(shù)差(針對特定提供者:請求發(fā)送數(shù) - 響應(yīng)返回數(shù)),表示特定提供者的任務(wù)堆積量,活躍數(shù)越低,代表該提供者處理能力越強。使慢的提供者收到更少請求,因為越慢的提供者的調(diào)用前后計數(shù)差會越大;相對的,處理能力越強的節(jié)點,處理更多的請求。 Shortest-Response LoadBalance(最短響應(yīng)優(yōu)先+加權(quán)隨機):更加關(guān)注響應(yīng)速度,在最近一個滑動窗口中,響應(yīng)時間越短,越優(yōu)先調(diào)用。相同響應(yīng)時間的進行加權(quán)隨機。使得響應(yīng)時間越快的提供者,處理更多的請求。缺點:可能會造成流量過于集中于高性能節(jié)點的問題。 ConsistentHash LoadBalance(一致性哈希):確定的入?yún)ⅲ_定的提供者,適用于有狀態(tài)請求。當某一臺提供者掛時,原本發(fā)往該提供者的請求,基于虛擬節(jié)點,平攤到其它提供者,不會引起劇烈變動。 P2C LoadBalance(隨機選擇兩個節(jié)點+連接數(shù)較小):隨機選擇兩個節(jié)點后,繼續(xù)選擇“連接數(shù)”較小的那個節(jié)點。對于每次調(diào)用,從可用的 provider 列表中做兩次隨機選擇,選出兩個節(jié)點 providerA 和 providerB,比較 providerA 和 providerB 兩個節(jié)點,選擇其“當前正在處理的連接數(shù)”較小的那個節(jié)點。 Adaptive LoadBalance(自適應(yīng)負載均衡):在?P2C?算法基礎(chǔ)上,選擇二者中 load 最小的那個節(jié)點,是一種能根據(jù)后端實例負載自動調(diào)整流量分布的算法實現(xiàn),它總是嘗試將請求轉(zhuǎn)發(fā)到負載最小的節(jié)點。

RPC和HTTP有什么區(qū)別?

RPC(Remote Procedure Call,遠程過程調(diào)用)和 HTTP(Hypertext Transfer Protocol,超文本傳輸協(xié)議)都是用于服務(wù)間通訊的,它們主要區(qū)別如下:

概念和使用場景不同:

RPC:RPC 是一種通信模式,允許一個程序在另一個地址空間上執(zhí)行遠程計算過程,使得客戶端調(diào)用遠程服務(wù)就像調(diào)用本地方法一樣。 HTTP:HTTP 是一個應(yīng)用層協(xié)議,用于在客戶端和服務(wù)器之間傳輸文本、圖像、視頻等超媒體資源,通常用于 Web 應(yīng)用之間的通信。 傳輸數(shù)據(jù)不同:

RPC:RPC 通?;诙M制數(shù)據(jù)傳輸,可以使用更高效的序列化方式(如 Protobuf、Thrift)進行數(shù)據(jù)交換。 HTTP:HTTP 使用文本協(xié)議,請求和響應(yīng)數(shù)據(jù)通常是基于文本格式(如 JSON、XML)進行傳輸。 傳輸效率與性能不同:

RPC:因為 RPC 通常使用更高效的二進制序列化(如 Protobuf、Thrift),減少了數(shù)據(jù)傳輸?shù)捏w積,且由于其針對性的設(shè)計,往往在性能上更為優(yōu)越,特別是在大量小數(shù)據(jù)包的傳輸場景。 HTTP:傳統(tǒng)上使用文本格式如 JSON 進行數(shù)據(jù)交換,這可能導(dǎo)致更大的數(shù)據(jù)包和更多的序列化/反序列化開銷,但在 HTTP/2 中引入了頭部壓縮和多路復(fù)用,提升了效率。

讓你設(shè)計一個RPC框架,如何考慮數(shù)據(jù)序列化問題?

數(shù)據(jù)序列化需要考慮的以下問題:

性能問題:選擇高性能的序列化庫至關(guān)重要。二進制序列化(如 Protocol Buffers, Apache Thrift, FlatBuffers)通常比文本格式(如 JSON、XML)更高效,因為它們占用的空間小,序列化和反序列化的速度更快。對于高性能要求的場景,應(yīng)優(yōu)先考慮這些二進制格式。 安全性:在序列化過程中,應(yīng)考慮數(shù)據(jù)的安全性,避免敏感信息的泄露??梢圆捎眉用苄蛄谢瘍?nèi)容、過濾敏感字段或使用安全的傳輸層協(xié)議(如 TLS/SSL)來增加安全性。 兼容性:良好的版本兼容性是長期維護 RPC 框架的關(guān)鍵。設(shè)計時要考慮向前和向后兼容,即新老版本的序列化庫應(yīng)能互相理解和處理對方生成的數(shù)據(jù)格式??梢圆捎妙A(yù)留字段、版本標識符等機制來支持這一點。 跨語言支持:RPC 框架往往需要支持多種編程語言,因此選擇一種跨語言的序列化方案是必要的。Protocol Buffers、Apache Thrift、Avro 等都是很好的選擇,它們提供了多種語言的編解碼庫。 可擴展性:設(shè)計時應(yīng)考慮到未來可能增加的數(shù)據(jù)結(jié)構(gòu)和字段,序列化方案應(yīng)易于擴展,支持動態(tài)字段、自定義類型等特性。 可配置性:允許用戶根據(jù)實際需求選擇或切換序列化策略。例如,對于對性能要求極高的場景,用戶可以選擇最高效的序列化方式;而對于調(diào)試或日志記錄,可能會偏好人類可讀性更好的格式。 異常處理:在序列化或反序列化過程中可能會遇到錯誤(如數(shù)據(jù)損壞、不兼容的版本等)。框架應(yīng)能優(yōu)雅地處理這些異常,并提供清晰的錯誤信息,幫助開發(fā)者診斷問題。

柚子快報激活碼778899分享:Dubbo運行原理

http://yzkb.51969.com/

相關(guān)文章

評論可見,查看隱藏內(nèi)容

本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點和立場。

轉(zhuǎn)載請注明,如有侵權(quán),聯(lián)系刪除。

本文鏈接:http://m.gantiao.com.cn/post/19252388.html

發(fā)布評論

您暫未設(shè)置收款碼

請在主題配置——文章設(shè)置里上傳

掃描二維碼手機訪問

文章目錄