干翻Dubbo系列第十二篇:Dubbo協議介紹

文章目錄

文章說明

一:Dubbo協議

1:Dubbo協議簡介

2:Dubbo協議優點

?3:Dubbo協議幀的組成

(一):幻數

(二):2Way

(三):event

(四):Serilization ID

(五):status

(六):RequestID

(七):數據長度


文章說明


本文內容整理自《孫哥說Dubbo系列視頻課程》,孫帥老師課程細致、全面、深入、性價比極高。B站搜孫帥suns可以找到對應的試聽視頻,或者直接添加老師微信號suns45與他直接聯系

一:Dubbo協議

Rpc過程當中三個核心的要素就是:協議 序列化? 通信方式

1:Dubbo協議簡介

Dubbo協議是Dubbo定義的私有化協議。也是Dubbo默認的協議,我們在不進行任何設置的情況下Dubbo使用的協議就是Dubbo協議,默認的序列化范式就是Hessian2,當然在3.2之后的Dubbo版本切換為了FastJson2,Dubbo的默認的通信方式是Netty4。

不同的協議,支持的通信方式是不一樣的。我們的dubbo協議走的是TCP層,他的通信方式就是Netty或者Mina,當我們后續將Rest協議的時候,他的序列化方式使用的就是JSON或者XML的方式了,它的通訊方式就是Jetty或者是Tomat這種服務器的通信方式。

不同的協議+序列化方式組合+通信方式對應的通信效率是天差地別的。他們對應的執行效率,也就是:響應時間、TPS和QPS也是天查地別的。

2:Dubbo協議優點

Dubbo協議最大的特點是什么呢?他是一個長鏈接異步通信的方式,他和我們Netty里邊Futrure和Promise的情況是可以畫等號的。這種情況適用于,小數據量大并發的數據調用。他不適合大數據量的服務比如:傳輸文件和視頻。日常常規的調用,數據量比較小,兵法比較高,使用Dubbo協議是比較合適的。

?3:Dubbo協議幀的組成

?所謂協議幀的組成,就是協議描述了通信雙方,在通信內容傳輸過程中達成的傳輸單位(幀)的約定。在這個幀的信息里邊,那些是頭信息,那些是體信息?實際上整個幀的結構。

不同的協議是不一樣的,但是基本的內容是一致的,都包括頭信息和體信息。Dubbo協議的幀信息里邊,幻數,序列化方式,操作的方向性,狀態信息和數據大小信息,這些內容都有,以及這些操作內容占多大的空間。

(一):幻數

幻數:幻數這個內容分為幻術高位和幻數地位,總共占據16個bit。0xdabb這是一個16進制的數字,他的作用標識了這是Dubbo協議的標準幀,有了這個標識才能被認定為這是客戶端給服務端發送的一個標準的幀,他的作用就類似于Java中class文件的cafababe。

req和res占用了1bit的空間,表達的是這是請求的數據還是相應的數據,如果是請求的數據則是1,如果是響應的數據則是0,這個就代表了,咱們前邊提到的操作的方向性。

(二):2Way

這個標志位只能在req是1的時候,它的含義代表了我們期望服務器給我們的返回值是有值還是沒值的情況。1是有值。

(三):event

事件,這個可以告訴付服務端,我們這是一個普通的請求信息,還是心跳事件,如果是心跳事件的話,這里會是1

(四):Serilization ID

序列化協議,如果是FastJson2的話,這里應該是6.

(五):status

20 - OK
30 - CLIENT_TIMEOUT
31 - SERVER_TIMEOUT
40 - BAD_REQUEST
50 - BAD_RESPONSE
60 - SERVICE_NOT_FOUND
70 - SERVICE_ERROR
80 - SERVER_ERROR
90 - CLIENT_ERROR
100 - SERVER_THREADPOOL_EXHAUSTED_ERROR

(六):RequestID

給我們請求一個編號,占用64bit,是一個Long值。

(七):數據長度

Data Length (32)數據長度

這個數據長度的大小是必須要給的,只有給了這個數據長度的大小,我們才可以順利的解決半包和粘包問題。

?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/43664.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/43664.shtml
英文地址,請注明出處:http://en.pswp.cn/news/43664.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

每日一題 142環形鏈表||(快慢指針)

題目 給定一個鏈表的頭節點 head ,返回鏈表開始入環的第一個節點。 如果鏈表無環,則返回 null。 如果鏈表中有某個節點,可以通過連續跟蹤 next 指針再次到達,則鏈表中存在環。 為了表示給定鏈表中的環,評測系統內部…

深入理解【二叉樹】

📙作者簡介: 清水加冰,目前大二在讀,正在學習C/C、Python、操作系統、數據庫等。 📘相關專欄:C語言初階、C語言進階、C語言刷題訓練營、數據結構刷題訓練營、有感興趣的可以看一看。 歡迎點贊 &#x1f44d…

Java中的異常

認識異常 異常就是程序出現的問題; Integer.valueOf("aaaa"); 異常體系 因為寫代碼時經常會出現問題,Java的設計者們早就為我們寫好了很多個異常類,來描述不同場景下的問題。而有些類是有共性的所以就有了異常的繼承體系 Error&…

日志采集分析ELK

這里的 ELK其實對應三種不同組件 1.ElasticSearch:基于Java,一個開源的分布式搜索引擎。 2.LogStash:基于Java,開源的用于收集,分析和存儲日志的工具。(它和Beats有重疊的功能,Beats出現之后&a…

OLED透明屏采購指南:如何選擇高質量產品?

著科技的不斷進步,OLED透明屏作為一種創新的顯示技術,在各個行業中得到了廣泛應用。 在進行OLED透明屏采購時,選擇高質量的產品至關重要。在這篇文章中,尼伽將為您提供一個全面的OLED透明屏采購指南,幫助您了解關鍵步…

day20 飛機大戰射擊游戲

有飛行物類 飛行 爆炸 的連環畫, 飛行的背景圖 , 子彈圖, 還有游戲開始 暫停 結束 的畫面圖。 設計一個飛機大戰的小游戲, 玩家用鼠標操作hero飛行機, 射出子彈殺死敵機,小蜜蜂。 敵機可以獲得分數&…

Jmeter參數化類型

1.參數在多個請求報文中出現,執行一次需要使用同一個參數--隨機生成(隨機變更) 2.參數在請求報文中出現,執行過程需要使用同一個參數(--固定參數) 3.參數從指定幾個固定中隨機獲取一個 4.參數從本地文件中獲取 5.參數在多個請求報文中出現,每…

c++11:std::partition分割,std::is_partitioned判斷

序列 vec.clear();for(int i 0;i<10;i){vec.push_back(i);}重新分割。大于1的排在后&#xff0c;返回第一個 std::vector<int>::iterator it std::partition(vec.begin(),vec.end(),[](int value){return value>1;}); std::cout<<"partition:"&l…

計算機 數進制轉換;存儲MB與帶寬Mbps

參考&#xff1a;https://zhuanlan.zhihu.com/p/459817484 1、計算機 數進制轉換 1&#xff09;與十進制相關的轉換 2&#xff09;與二進制相關的轉換 二進制是Binary&#xff0c;簡寫為B&#xff1b;八進制是Octal&#xff0c;簡寫為O&#xff1b;十進制是Decimal&#xff…

centos nginx配置ipv4和ipv6的地址都可以訪問同一個網站

標題centos nginx配置ipv4和ipv6的地址都可以訪問同一個網站 在 Nginx 中配置使 IPv4 和 IPv6 地址都可以訪問同一個網站相對簡單。只需要確保 Nginx 配置文件正確地配置了監聽 IPv4 和 IPv6 地址的監聽器即可。 打開你的 Nginx 配置文件&#xff0c;通常位于 /etc/nginx/nginx…

還在玩傳統終端,不妨來試試全新 AI 終端 Warp

壹 ? 引 最近一段時間&#xff0c;AI領域如同雨后春筍般開始猛烈生長&#xff0c;processon&#xff0c;sentry&#xff0c;一些日常使用的工具都在積極接入AI&#xff0c;那么正好借著AI的風頭&#xff0c;今天給大家推薦一款非常不錯的智能終端 warp&#xff08;目前僅限ma…

車載APP軟件外包開發通訊

車載APP與車輛之間的通信方式和特點會因為不同的技術和場景而有所不同。以下是一些常見的車載APP與車輛通信方式以及它們的特點&#xff0c;希望對大家有所幫助。北京木奇移動技術有限公司&#xff0c;專業的軟件外包開發公司&#xff0c;歡迎交流合作。 1.藍牙連接&#xff1a…

英語——基本句型

第一節 句型1——主語+謂語 一個句子為了說明一件事或表達一種感情,最簡單的表達方式,就是“誰,怎么了”。這里的“誰”,就是句子的主語,它的內涵很豐富,可以是人、物、某種行為等。“怎么了”,就是句子的謂語,一般由不及物動詞充當。主語+謂語,即構成一個最簡單的句…

STM32 F103C8T6學習筆記9:0.96寸單色OLED顯示屏—自由取模顯示—顯示漢字與圖片

今日學習0.96寸單色OLED顯示屏的自由取模顯示: 宋體漢字比較復雜&#xff0c;常用字符可以直接復制存下來&#xff0c;畢竟只有那么幾十個字母字符&#xff0c;但漢字實在太多了&#xff0c;基本不會全部放在單片機里存著&#xff0c;一般用到多少個字就取幾個字的模&#xff…

基于STM32+微信小程序設計的寵物投喂裝置(騰訊云IOT)

一、設計需求 【1】 項目背景 社會經濟的飛速發展與城市化進程的加速,城市市民家庭的封閉化和人口老齡化的情況日益突出,基于人們的情感寄托與休閑消費的需要,中國的寵物產業也悄然興起。家庭寵物的飼養成為了城市居民生活消遣的新方式。寵物的喂養和看護往往是寵物主人最…

hive高頻使用的拼接函數及“避坑”

hive高頻使用的拼接函數及“避坑” 說到拼接函數應用場景和使用頻次還是非常高&#xff0c;比如一個員工在公司充當多個角色&#xff0c;我們在底層存數的時候往往是多行&#xff0c;但是應用的時候我們通常會只需要一行&#xff0c;角色字段進行拼接&#xff0c;這樣join其他…

typescript基礎之null和undefined

TypeScript是一種基于JavaScript的編程語言&#xff0c;它支持靜態類型檢查和面向對象的特性。TypeScript中的null和undefined是兩種基本類型&#xff0c;它們分別表示空值或未定義的值。在本文中&#xff0c;我將介紹TypeScript中null和undefined的含義、區別、檢查方法和使用…

Transformer 相關模型的參數量計算

如何計算Transformer 相關模型的參數量呢&#xff1f; 先回憶一下Transformer模型論文《Attention is all your need》中的兩個圖。 設Transformer模型的層數為N&#xff0c;每個Transformer層主要由self-attention 和 Feed Forward組成。設self-attention模塊的head個數為 …

linux系統部署jenkins詳細教程

一、Linux環境 1、下載war包 官網下載地址&#xff1a; https://get.jenkins.io/war-stable/2.332.4/jenkins.war 2、將war包上傳至服務器 創建目錄/home/ubuntu/jenkins 上傳war包至該目錄 3、將jenkins添加到環境變量 進入環境變量文件 vim /etc/profile # 文件下方追加…

【3Ds Max】圖形合并命令的簡單使用

示例&#xff08;將文字設置在球體上&#xff09; 1. 首先這里創建一個球體和一個文本 2. 選中球體&#xff0c;在復合對象中點擊圖形合并按鈕 點擊“拾取圖形”按鈕&#xff0c;然后選中文本&#xff0c;此時可以看到球體上已經投射出文本 3. 接下來是一些常用參數的介紹 當…