Dubbo 缺省协议采用单一长连接和 NIO 异步通讯,适合于小数据量大并发的服务调用,以及服务消费者机器数远大于服务提供者机器数的情况。

反之,Dubbo 缺省协议不适合传送大数据量的服务,比如传文件,传视频等,除非请求量很低。

  • Transporter: mina, netty, grizzy
  • Serialization: dubbo, hessian2, java, json
  • Dispatcher: all, direct, message, execution, connection
  • ThreadPool: fixed, cached

特性

缺省协议,使用基于 mina 1.1.7 和 hessian 3.2.1 的 tbremoting 交互。

  • 连接个数:单连接
  • 连接方式:长连接
  • 传输协议:TCP
  • 传输方式:NIO 异步传输
  • 序列化:Hessian 二进制序列化
  • 适用范围:传入传出参数数据包较小(建议小于100K),消费者比提供者个数多,单一消费者无法压满提供者,尽量不要用 dubbo 协议传输大文件或超大字符串。
  • 适用场景:常规远程服务方法调用

约束

  • 参数及返回值需实现 Serializable 接口
  • 参数及返回值不能自定义实现 ListMapNumberDateCalendar 等接口,只能用 JDK 自带的实现,因为 hessian 会做特殊处理,自定义实现类中的属性值都会丢失。
  • Hessian 序列化,只传成员属性值和值的类型,不传方法或静态变量,兼容情况 [1][2]:

数据通讯

情况

结果

A->B

类A多一种 属性(或者说类B少一种 属性)

不抛异常,A多的那 个属性的值,B没有, 其他正常

A->B

枚举A多一种 枚举(或者说B少一种 枚举),A使用多 出来的枚举进行传输

抛异常

A->B

枚举A多一种 枚举(或者说B少一种 枚举),A不使用 多出来的枚举进行传输

不抛异常,B正常接 收数据

A->B

A和B的属性 名相同,但类型不相同

抛异常

A->B

serialId 不相同

正常传输

接口增加方法,对客户端无影响,如果该方法不是客户端需要的,客户端不需要重新部署。输入参数和结果集中增加属性,对客户端无影响,如果客户端并不需要新属性,不用重新部署。

输入参数和结果集属性名变化,对客户端序列化无影响,但是如果客户端不重新部署,不管输入还是输出,属性名变化的属性值是获取不到的。

总结:服务器端和客户端对领域对象并不需要完全一致,而是按照最大匹配原则。

Dubbo之默认协议dubbo相关推荐

  1. 为什么都说Dubbo不适合传输大文件?Dubbo支持的协议

    背景 之前公司有一个 Dubbo 服务,内部封装了腾讯云的对象存储服务 SDK,是为了统一管理这种三方服务的SDK,其他系统直接调用这个对象存储的 Dubbo 服务.用来避免因平台 SDK 出现不兼容 ...

  2. 中dubbo所需要的依赖_Dubbo介绍、dubbo架构图、dubbo运行和执行流程、dubbo支持的协议以及支持的注册中心...

    第67次(Dubbo) 学习主题:Dubbo 学习目标: 掌握Dubbo的作用,理解Dubbo的架构图 掌握Dubbo支持的协议以及支持的注册中心 1. Dubbo介绍 1.1 什么是Dubbo? D ...

  3. dubbo之rmi协议使用

    普通接口与实现类 public interface DemoService { String sayHello(String msg);} public class DemoServiceImpl i ...

  4. dubbo几种协议_Dubbo面试(简)

    Dubbo分布式系统详解:https://zhuanlan.zhihu.com/p/84506139 什么是Dubbo? Dubbo是Alibaba开源的分布式服务框架,它最大的特点是按照分层的方式来 ...

  5. Dubbo远程传输协议详解

    前言 上次小编为大家带来了Dubbo调用及容错机制详解,不知道大家有没有去看小编最后留下的问题,欢迎对文章进行评论也希望大家和小编多多交流.今天接着为大家带来Dubbo的内容,传输协议,上次调用机制中 ...

  6. 精通Dubbo——Dubbo支持的协议的详解

    Dubbo支持dubbo.rmi.hessian.http.webservice.thrift.redis等多种协议,但是Dubbo官网是推荐我们使用Dubbo协议的.下面我们就针对Dubbo的每种协 ...

  7. Dubbo 配置http协议

    一 服务提供者 在服务提供者中,需要添加 注释为http协议支持 的依赖jar包,修改启动类的启动方式,添加provider.xml配置 <?xml version="1.0" ...

  8. 4.Dubbo的常用协议

    Dubbo的常用协议 一.八种协议 1.服务消费者和服务提供者可以不通过注册中心,而直接两者相互连接调用服务,这时使用的就是底层的协议,有八种. 2.以下是8种协议: ①dubbo:// ②hessi ...

  9. Dubbo源码解析-Dubbo服务消费者_Dubbo协议(一)

    前言: 在介绍完Dubbo 本地模式(Injvm协议)下的服务提供与消费后,上文我们又介绍了Dubbo远程模式(dubbo协议)下的服务暴露过程,本质上就是通过Netty将dubbo协议端口暴露出去, ...

最新文章

  1. 【刷题】LOJ 6011 「网络流 24 题」运输问题
  2. Sharepoin学习笔记—架构系列--08 Sharepoint的数据模型(DataModel)、数据管理(Data Management)与查询(Query System)
  3. html 点击div 改变高度,HTML / CSS将div设置为同级的高度
  4. Windows Server 2008 R2/2012 网络负载平衡NLB相关内容
  5. 算法概论第八章课后习题8.3
  6. 解决cdh4.5.0下 MAP任务看不到状态
  7. 清理tomcat缓存
  8. 主机通过网络访问虚拟机VirtualBox的WEB服务器
  9. opencv之图像二值化处理
  10. 史上最全java项目开发编程规范
  11. 七周成为数据分析师 第三周:Excel篇
  12. Mybatis技术的使用一:逆向工程
  13. 迅为S5P6818核心板ARM Cortex-A53架构三星八核处理器
  14. 项目管理第四章项目整合管理
  15. jquery按钮加载动画插件loda-button
  16. linux动态频率调节系统cpufreq,Linux的cpufreq(动态变频)技术
  17. 悟透JavaScript-对象素描
  18. android hierarchyViewer 的UI工具的使用
  19. 批量下载ERA5数据(Python+IDM)
  20. 去掉router-link文字的下划线

热门文章

  1. 11 OptionsMenu 菜单
  2. 如何在高压系统中实现电源和信号线的电气隔离
  3. Idea中GsonFormat插件安装
  4. Spring框架及其特点
  5. Dedecms信息泄露漏洞(CVE-2018-6910)
  6. Is the influences futural AI bring to software engineers are that scary?
  7. 用 Python 翻译语言
  8. IoTGateway 国内开源工业 IoT 物联网网关
  9. SVN学习笔记11 -- Eclipse 中 SVN的相关操作 -- checkout and update
  10. h5是html语言吗,H5和HTML5是一样的吗