dubbo--03--- dubbo 支持的9种协议

发布时间:2023年12月19日

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


Dubbo框架

Apache Dubbo |?d?b??| 是一款高性能、轻量级的开源Java RPC框架,它提供了三大核心能力:面向接口的远程方法调用,智能容错和负载均衡,以及服务自动注册和发现。
在这里插入图片描述
在这里插入图片描述

特性

  1. 透明化的远程方法RPC调用,就像调用本地方法一样调用远程方法,只需简单配置,没有任何API侵入。
  2. 软负载均衡及容错机制,可在内网替代F5等硬件负载均衡器,降低成本,减少单点。
  3. 服务自动注册与发现,不再需要写死服务提供方地址,注册中心基于接口名查询服务提供者的IP地址,并且能够平滑添加或删除服务提供者。

Dubbo 和 Spring Cloud区别

  1. 通信方式不同:Dubbo 使用的是 RPC 通信,而Spring Cloud 使用的是HTTP RESTFul 方式。
  2. 组成不一样
    – dubbo的服务注册中心为Zookeerper,服务监控中心为dubbo-monitor,无消息总线、服务跟踪、批量任务等组件;
    – Spring Cloud的服务注册中心为spring-cloud netflix enruka Nacos,服务监控中心为spring-boot admin,有消息总线、数据流、服务跟踪、批量任务等组件;

dubbo 支持的9种协议

协议类型

Dubbo支持dubbo、rmi、hessian、http、webservice、thrift、redis等多种协议,但是Dubbo官网是推荐我们使用Dubbo协议的。

  1. dubbo 协议 (默认)
  2. rmi 协议
  3. hessian 协议
  4. http 协议
  5. webservice 协议
  6. thrift 协议
  7. memcached 协议
  8. redis 协议
  9. rest ( 就是 RestFull)

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 id="dubbo1" name="dubbo" port="20880" />
<dubbo:protocol id="dubbo2" name="dubbo" port="20881" />

<!-- 配置协议选项: -->
<dubbo:protocol name=“dubbo” port=“9090” server=“netty” client=“netty” codec=“dubbo” 
				serialization=“hessian2” charset=“UTF-8” threadpool=“fixed” threads=“100”
		 		queues=“0” iothreads=“9” buffer=“8192” accepts=“1000” payload=“8388608” />


在这里插入图片描述
在这里插入图片描述

常见问题

在这里插入图片描述

2、rmi 协议

在这里插入图片描述
在这里插入图片描述

3、hessian 协议

在这里插入图片描述

4、http 协议

基于http表单的远程调用协议。参见:[HTTP协议使用说明]

特性
  • 连接个数:多连接
  • 连接方式:短连接
  • 传输协议:HTTP
  • 传输方式:同步传输
  • 序列化:表单序列化 ,即 json
  • 适用范围:传入传出参数数据包大小混合,提供者比消费者个数多,可用浏览器查看,可用表单或URL传入参数,暂不支持传文件。
  • 适用场景:需同时给应用程序和浏览器JS使用的服务。
    在这里插入图片描述
    在这里插入图片描述

5、webservice 协议

在这里插入图片描述
在这里插入图片描述

6、thrift 协议在这里插入图片描述

7、memcached 协议

在这里插入图片描述

8、redis 协议

在这里插入图片描述

9、rest ( 就是 RestFull)

基于标准的Java REST API——JAX-RS 2.0(Java API for RESTful Web Services的简写)实现的REST调用支持

面试题

在这里插入图片描述
在这里插入图片描述

文章来源:https://blog.csdn.net/weixin_48052161/article/details/135093243
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。