Dubbo之默认协议dubbo
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
接口 - 参数及返回值不能自定义实现
List
,Map
,Number
,Date
,Calendar
等接口,只能用 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相关推荐
- 为什么都说Dubbo不适合传输大文件?Dubbo支持的协议
背景 之前公司有一个 Dubbo 服务,内部封装了腾讯云的对象存储服务 SDK,是为了统一管理这种三方服务的SDK,其他系统直接调用这个对象存储的 Dubbo 服务.用来避免因平台 SDK 出现不兼容 ...
- 中dubbo所需要的依赖_Dubbo介绍、dubbo架构图、dubbo运行和执行流程、dubbo支持的协议以及支持的注册中心...
第67次(Dubbo) 学习主题:Dubbo 学习目标: 掌握Dubbo的作用,理解Dubbo的架构图 掌握Dubbo支持的协议以及支持的注册中心 1. Dubbo介绍 1.1 什么是Dubbo? D ...
- dubbo之rmi协议使用
普通接口与实现类 public interface DemoService { String sayHello(String msg);} public class DemoServiceImpl i ...
- dubbo几种协议_Dubbo面试(简)
Dubbo分布式系统详解:https://zhuanlan.zhihu.com/p/84506139 什么是Dubbo? Dubbo是Alibaba开源的分布式服务框架,它最大的特点是按照分层的方式来 ...
- Dubbo远程传输协议详解
前言 上次小编为大家带来了Dubbo调用及容错机制详解,不知道大家有没有去看小编最后留下的问题,欢迎对文章进行评论也希望大家和小编多多交流.今天接着为大家带来Dubbo的内容,传输协议,上次调用机制中 ...
- 精通Dubbo——Dubbo支持的协议的详解
Dubbo支持dubbo.rmi.hessian.http.webservice.thrift.redis等多种协议,但是Dubbo官网是推荐我们使用Dubbo协议的.下面我们就针对Dubbo的每种协 ...
- Dubbo 配置http协议
一 服务提供者 在服务提供者中,需要添加 注释为http协议支持 的依赖jar包,修改启动类的启动方式,添加provider.xml配置 <?xml version="1.0" ...
- 4.Dubbo的常用协议
Dubbo的常用协议 一.八种协议 1.服务消费者和服务提供者可以不通过注册中心,而直接两者相互连接调用服务,这时使用的就是底层的协议,有八种. 2.以下是8种协议: ①dubbo:// ②hessi ...
- Dubbo源码解析-Dubbo服务消费者_Dubbo协议(一)
前言: 在介绍完Dubbo 本地模式(Injvm协议)下的服务提供与消费后,上文我们又介绍了Dubbo远程模式(dubbo协议)下的服务暴露过程,本质上就是通过Netty将dubbo协议端口暴露出去, ...
最新文章
- 【刷题】LOJ 6011 「网络流 24 题」运输问题
- Sharepoin学习笔记—架构系列--08 Sharepoint的数据模型(DataModel)、数据管理(Data Management)与查询(Query System)
- html 点击div 改变高度,HTML / CSS将div设置为同级的高度
- Windows Server 2008 R2/2012 网络负载平衡NLB相关内容
- 算法概论第八章课后习题8.3
- 解决cdh4.5.0下 MAP任务看不到状态
- 清理tomcat缓存
- 主机通过网络访问虚拟机VirtualBox的WEB服务器
- opencv之图像二值化处理
- 史上最全java项目开发编程规范
- 七周成为数据分析师 第三周:Excel篇
- Mybatis技术的使用一:逆向工程
- 迅为S5P6818核心板ARM Cortex-A53架构三星八核处理器
- 项目管理第四章项目整合管理
- jquery按钮加载动画插件loda-button
- linux动态频率调节系统cpufreq,Linux的cpufreq(动态变频)技术
- 悟透JavaScript-对象素描
- android hierarchyViewer 的UI工具的使用
- 批量下载ERA5数据(Python+IDM)
- 去掉router-link文字的下划线
热门文章
- 11 OptionsMenu 菜单
- 如何在高压系统中实现电源和信号线的电气隔离
- Idea中GsonFormat插件安装
- Spring框架及其特点
- Dedecms信息泄露漏洞(CVE-2018-6910)
- Is the influences futural AI bring to software engineers are that scary?
- 用 Python 翻译语言
- IoTGateway 国内开源工业 IoT 物联网网关
- SVN学习笔记11 -- Eclipse 中 SVN的相关操作 -- checkout and update
- h5是html语言吗,H5和HTML5是一样的吗