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>(只需在服务提供方配置即可)

属性 类型 是否必填 缺省值 描述
name string 必填 dubbo 协议名称
port int 可选
dubbo协议缺省端口为20880,

rmi协议缺省端口为1099,

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

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

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

服务端口
threadpool string 可选 fixed 线程池类型,可选:fixed/cached
threads int 可选 100 服务h定大小)
iothreads int 可选 CPU个数+1 io线程池大小(固定)
accepts int 可选 0 服务提供方最大可接受连接数
serialization string 可选
dubbo协议缺省为hessian2,

rmi缺省协议为java,

http协议缺省为json


可填序列化:dubbo|hessian2|

java|compactedjava|fastjson

dispatcher string 可选 dubbo协议缺省为all
协议的消息派发方式,用于指定线程模型,

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

execution, connection等

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

details/79985542

queues int 可选 0
线程池队列大小,当线程池满时,

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

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

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

charset string 可选 UTF-8 序列化编码
server server string
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>(只需在服务提供方配置即可)

属性 类型 是否必填 缺省值 描述
name string 必填 dubbo 协议名称
port int 可选
dubbo协议缺省端口为20880,

rmi协议缺省端口为1099,

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

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

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

服务端口
threadpool string 可选 fixed 线程池类型,可选:fixed/cached
threads int 可选 100 服务h定大小)
iothreads int 可选 CPU个数+1 io线程池大小(固定)
accepts int 可选 0 服务提供方最大可接受连接数
serialization string 可选
dubbo协议缺省为hessian2,

rmi缺省协议为java,

http协议缺省为json


可填序列化:dubbo|hessian2|

java|compactedjava|fastjson

dispatcher string 可选 dubbo协议缺省为all
协议的消息派发方式,用于指定线程模型,

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

execution, connection等

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

details/79985542

queues int 可选 0
线程池队列大小,当线程池满时,

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

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

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

charset string 可选 UTF-8 序列化编码
server server string
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

时间: 2024-08-02 06:13:41

dubbo 各通讯协议比较的相关文章

基于dubbo框架下的RPC通讯协议性能测试

一.前言 Dubbo RPC服务框架支持丰富的传输协议.序列化方式等通讯相关的配置和扩展.dubbo执行一次RPC请求的过程大致如下:消费者(Consumer)向注册中心(Registry)执行RPC请求,注册中心分配服务URL并路由到具体服务提供方(Provider),消费者和服务提供方建立网络连接,服务提供方在本地创建连接池对象并提供远程服务,对于长连接类型协议(如dubbo协议)将保持连接,减少握手认证,调用过程中可以避免频繁建立和断开连接导致的性能开销,保持长连接需要有心跳包的发送,所以

基于dubbo框架下的RPC通讯协议性能测试 转

一.前言 Dubbo RPC服务框架支持丰富的传输协议.序列化方式等通讯相关的配置和扩展.dubbo执行一次RPC请求的过程大致如下:消费者(Consumer)向注册中心(Registry)执行RPC请求,注册中心分配服务URL并路由到具体服务提供方(Provider),消费者和服务提供方建立网络连接,服务提供方在本地创建连接池对象并提供远程服务,对于长连接类型协议(如dubbo协议)将保持连接,减少握手认证,调用过程中可以避免频繁建立和断开连接导致的性能开销,保持长连接需要有心跳包的发送,所以

Dubbo支持的协议

协议介绍 协议是两个网络实体进行通信的基础,数据在网络上从一个实体传输到另一个实体,以字节流的形式传递到对端.在这个字节流的世界里,如果没有协议,就无法将这个一维的字节流重塑成为二维或者多维的数据结构以及领域对象. 在通信过程中,不同的服务等级一般对应着不同的服务质量,那么选择合适的协议便是一件非常重要的事情.你可以根据你应用的创建来选择.例如,使用RMI协议,一般会受到防火墙的限制,所以对于外部与内部进行通信的场景,就不要使用RMI协议,而是基于HTTP协议或者Hessian协议. 常见的协议

Ntrip通讯协议1.0

1 什么是Ntrip? CORS(Continuously Operating Reference Stations)就是网络基准站,通过网络收发GPS差分数据.用户访问CORS后,不用单独架设GPS基准站,即可实现GPS流动站的差分定位. 访问CORS系统,就需要网络通讯协议.NTRIP( Networked Transport of RTCM via Internet Protocol)是CORS系统的通讯协议之一. 2 系统组成 使用NTRIP通讯协议的CORS系统,其组成请参考下图 图1

信息安全系统设计基础实验五:通讯协议设计

北京电子科技学院(BESTI) 实 验 报 告 课程:信息安全系统设计基础 班级:52.53 姓名:王思亓 赵阳林 学号:20135205 20135334 成绩: 指导教师:娄嘉鹏 实验日期:2015.11.24 实验密级: 预习程度: 实验时间:15:30—18:00 仪器组次: 必修/选修:必修 实验序号: 实验名称:通讯协议设计 实验目的与要求:1.掌握在ARM开发板实现一个简单的WEB服务器的过程.2.学习在ARM开发板上的SOCKET网络编程.3.学习Linux下的signal()函

使用delphi 开发多层应用(十六)使用XMLRPC 实现basic4android 远程调用RTC服务(讲述了RTC的特点,其底层通讯协议是自己封装SOCK 库,与kbmmw 的适合场合不完全一样)

    RealThinClient (以下简称RTC) 也是一款delphi 多层开发的框架,由于其底层通讯协议是自己封装SOCK 库,抛弃了 大家诟病的indy,因此表现的非常稳定,效率也非常高,深受很多人的追捧.由于RTC 是从底层通讯做起的,因此通讯层的 功能非常强,但是在中间层数据库功能虽然有所实现,但是没有kbmmw 和RO 强,但是对于普通的远程调用做的非常优雅. 同时它重点在于使用http 协议实现功能调用,因此与kbmmw 的适合场合不完全一样. 由于RTC 可以非常快速的建立

UDP通讯协议

常见的通讯协议有udp和tcp. 先来简单了解一下这两个协议各自的特点: UDP: --将数据及源.目的封装在数据包中,不需要建立连接: --每个数据包的大小限制在64k以内: --因无连接,是不可靠协议: --不需要建立连接,所以传输速度快,但是容易丢失数据: 总之:Udp是面向无连接的通讯协议,传输数据时,不管对端服务是否启动,直接发送. 日常中使用Udp技术的软件有:飞秋.视频会议等: TCP: --建立连接,形成传输数据的通道: --在连接中进行大的数据量传输: --通过三次握手完成连接

iOS-防止通讯协议被轻易破解的方法

开发者可以选择类似Protobuf之类的二进制通讯协议或者自己实现通讯协议,对于传输的内容进行一定程度的加密,以增加黑客破解协议的难度. 参考资料: <iOS开发进阶> --唐巧 版权声明:本文为博主原创文章,未经博主允许不得转载.

通讯协议之——字节序

最近有接触通讯协议有碰到字节序,记得上学的时候有说过不过太久了不怎么记得了,现在我在这里说说字节序: 我们都知道计算机存储数据的时候都是把数据转换成字节进行存储,而日常我们的程序或存储的数据通常都是由多个字节组成的,而不同的计算机或设备存储的规则又不一致,导致我们在多计算机.设备间传输数据时就要了解设备的字节存储(字节序)规则是怎样的,这就是我们要了解字节序的原因,在做网络编程,游戏编程时这是必须清楚的知识: 比如:在我们使用的计算机编程语言中就有各种数据类型:byte,int,short,lo