精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

Dubbo源碼淺析(一)—RPC框架與Dubbo

京東云 ? 來源:jf_75140285 ? 作者:jf_75140285 ? 2024-08-16 15:18 ? 次閱讀

一、什么是RPC

1.1 RPC概念

RPC,Remote Procedure Call 即遠程過程調用,與之相對的是本地服務調用,即LPC(Local Procedure Call)。本地服務調用比較常用,像我們應用內部程序**(注意此處是程序而不是方法,程序包含方法)**互相調用即為本地過程調用,而遠程過程調用是指在本地調取遠程過程進行使用。

而RPC框架就是為了幫助我們在本地調用遠程過程時,就像調用本地過程一樣方便。

1.2 RPC與Http的關系

用一句話來總結就是:

RPC是一種概念,http是一種協議,可以認為http是Rpc的一種實現,或者Rpc包含了http。為什么說包含而不是相等,是因為Rpc還有很多基于自定義的Tcp的協議,例如Dubbo等,而我們常說的rpc即指的除Http之外的基于tcp自定義的協議。

1.3 關于Rpc的思考

網上關于Rpc與Http的相關文章并不少,很多人在解釋RPC概念時會提到其是執行遠程的方法,然后直接得出rpc包含http的結論。其實如果按照此概念去思考的話,其實并不能得出Http是Rpc的一種實現。因為http調用的方式,從使用者的角度來說,并不是直接調用其方法,而是按照一定的方式,完善出了一條http請求,然后交由本地客戶端進行數據傳輸。

而相對比的,如果用過相關Rpc框架,例如Dubbo,是可以像調用本地方法一樣直接調用遠程方法。而http的調用方式可以認為是一種服務調用,而不是一種方法。

感覺文章博主應該是有過rpc相關的使用經驗,有點先入為主了。那么到底rpc與http的關系如何呢,我也思考了很久,后面發現應該從定義上入手,我們既然在討論Rpc是什么,怎么能忽略最簡單的定義呢。

Remote Procedure Call ,其中"Procedure"按照谷歌翻譯有以下幾種解釋:程序、過程、步驟,并不是 方法(Method)。而程序是包含方法的,同時也包含服務。因此上文中才強調了是一種程序或過程,而不是方法。

1.4 Rpc框架

Rpc框架是為了幫助我們在本地服務調用遠程服務時像調用本地服務一樣簡單,我們不需要關心其底層實現,只需要配置好相應的信息,rpc框架就會幫我們做這些事。例如在dubbo中,我們只需要配置好相應的注冊中心與想要調用的方法,我們就可以按照本地調用的方式調用遠程服務。

1.5 總結

按照我們上文的梳理過程,可以認為Rpc是一種概念,主要有兩種實現,一種是以http方式的服務調用,另一種是以自定義Tcp協議實現的方法調用方式,例如dubbo協議,當然一般rpc框架也都支持http協議。當然,無論是那種方式,最終都是以Tcp/Udp的方式進行傳輸。

wKgZoma-_SiAdj3eAAA-aRPaYY0047.png

二、Rpc框架

2.1 dubbo是什么

我們上文說到Rpc框架就是幫助我們在調用遠程服務時像調用本地服務一樣簡單,dubbo就是由阿里巴巴開源的一塊rpc框架。

例如,在我們想調用某個遠程方法時,只需要配置好相關配置,然后直接調用即可,dubbo會幫助我們將處理中間的過程。

/* 省略相關配置 */ //將配置注冊到spring @Resource private QueryPinService queryPinService; //直接使用遠程方法,像調用本地服務一樣簡單 ueryPinService.getPinWithConfig(paramMap, null);

dubbo整體架構圖如下:

wKgaoma-_SqAclUoAAA1Y8vOti0081.jpg

節點 說明
Provider 提供遠程服務的服務提供方
Registry 注冊中心
Consumer 需要調用遠程服務的服務消費方
Container 服務運行的容器
Monitor 監控中心

作用流程大致如下:

首先服務提供者Provider 啟動然后向注冊中心注冊自己所能提供的服務。

服務消費者Consumer 啟動向注冊中心訂閱自己所需的服務。然后注冊中心將提供者元信息通知給 Consumer, 之后 Consumer 因為已經從注冊中心獲取提供者的地址,因此可以通過負載均衡選擇一個 Provider 直接調用。

之后服務提供方元數據變更的話注冊中心會把變更推送給服務消費者。

服務提供者和消費者都會在內存中記錄著調用的次數和時間,然后定時的發送統計數據到監控中心。

2.2 dubbo和spring cloud的區別

首先兩者都是當前主流的微服務框架,不過兩者也存在很多差異:

初始定位不同:SpringCloud定位為微服務架構下的一站式解決方案,主要有網關、注冊中心、配置中心、監控中心等;Dubbo 是 它的關注點主要在于服務的調用和治理,其中服務調用更時其核心。

生態環境不同:SpringCloud依托于Spring平臺,具備更加完善的生態體系;而Dubbo一開始只是做RPC遠程調用,生態相對匱乏,現在逐漸豐富起來。

調用方式:SpringCloud是采用Http協議做遠程調用,接口一般是Rest風格,比較靈活;Dubbo是采用Dubbo協議,接口一般是Java的Service接口,格式固定。但調用時采用Netty的NIO方式,性能較好。

兩者組件配置:

wKgZoma-_SyAIHn7AAFTAa_Wu-o451.png

很明顯SpringCloud擁有比dubbo更完善的配置,支持的功能性也更強。

相比來說,SpringCloud像一臺品牌機,內部所有配置都已經幫我們裝配好了,我們只需要開箱即用即可。而dubbo則更像是組裝機,需要我們自己選擇配置,只提供了核心的計算能力,而顯示器、電源等需要我們自己裝配調試使用。

從使用者來說,新手小白更適合品牌機,傻瓜式一鍵操作,就能完成我們想要的效果。而dubbo更適合電腦高手,自己裝配自己想要的組件,使用起來更順手。

審核編輯 黃宇

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • RPC
    RPC
    +關注

    關注

    0

    文章

    110

    瀏覽量

    11471
  • 源碼
    +關注

    關注

    8

    文章

    622

    瀏覽量

    28884
  • Dubbo
    +關注

    關注

    0

    文章

    18

    瀏覽量

    3153
收藏 人收藏

    評論

    相關推薦

    獨家專訪阿里高級技術專家北緯:Dubbo開源重啟半年來的快意江湖

    ,以及在內部 RPC 框架Dubbo 兼容的工作中學習所得。而在正式接受Dubbo項目后,我又開始認真地體系地去了解 Dubbo 。出于
    發表于 05-16 22:27

    獨家專訪阿里高級技術專家北緯:Dubbo開源重啟半年來的快意江湖

    ,以及在內部 RPC 框架Dubbo 兼容的工作中學習所得。而在正式接受Dubbo項目后,我又開始認真地體系地去了解 Dubbo 。出于
    發表于 05-16 22:27

    聊聊Dubbo - Dubbo可擴展機制實戰

    摘要: 在Dubbo的官網上,Dubbo描述自己是個高性能的RPC框架。今天我想聊聊Dubbo
    發表于 06-04 17:33

    聊聊Dubbo - Dubbo可擴展機制源碼解析

    很不錯呀,接下來,我們就深入Dubbo源碼睹廬山真面目。在Dubbo可擴展機制實戰中,我們了解了Dubbo擴展機制的
    發表于 06-05 18:43

    Dubbo開源現狀與未來規劃

    考慮到有些同學可能對 Dubbo 不太熟悉,我先簡單介紹下 Dubbo 的工作原理和架構。簡單的說,Dubbo 是 基于 Java 的 RPC 框架
    發表于 07-05 15:21

    攜程的 Dubbo 之路

    個請求。在高并發的情況下,服務端的連接數和線程池等資源都會比較緊張,影響到請求處理的性能。而 Dubbo 作為個高性能的 RPC 框架
    發表于 10-12 15:05

    Dubbo解析及原理淺析

    本文詳細闡述了Dubbo及其原理。Dubbo種分布式服務框架dubbo除了可以提供服務之外,還可以實現軟負載均衡。它還提供了兩個功能M
    的頭像 發表于 02-07 15:57 ?2724次閱讀
    <b class='flag-5'>Dubbo</b>解析及原理<b class='flag-5'>淺析</b>

    Dubbo源代碼實現服務調用的動態代理和負載均衡

    我們知道,Dubbo將服務調用封裝成普通的Spring的Bean,于是我們可以像使用本地的Spring Bean樣,來調用遠端的Dubbo服務,并有LoadBalance和Failover的功能
    發表于 03-12 14:35 ?0次下載

    服務化改造實踐()| Dubbo + ZooKeeper

    “沒有最好的技術,只有最合適的技術。”我想這句話也同樣適用于微服務領域,沒有最好的服務框架,只有最適合自己的服務改造。在 Dubbo 的未來規劃中,除了保持自身技術上的領先性,關注性能、大流
    發表于 08-27 16:36 ?211次閱讀
    服務化改造實踐(<b class='flag-5'>一</b>)| <b class='flag-5'>Dubbo</b> + ZooKeeper

    dubbo-go 中的 TPS Limit 設計與實現

    前言 Apache Dubbo 是由阿里開源的RPC框架,除了基本的 RPC 功能以外,還提供了
    發表于 03-17 15:27 ?569次閱讀

    Dubbo 如何成為連接異構微服務體系的最佳服務開發框架

    從編程開發的角度來說,Apache Dubbo (以下簡稱 Dubbo )首先是RPC 服務框架,它最大的優勢在于提供了面向接口代理的
    發表于 03-12 17:04 ?878次閱讀
    <b class='flag-5'>Dubbo</b> 如何成為連接異構微服務體系的最佳服務開發<b class='flag-5'>框架</b>

    阿里用什么替代了dubbo

    dubbo簡介 Dubbo是阿里巴巴公司開源的個高性能優秀的服務框架,使得應用可通過高性能的RPC實現服務的輸出和輸入功能,可以和Spri
    的頭像 發表于 07-31 10:43 ?9366次閱讀

    dubbo-doc-static Dubbo文檔鏡像

    dubbo-doc-static.zip
    發表于 04-19 10:12 ?2次下載
    <b class='flag-5'>dubbo</b>-doc-static <b class='flag-5'>Dubbo</b>文檔鏡像

    Dubbo Gateway基于Java的Dubbo網關實現

    ./oschina_soft/dubbo-gateway.zip
    發表于 06-14 10:28 ?3次下載
    <b class='flag-5'>Dubbo</b> Gateway基于Java的<b class='flag-5'>Dubbo</b>網關實現

    dubbo和spring cloud區別

    RPC(遠程過程調用)框架,其主要目標是提供高性能、透明化的遠程方法調用,使得應用的各個模塊能夠像調用本地方法樣調用遠程服務。Dubbo
    的頭像 發表于 12-04 14:47 ?1127次閱讀