干翻Dubbo系列第十二篇:Dubbo协议介绍

这篇具有很好参考价值的文章主要介绍了干翻Dubbo系列第十二篇:Dubbo协议介绍。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

干翻Dubbo系列第十二篇:Dubbo协议介绍,Dubbo专栏,网络

文章目录

文章说明

一:Dubbo协议

1:Dubbo协议简介

2:Dubbo协议优点

 3:Dubbo协议帧的组成

(一):幻数

(二):2Way

(三):event

(四):Serilization ID

(五):status

(六):RequestID

(七):数据长度


一: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协议是比较合适的。

干翻Dubbo系列第十二篇:Dubbo协议介绍,Dubbo专栏,网络

 3:Dubbo协议帧的组成

干翻Dubbo系列第十二篇:Dubbo协议介绍,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)数据长度

        这个数据长度的大小是必须要给的,只有给了这个数据长度的大小,我们才可以顺利的解决半包和粘包问题。

干翻Dubbo系列第十二篇:Dubbo协议介绍,Dubbo专栏,网络

干翻Dubbo系列第十二篇:Dubbo协议介绍,Dubbo专栏,网络文章来源地址https://www.toymoban.com/news/detail-659346.html

到了这里,关于干翻Dubbo系列第十二篇:Dubbo协议介绍的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 《MySQL》第十二篇 数据类型

    MySQL 支持多种数据类型,学习好数据类型,才能更好的学习 MySQL 表的设计,让表的设计更加合理。 类型 大小 SIGNED(有符号) UNSIGNED(无符号) 说明 tinyint 1字节 -128~127 0~255 小整型 smallint 2字节 -32768~32767 0~65535 小整型

    2024年02月15日
    浏览(52)
  • 干翻Dubbo系列第四篇:Dubbo3第一个应用程序细节补充

    1:协议端口 补充说明1: 显示指定Dubbo服务启动的端口号:一个服务器上起多个Provider都这样显示的指定port端口号的话,会造成端口号冲突。 解决方式:我们可以port设置为-1,服务启动时默认采用20880(dubbo协议默认端口),此端口被占用默认会+1,一直到加端口不占用为止。

    2024年02月15日
    浏览(46)
  • Java多线程&并发篇----第十二篇

    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这篇文章男女通用,看懂了就去分享给你的码吧。 ReentantLock 继承接口 Lock 并实现了接口中定义的方法, 他是一种可重入锁, 除了能完成 synchronized 所能完成的所有

    2024年01月20日
    浏览(53)
  • 【MySQL数据库 | 第十二篇】:约束

    在MySQL中, 约束是一种限制数据表中列值的规定 。保证数据库中的数据正确,有效性和完整性。MySQL中的约束有以下几种: 1. 主键约束(Primary Key Constraint) :主键是用于唯一标识表中每行记录的列。主键约束要求 每个主键列的值都是唯一的,且不能为NULL 。一个表只能有一

    2024年02月08日
    浏览(51)
  • 2023年Java核心技术第十二篇(篇篇万字精讲)

    目录 22. AtomicInteger 底层实现原理是什么?如何在自己的项目代码中应用CAS操作? 22.1 典型回答 22.1.1 CAS详细解释: 22.1.1.1 预期值的选取: 22.1.2 CAS的弊端 22.1.2.1 ABA问题: 22.1.2.2 自旋次数限制: 22.1.2.3 只能保证一个共享变量的原子操作: 22.1.3 CAS操作失败的原因以及解决方案

    2024年02月10日
    浏览(49)
  • 第十二篇-Tesla P40+ModelScope+Gradio+QWen+MindChat

    本文主要实现Qwen-7B-Chat与MindChat-Qwen-7B的简单部署与测试 通过ModelScope下载模型,下载速度还是很好的,下载模型完成,需要一些时间 1.Qwen-7B-Chat 大概15G 2.MindChat-Qwen-7B 大概14G 可以使用体验了 本文参考 https://github.com/X-D-Lab/MindChat/blob/main/webui_demo.py

    2024年02月10日
    浏览(43)
  • 【夜深人静学习数据结构与算法 | 第十二篇】动态规划——背包问题

      目录  前言:  01背包问题: 二维数组思路: 一维数组思路: 总结:       在前面我们学习动态规划理论知识的时候,我就讲过要介绍一下背包问题,那么今天我们就来讲解一下背包问题。 在这里我们只介绍 01背包 ,至于分组背包和混合背包这种的已经属于竞赛级别的

    2024年02月12日
    浏览(53)
  • 第十二篇 1+X考证 Web前端测试题PHP篇(新)

      1、 以下关于PHP面向对象的说法错误的是( A ) A、PHP可以多重继承,一个类可以继承多个父类 B、PHP使用new运算符来获取一个实例对象 C、一个类可以在声明中用extends继承另一个类的方法和属性 D、PHP默认将var解释为public [ 知识点:php不支持多重继承,但是

    2024年02月08日
    浏览(47)
  • RK3568驱动指南|第十二篇 GPIO子系统-第128章 GPIO入门实验

    瑞芯微RK3568芯片是一款定位中高端的通用型SOC,采用22nm制程工艺,搭载一颗四核Cortex-A55处理器和Mali G52 2EE 图形处理器。RK3568 支持4K 解码和 1080P 编码,支持SATA/PCIE/USB3.0 外围接口。RK3568内置独立NPU,可用于轻量级人工智能应用。RK3568 支持安卓 11 和 linux 系统,主要面向物联网

    2024年01月21日
    浏览(43)
  • 【K8S系列】第十二讲:Service进阶

    目录 ​编辑 序言 1.Service介绍 1.1 什么是Service 1.2 Service 类型 1.2.1 NodePort 1.2.2 LoadBalancer 1.2.3 ExternalName 1.2.4 ClusterIP 2.yaml名词解释  3.投票  当发现自己的才华撑不起野心时,就安静下来学习吧 三言两语,不如细心探索 今天学习一下Service相关内容,希望此文,能帮助读者对

    2024年02月02日
    浏览(36)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包