转:
文章目录
一、9种协议
1、dubbo 协议 (默认)
2、rmi 协议
3、hessian 协议
4、http 协议
5、webservice 协议
6、thrift 协议
7、memcached 协议
8、redis 协议
9、rest ( 就是 RestFull)
二、多协议配置
不同服务使用不同协议
同时使用多种协议
三、面试题:
Dubbo支持dubbo、rmi、hessian、http、webservice、thrift、redis等多种协议,但是Dubbo官网是推荐我们使用Dubbo协议的。
下面我们就针对Dubbo的每种协议详解讲解,以便我们在实际应用中能够正确取舍。
一、9种协议
1、dubbo 协议 (默认)
1、dubbo 缺省协议 采用单一长连接和NIO异步通讯,适合于小数据量大并发的服务调用,以及服务消费者机器数远大于服务提供者机器数的情况
2、不适合传送大数据量的服务,比如传文件,传视频等,除非请求量很低。
缺省协议,使用基于mina1.1.7+hessian3.2.1的tbremoting交互。
特性
连接个数:单连接
连接方式:长连接
传输协议:TCP
传输方式:NIO异步传输
序列化:Hessian 二进制序列化
适用范围:传入传出参数数据包较小(建议小于100K),消费者比提供者个数多,单一消费者无法压满提供者,尽量不要用dubbo协议传输大文件或超大字符串。
适用场景:常规远程服务方法调用
配置
<!--配置协议: -->
<dubbo:protocol name="dubbo" port="20880" />
<!--设置默认协议: -->
<dubbo:provider protocol="dubbo" />
<!-- 设置服务协议: -->
<dubbo:service protocol="dubbo" />
<!-- 多端口 -->
<dubbo:protocol />
</beans>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
三、面试题:
1、dubbo推荐用什么协议?
默认使用 dubbo 协议。
2、dubbo 默认使用什么序列化框架,你知道的还有哪些?
dubbo 有多种协议,不同的协议默认使用不同的序列化框架。比如:
dubbo 协议 默认使用 Hessian2 序列化。(说明:Hessian2 是阿里在 Hessian 基础上进行的二次开发,起名为Hessian2 )
rmi协议 默认为 java 原生序列化,
http 协议 默认为 为 json 。
此外补充,
hessian 协议,默认是 hessian 序列化;
webservice 协议,默认是 soap 文本序列化 。
上面说的是默认使用序列化。也可以使用第三方的序列化框架,如 Kryo 、 FST等序列化框架,详情参考:
https://blog.csdn.net/xiaojin21cen/article/details/90269659
https://blog.csdn.net/xiaojin21cen/article/details/90269952
知识来源:
上面的回答在dubbo 官方文档中有说明 。 http://dubbo.apache.org/zh-cn/docs/user/references/xml/dubbo-protocol.html
在这里插入图片描述
在这里插入图片描述
如上图所示,在 serialization 这一行中,如果使用的是dubbo协议,则默认 序列化 框架是 hessian2,
rmi协议,则默认为 java ;http 协议,则默认为 为json 。
---------------------
版权声明:本文为CSDN博主「xiaojin21cen」的原创文章,遵循CC 4.0 by-sa版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/xiaojin21cen/article/details/79834222