怎么進行RPC實戰(zhàn)與原理的分析

怎么進行RPC實戰(zhàn)與原理的分析,針對這個問題,這篇文章詳細(xì)介紹了相對應(yīng)的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。

創(chuàng)新互聯(lián)公司-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價比撫州網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式撫州網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋撫州地區(qū)。費用合理售后完善,十年實體公司更值得信賴。

什么是 RPC?

Remote Procedure Call,遠(yuǎn)程過程調(diào)用。

RPC 有什么作用?

  • 屏蔽遠(yuǎn)程調(diào)用、本地調(diào)用的區(qū)別

  • 隱藏底層網(wǎng)絡(luò)通信的復(fù)雜性,讓我們更專注于業(yè)務(wù)

RPC 步驟

怎么進行RPC實戰(zhàn)與原理的分析

為什么需要序列化?

  • 網(wǎng)絡(luò)傳輸必須是「二進制」,調(diào)用方的參數(shù)都是對象

  • 請求?二進制消息體

零拷貝

什么是零拷貝?

怎么進行RPC實戰(zhàn)與原理的分析

為什么需要零拷貝?

網(wǎng)卡等操作,只能通過內(nèi)核操作,應(yīng)用程序要發(fā)送網(wǎng)絡(luò)數(shù)據(jù),需要將數(shù)據(jù)復(fù)制到內(nèi)核

如何實現(xiàn)零拷貝?

虛擬內(nèi)存

  • mmap + write

  • sendfile

Netty 的零拷貝有何不同?

  • 一個請求,可能拆分成多個數(shù)據(jù)包

  • 數(shù)據(jù)包的組合在用戶空間,解決用戶空間內(nèi)存的拷貝處理問題,CompositeByteBuf

  • 也包括用戶空間、內(nèi)核空間的數(shù)據(jù)拷貝:Direct Buffers

動態(tài)代理實現(xiàn)

  • JDK:只能代理接口

  • Javassist操作底層字節(jié)碼,不需要反射,性能好

  • Byte Buddy:更容易的 API,速度比 Javassist 快,Spring、Jackson 使用

HTTP/2 特性

  • 多路復(fù)用,同一鏈路雙向發(fā)送stream數(shù)據(jù)

  • Header 壓縮

為什么需要服務(wù)發(fā)現(xiàn)?

公共的“通訊錄”

為什么不用 DNS?

  • DNS多級緩存,且緩存時間長

  • 需要搭建負(fù)載均衡,額外成本

定時任務(wù) & 時間輪

定時任務(wù)的問題?

  • future 啟動線程進行異步編程,sleep

  • 如果5秒超時,高并發(fā)的

  • 讓CPU額外輪詢遍歷,浪費CPU

時間輪的應(yīng)用

  • 延遲消息

  • 訂單過期(10分鐘未付款,取消訂單)

時鐘輪本質(zhì)

減少額外的掃描操作

時間輪在 RPC 的應(yīng)用

調(diào)用端請求的超時處理,節(jié)省CPU

時間輪實現(xiàn)

Netty的 TimeWheel

如何注冊和發(fā)現(xiàn)服務(wù)?

  • RPC Server 提供服務(wù),向 Registry 注冊自身

  • RPC Client 調(diào)用服務(wù),從 Registry 拉取服務(wù)列表

  • Server 節(jié)點變更時,同步變更,Client 感知刷新本地的「服務(wù)節(jié)點列表」

怎么進行RPC實戰(zhàn)與原理的分析

實現(xiàn):

  • 注冊中心 API

  • 服務(wù)健康狀態(tài)監(jiān)測:ZooKeeper 的會話超時控制機制

  • 服務(wù)狀態(tài)變更通知:ZooKeeper 的 Watcher 機制

如何實現(xiàn) RPC 遠(yuǎn)程調(diào)用?

  • 客戶端、服務(wù)端如何建立網(wǎng)絡(luò)連接:HTTP、Socket

  • 服務(wù)端如何處理請求:NIO(使用 Netty

  • 數(shù)據(jù)傳輸采用什么協(xié)議

  • 數(shù)據(jù)如何序列化、反序列化:JSON,PB,Thrift

如何追蹤微服務(wù)?

核心理念:調(diào)用鏈,全局唯一的 ID 將同一請求串聯(lián)起來,從而還原調(diào)用關(guān)系,統(tǒng)計系統(tǒng)指標(biāo)。

怎么進行RPC實戰(zhàn)與原理的分析

注冊中心選型

  • 高可用

    • 集群部署:多個實例

    • 多機房部署:一個機房斷電等不可抗因素

  • 數(shù)據(jù)一致性

    • CP 型:ZooKeeper(redis),強一致性,機房間斷網(wǎng),注冊中心不可用

    • AP 型:犧牲一致性,保證可用性。Eureka

開源 RPC 框架

限定語言

  • Dubbo:Java,阿里

  • Motan:Java,微博

  • Tars:C++,騰訊(已支持多語言)

  • Spring Cloud:Java

    • 網(wǎng)關(guān) Zuul

    • 注冊中心 Eureka

    • 服務(wù)超時熔斷 Hystrix

    • 調(diào)用鏈監(jiān)控 Sleuth

    • 日志分析 ELK

跨語言 RPC 框架

  • gRPC:HTTP/2

  • Thrift:TCP

Spring Cloud 微服務(wù)架構(gòu)

怎么進行RPC實戰(zhàn)與原理的分析

關(guān)于怎么進行RPC實戰(zhàn)與原理的分析問題的解答就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道了解更多相關(guān)知識。

當(dāng)前標(biāo)題:怎么進行RPC實戰(zhàn)與原理的分析
文章鏈接:http://muchs.cn/article26/jpgccg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供用戶體驗、定制網(wǎng)站、、搜索引擎優(yōu)化、外貿(mào)建站、微信小程序

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

h5響應(yīng)式網(wǎng)站建設(shè)