dubbo 各通讯协议比较

1.各协议的比较

 

协议名称实现描述连接使用场景
dubbo传输:mina、netty、grizzy

序列化:dubbo、hessian2、java、json
    dubbo缺省采用单一长连接和NIO异步通讯   1.传入传出参数数据包较小

2.消费者 比提供者多

3.常规远程服务方法调用

4.不适合传送大数据量的服务,比如文件、传视频
rmi传输:java  rmi

序列化:java 标准序列化
    

连接个数:多连接

连接方式:短连接

传输协议:TCP/IP

传输方式:BIO

1.常规RPC调用

2.与原RMI客户端互操作

3.可传文件

4.不支持防火墙穿透
hessian
传输:Serverlet容器

序列化:hessian二进制序列化
   

    连接个数:多连接
    连接方式:短连接
    传输协议:HTTP
    传输方式:同步传输

   

1.提供者比消费者多

2.可传文件

3.跨语言传输
http
传输:servlet容器

序列化:表单序列化
    连接个数:多连接
    连接方式:短连接
    传输协议:HTTP
    传输方式:同步传输
1.提供者多余消费者

2.数据包混合
webservice
传输:HTTP

序列化:SOAP文件序列化
    连接个数:多连接
    连接方式:短连接
    传输协议:HTTP
    传输方式:同步传输

1.系统集成

2.跨语言调用
thrift
    与thrift RPC实现集成,并在基础上修改了报文头   

长连接、NIO异步传输   
 

 

2、协议的配置:<dubbo:protocal>(只需在服务提供方配置即可)

 

属性类型是否必填缺省值描述
namestring必填dubbo协议名称
portint可选

dubbo协议缺省端口为20880,

rmi协议缺省端口为1099,

http和hessian协议缺省端口为80;

如果配置为-1或者没有配置port,则

会分配一个没有被占用的端口。

服务端口
threadpoolstring可选fixed线程池类型,可选:fixed/cached
threadsint可选100服务h定大小)
iothreadsint可选CPU个数+1io线程池大小(固定)
acceptsint可选0服务提供方最大可接受连接数
serializationstring可选

dubbo协议缺省为hessian2,

rmi缺省协议为java,

http协议缺省为json

可填序列化:dubbo|hessian2|

java|compactedjava|fastjson

dispatcherstring可选dubbo协议缺省为all

协议的消息派发方式,用于指定线程模型,

比如:dubbo协议的all, direct, message,

execution, connection等

参考:https://blog.csdn.net/fd2025/article/

details/79985542

queuesint可选0

线程池队列大小,当线程池满时,

排队等待执行的队列大小,建议不要设置,

当线程程池时应立即失败,重试其它服务

提供机器,而不是排队,除非有特殊需求。

charsetstring可选UTF-8序列化编码
serverserverstring

dubbo协议缺省为netty,

http协议缺省为servlet

hessian协议缺省为jetty

协议的服务器端实现类型,

比如:dubbo协议的mina,netty等,

http协议的jetty,servlet等

1    <dubbo:protocol name="hessian" server="jetty"
2                     client="httpclient"
3                     port="20880"
4                     threadpool="fixed"
5                     threads="50"
6                      iothreads="5"
7                     accepts="1000"/>

协议对应的源码:

 

dubbo 协议com.alibaba.dubbo.rpc.protocol.dubbo.DubboProtocol

RMI协议: com.alibaba.dubbo.rpc.protocol.rmi.RmiProtocol

Http协议com.alibaba.dubbo.rpc.protocol.http.HttpProtocol.InternalHandler

Hessian协议 :com.alibaba.dubbo.rpc.protocol.hessian.HessianProtocol.HessianHandler

 

 

 

dubbo多连接配置:

Dubbo 协议缺省每服务每提供者每消费者使用单一长连接,如果数据量较大,可以使用多个连接。

1 <dubbo:service connections="1"/>
2 <dubbo:reference connections="1"/>
  • <dubbo:service connections="0"> 或 <dubbo:reference connections="0"> 表示该服务使用 JVM 共享长连接。缺省
  • <dubbo:service connections="1"> 或 <dubbo:reference connections="1"> 表示该服务使用独立长连接。
  • <dubbo:service connections="2"> 或<dubbo:reference connections="2"> 表示该服务使用独立两条长连接。

为防止被大量连接撑挂,可在服务提供方限制大接收连接数,以实现服务提供方自我保护。

<dubbo:protocol name="dubbo" accepts="1000" />

dubbo.properties 配置:

1 dubbo.service.protocol=dubbo

 

 

1.各协议的比较

 

协议名称实现描述连接使用场景
dubbo传输:mina、netty、grizzy

序列化:dubbo、hessian2、java、json
    dubbo缺省采用单一长连接和NIO异步通讯   1.传入传出参数数据包较小

2.消费者 比提供者多

3.常规远程服务方法调用

4.不适合传送大数据量的服务,比如文件、传视频
rmi传输:java  rmi

序列化:java 标准序列化
    

连接个数:多连接

连接方式:短连接

传输协议:TCP/IP

传输方式:BIO

1.常规RPC调用

2.与原RMI客户端互操作

3.可传文件

4.不支持防火墙穿透
hessian
传输:Serverlet容器

序列化:hessian二进制序列化
   

    连接个数:多连接
    连接方式:短连接
    传输协议:HTTP
    传输方式:同步传输

   

1.提供者比消费者多

2.可传文件

3.跨语言传输
http
传输:servlet容器

序列化:表单序列化
    连接个数:多连接
    连接方式:短连接
    传输协议:HTTP
    传输方式:同步传输
1.提供者多余消费者

2.数据包混合
webservice
传输:HTTP

序列化:SOAP文件序列化
    连接个数:多连接
    连接方式:短连接
    传输协议:HTTP
    传输方式:同步传输

1.系统集成

2.跨语言调用
thrift
    与thrift RPC实现集成,并在基础上修改了报文头   

长连接、NIO异步传输   
 

 

2、协议的配置:<dubbo:protocal>(只需在服务提供方配置即可)

 

属性类型是否必填缺省值描述
namestring必填dubbo协议名称
portint可选

dubbo协议缺省端口为20880,

rmi协议缺省端口为1099,

http和hessian协议缺省端口为80;

如果配置为-1或者没有配置port,则

会分配一个没有被占用的端口。

服务端口
threadpoolstring可选fixed线程池类型,可选:fixed/cached
threadsint可选100服务h定大小)
iothreadsint可选CPU个数+1io线程池大小(固定)
acceptsint可选0服务提供方最大可接受连接数
serializationstring可选

dubbo协议缺省为hessian2,

rmi缺省协议为java,

http协议缺省为json

可填序列化:dubbo|hessian2|

java|compactedjava|fastjson

dispatcherstring可选dubbo协议缺省为all

协议的消息派发方式,用于指定线程模型,

比如:dubbo协议的all, direct, message,

execution, connection等

参考:https://blog.csdn.net/fd2025/article/

details/79985542

queuesint可选0

线程池队列大小,当线程池满时,

排队等待执行的队列大小,建议不要设置,

当线程程池时应立即失败,重试其它服务

提供机器,而不是排队,除非有特殊需求。

charsetstring可选UTF-8序列化编码
serverserverstring

dubbo协议缺省为netty,

http协议缺省为servlet

hessian协议缺省为jetty

协议的服务器端实现类型,

比如:dubbo协议的mina,netty等,

http协议的jetty,servlet等

  1.  
    <dubbo:protocol name="hessian" server="jetty"
  2.  
    client= "httpclient"
  3.  
    port= "20880"
  4.  
    threadpool= "fixed"
  5.  
    threads= "50"
  6.  
    iothreads= "5"
  7.  
    accepts= "1000"/>

    

协议对应的源码:

 

dubbo 协议com.alibaba.dubbo.rpc.protocol.dubbo.DubboProtocol

RMI协议: com.alibaba.dubbo.rpc.protocol.rmi.RmiProtocol

Http协议com.alibaba.dubbo.rpc.protocol.http.HttpProtocol.InternalHandler

Hessian协议 :com.alibaba.dubbo.rpc.protocol.hessian.HessianProtocol.HessianHandler

 

 

 

dubbo多连接配置:

Dubbo 协议缺省每服务每提供者每消费者使用单一长连接,如果数据量较大,可以使用多个连接。

  1.  
    <dubbo:serviceconnections="1"/>
  2.  
    <dubbo:referenceconnections="1"/>
  • <dubbo:service connections="0"> 或 <dubbo:reference connections="0"> 表示该服务使用 JVM 共享长连接。缺省
  • <dubbo:service connections="1"> 或 <dubbo:reference connections="1"> 表示该服务使用独立长连接。
  • <dubbo:service connections="2"> 或<dubbo:reference connections="2"> 表示该服务使用独立两条长连接。

为防止被大量连接撑挂,可在服务提供方限制大接收连接数,以实现服务提供方自我保护。

<dubbo:protocolname="dubbo"accepts="1000" />

dubbo.properties 配置:

dubbo.service.protocol=dubbo

转载于:https://www.cnblogs.com/yuandluck/p/9481084.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值