訂閱
糾錯
加入自媒體

為什么 Dubbo 總說自己性能高?

初識 Dubbo

為什么 Dubbo 說自己性能高?

高性能要從底層的原理說起,既然是一個 RPC 框架,主要干的就是遠程過程(方法)調(diào)用, 那么提升性能就要從最關鍵、最耗時的兩個方面入手:序列化和網(wǎng)絡通信。

序列化:我們學習 Java 網(wǎng)絡開發(fā)的時候知道,本地的對象要在網(wǎng)絡上傳輸,必須要實現(xiàn)Serializable 接口,也就是必須序列化。我們序列化的方案很多:xml、json、二進制流…其中效率最高的就是二進制流(因為計算機就是二進制的)。然而 Dubbo 采用的就是效率最高的二進制。

網(wǎng)絡通信:不同于 HTTP 需要進行 7 步走(三次握手和四次揮手),Dubbo 采用 Socket 通信機制,一步到位,提升了通信效率,并且可以建立長連接,不用反復連接,直接傳輸數(shù)據(jù)

別的 RPC 框架

gRPC

Thrift

HSF

……

dubbo 的前世今生

dubbo 之前一直都作為 Alibaba 公司內(nèi)部使用的框架。

2011 年,dubbo 被托管到了GitHub 上(開源)

2014 年11 月發(fā)布2.4.11版本后宣布停止更新。此后一段時間很多公司開源了自己基于Dubbo的變種版本(例如當當網(wǎng)的 Dubbo X,網(wǎng)易考拉的 Dubbo K)

2017 年 SpringCloud 橫空出世,Dubbo 感覺到壓力后連續(xù)更新了幾個版本2018 年 1 月,阿里公司聯(lián)合當當網(wǎng)將 Dubbo 和 Dubbo X 合并,發(fā)布了 2.6 版本2018 年除夕夜阿里將 Dubbo 貢獻給了 Apache 基金會

2018 除夕夜至今,Apache 維護和更新 Dubbo

dubbo 概述

Apache Dubbo (incubating) |?d?b??| 是一款高性能、輕量級的開源 Java RPC 框架,它提供了三大核心能力:面向接口的遠程方法調(diào)用,智能容錯和負載均衡,以及服務自動注冊和發(fā)現(xiàn)。

Dubbo 是一個分布式服務框架,致力于提供高性能和透明化的 RPC 遠程服務調(diào)用方案、服務治理方案。

特性:

面向接口代理:調(diào)用接口的方法,在 A 服務器調(diào)用 B 服務器的方法,由 dubbo 實現(xiàn)對 B 的調(diào)用,無需關心實現(xiàn)的細節(jié),就像MyBatis 訪問 Dao 的接口,可以操作數(shù)據(jù)庫一樣。不用關心 Dao 接口方法的實現(xiàn)。這樣開發(fā)是方便,舒服的。

基本架構(gòu)

服務提供者(Provider):暴露服務的服務提供方,服務提供者在啟動時,向注冊中心注冊自己提供的服務。

服務消費者(Consumer): 調(diào)用遠程服務的服務消費方,服務消費者在啟動時,向注冊中心訂閱自己所需的服務,服務消費者,從提供者地址列表中,基于軟負載均衡算法,選一臺提供者進行調(diào)用,如果調(diào)用失敗,再選另一臺調(diào)用。

注冊中心(Registry):注冊中心返回服務提供者地址列表給消費者,如果有變更,注冊中心將基于長連接推送變更數(shù)據(jù)給消費者

監(jiān)控中心(Monitor):服務消費者和提供者,在內(nèi)存中累計調(diào)用次數(shù)和調(diào)用時間,定時每分鐘發(fā)送一次統(tǒng)計數(shù)據(jù)到監(jiān)控中心

調(diào)用關系說明:

服務容器負責啟動,加載,運行服務提供者。

服務提供者在啟動時,向注冊中心注冊自己提供的服務。

服務消費者在啟動時,向注冊中心訂閱自己所需的服務。

注冊中心返回服務提供者地址列表給消費者,如果有變更,注冊中心將基于長連接推送變更數(shù)據(jù)給消費者。

服務消費者,從提供者地址列表中,基于軟負載均衡算法,選一臺提供者進行調(diào)用,如果調(diào)用失敗,再選另一臺調(diào)用。

服務消費者和提供者,在內(nèi)存中累計調(diào)用次數(shù)和調(diào)用時間,定時每分鐘發(fā)送一次統(tǒng)計數(shù)據(jù)到監(jiān)控中心。

dubbo 支持的協(xié)議

支持多種協(xié)議:dubbo , hessian , rmi , http, webservice , thrift , memcached , redis。dubbo 官方推薦使用dubbo 協(xié)議。dubbo 協(xié)議默認端口 20880

使用 dubbo 協(xié)議,spring 配置文件加入:

<dubbo:protocol name="dubbo" port="20880" />

電商平臺需求

某電商平臺系統(tǒng)需求,用戶瀏覽商品;選擇商品下訂單,訂單系統(tǒng)需要獲取用戶信息中的送貨地址;向支付系統(tǒng)請求完成付款。

1  2  3  下一頁>  
聲明: 本文由入駐維科號的作者撰寫,觀點僅代表作者本人,不代表OFweek立場。如有侵權或其他問題,請聯(lián)系舉報。

發(fā)表評論

0條評論,0人參與

請輸入評論內(nèi)容...

請輸入評論/評論長度6~500個字

您提交的評論過于頻繁,請輸入驗證碼繼續(xù)

暫無評論

暫無評論

    掃碼關注公眾號
    OFweek人工智能網(wǎng)
    獲取更多精彩內(nèi)容
    文章糾錯
    x
    *文字標題:
    *糾錯內(nèi)容:
    聯(lián)系郵箱:
    *驗 證 碼:

    粵公網(wǎng)安備 44030502002758號