国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

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

這篇具有很好參考價值的文章主要介紹了Dubbo源碼淺析(一)—RPC框架與Dubbo。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

一、什么是RPC

1.1 RPC概念

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

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

1.2 RPC與Http的關(guān)系

用一句話來總結(jié)就是:

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

1.3 關(guān)于Rpc的思考

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

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

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

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

1.4 Rpc框架

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

1.5 總結(jié)

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

二、Rpc框架

2.1 dubbo是什么

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

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

/*
省略相關(guān)配置
*/

//將配置注冊到spring
@Resource
private QueryPinService queryPinService;

//直接使用遠程方法,像調(diào)用本地服務(wù)一樣簡單
ueryPinService.getPinWithConfig(paramMap, null);




dubbo整體架構(gòu)圖如下:

節(jié)點 說明
Provider 提供遠程服務(wù)的服務(wù)提供方
Registry 注冊中心
Consumer 需要調(diào)用遠程服務(wù)的服務(wù)消費方
Container 服務(wù)運行的容器
Monitor 監(jiān)控中心

作用流程大致如下:

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

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

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

服務(wù)提供者和消費者都會在內(nèi)存中記錄著調(diào)用的次數(shù)和時間,然后定時的發(fā)送統(tǒng)計數(shù)據(jù)到監(jiān)控中心。

2.2 dubbo和spring cloud的區(qū)別

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

  1. 初始定位不同:SpringCloud定位為微服務(wù)架構(gòu)下的一站式解決方案,主要有網(wǎng)關(guān)、注冊中心、配置中心、監(jiān)控中心等;Dubbo 是 它的關(guān)注點主要在于服務(wù)的調(diào)用和治理,其中服務(wù)調(diào)用更時其核心。

  2. 生態(tài)環(huán)境不同:SpringCloud依托于Spring平臺,具備更加完善的生態(tài)體系;而Dubbo一開始只是做RPC遠程調(diào)用,生態(tài)相對匱乏,現(xiàn)在逐漸豐富起來。

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

兩者組件配置:

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

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

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

作者:京東科技 韓國凱

來源:京東云開發(fā)者社區(qū) 轉(zhuǎn)載請注明來源文章來源地址http://www.zghlxwxcb.cn/news/detail-710214.html

到了這里,關(guān)于Dubbo源碼淺析(一)—RPC框架與Dubbo的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • Dubbo默認使用什么序列化框架?還有哪些?

    Dubbo默認使用的序列化框架是Hessian 2.0。Hessian是一種基于二進制的序列化協(xié)議,它具有簡單、高效的特點,適用于網(wǎng)絡(luò)傳輸和存儲數(shù)據(jù)。Hessian在Dubbo中被廣泛使用,因為它可以在不同的編程語言之間進行對象的序列化和反序列化。 除了Hessian,Dubbo還支持其他的序列化框架,可

    2024年02月10日
    瀏覽(23)
  • rpc通信原理淺析

    rpc通信原理淺析

    rpc(remote procedure call),即遠程過程調(diào)用,廣泛用于分布式或是異構(gòu)環(huán)境下的通信,數(shù)據(jù)格式一般采取protobuf。 protobuf(protocol buffer)是google 的一種數(shù)據(jù)交換的格式,它獨立于平臺語言。 google 提供了protobuf多種語言的實現(xiàn):java、c#、c++、go 和 python,每一種實現(xiàn)都包含了相應(yīng)語言

    2024年02月15日
    瀏覽(25)
  • 自定義Dubbo RPC通信協(xié)議

    Dubbo 協(xié)議層的核心SPI接口是 org.apache.dubbo.rpc.Protocol ,通過擴展該接口和圍繞的相關(guān)接口,就可以讓 Dubbo 使用我們自定義的協(xié)議來通信。默認的協(xié)議是 dubbo,本文提供一個 Grpc 協(xié)議的實現(xiàn)。 Google 提供了 Java 的 Grpc 實現(xiàn),所以我們站在巨人的肩膀上即可,就不用重復(fù)造輪子了。

    2024年01月19日
    瀏覽(26)
  • Dubbo之消費端服務(wù)RPC調(diào)用

    Dubbo之消費端服務(wù)RPC調(diào)用

    在消費端服務(wù)是基于接口調(diào)用Provider端提供的服務(wù),所以在消費端并沒有服務(wù)公共接口的實現(xiàn)類。 利用注解@DubboReference將目標接口CountryService作為CountryController類的字段屬性,在解析類CountryController時獲取全部字段屬性并單獨關(guān)注解析存在注解@DubboReference的字段屬性。 通過步驟

    2024年03月12日
    瀏覽(23)
  • 用Netty自己實現(xiàn)Dubbo RPC

    用Netty自己實現(xiàn)Dubbo RPC

    1. RPC(Remote Procedure Call)— 遠程過程調(diào)用,是一個計算機通信協(xié)議. 該協(xié)議 允許運行在一臺計算機中的程序調(diào)用另一臺計算機的子程序,而程序員無需額外地為這個交互作用編程; 2. 兩個或多個應(yīng)用程序都分布在不同的服務(wù)器上,它們之間的調(diào)用都像是本地方法調(diào)用一樣 (如圖): 3.常

    2024年02月10日
    瀏覽(23)
  • 深入淺出:理解 RPC 和 Dubbo 架構(gòu)

    深入淺出:理解 RPC 和 Dubbo 架構(gòu)

    Apache Dubbo是一款高性能的Java RPC框架.其前身是阿里巴巴公司開源的一個高性能,輕量級的開源Java RPC框架,可以和Spring框架無縫集成. Dubbo 官網(wǎng) RPC介紹 Remote Procedure Call 遠程過程調(diào)用,是分布式架構(gòu)的核心,按響應(yīng)方式分以下兩種: 同步調(diào)用:客戶端調(diào)用服務(wù)方方法,等待直到服務(wù)方返

    2023年04月12日
    瀏覽(23)
  • 應(yīng)用架構(gòu)演變過程、rpc及Dubbo簡介

    ????????單一應(yīng)用架構(gòu) - 垂直應(yīng)用架構(gòu) - 分布式服務(wù)架構(gòu)?- 微服務(wù)架構(gòu)。 單一應(yīng)用架構(gòu) ????????當網(wǎng)站流量很小時,只需一個應(yīng)用,將所有功能都部署在一起,以減少部署節(jié)點和成本。 此時,用于簡化增刪改查工作量的 數(shù)據(jù)訪問框架(ORM) 是關(guān)鍵。 ????????缺點:

    2024年02月02日
    瀏覽(22)
  • 不滿足于RPC,詳解Dubbo的服務(wù)調(diào)用鏈路

    不滿足于RPC,詳解Dubbo的服務(wù)調(diào)用鏈路

    【收藏向】從用法到源碼,一篇文章讓你精通Dubbo的SPI機制 面試Dubbo ,卻問我和Springcloud有什么區(qū)別? 超簡單,手把手教你搭建Dubbo工程(內(nèi)附源碼) Dubbo最核心功能——服務(wù)暴露的配置、使用及原理 并不簡單的代理,Dubbo是如何做服務(wù)引用的 經(jīng)過前面一系列的鋪墊,今天終

    2024年02月16日
    瀏覽(26)
  • RPC在Python中的使用及原理淺析

    RPC在Python中的使用及原理淺析

    RPC是遠程過程調(diào)用(Remote Procedure Call)的縮寫形式。RPC采用客戶機/服務(wù)器模式。請求程序就是一個客戶機,而服務(wù)提供程序就是一個服務(wù)器。首先,調(diào)用進程發(fā)送一個有進程參數(shù)的調(diào)用信息到服務(wù)進程,然后等待應(yīng)答信息。在服務(wù)器端,進程保持睡眠狀態(tài)直到調(diào)用信息的到達

    2024年02月05日
    瀏覽(26)
  • RPC:Remote Procedure Call 遠程過程調(diào)用

    目前,對于一個完整的應(yīng)用來說,通常包含了若干支持不同功能的服務(wù),亦或者是函數(shù),這些服務(wù)之間往往可能需要互相調(diào)用,使用已經(jīng)實現(xiàn)的服務(wù)功能,而不是需要在每個服務(wù)進程中再去重復(fù)實現(xiàn)已經(jīng)有的功能。 這不僅對于開發(fā)者來說是一種比較合理的設(shè)計方式,對于服務(wù)

    2024年01月19日
    瀏覽(24)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包