Dubbo协议详解与超时设置
版权申诉
22 浏览量
更新于2024-07-21
收藏 806KB PDF 举报
"这份资料是2021年字节跳动面试中关于Java和Dubbo的部分,主要探讨了Dubbo支持的多种通信协议、各协议的适用场景、优缺点,以及Dubbo服务的超时时间和注册中心的相关知识。"
在Java开发中,Dubbo是一个广泛使用的分布式服务框架,它提供了丰富的协议选择来满足不同场景的需求。以下是各种协议的详细说明:
1. **dubbo协议**:这是Dubbo的默认协议,基于单一长连接和NIO(非阻塞I/O)异步通讯。这种协议适用于高并发、小数据量的服务调用,特别适合消费者数量远大于提供者的情况。它使用TCP作为传输协议,并采用Hessian进行序列化,以提高效率。
2. **rmi协议**:遵循JDK的RMI标准,要求传输的参数和返回值需实现Serializable接口,使用Java的序列化机制。rmi协议适合短连接,适合数据包大小混合的场景,消费者和提供者数量相当,同时可以传输文件。但需要注意的是,由于使用了旧版本的Common-Collections包和Java序列化,可能存在安全漏洞。
3. **webservice协议**:基于WebService,适用于系统集成和跨语言调用。它通过CXF实现,使用多个短连接,HTTP作为传输协议,同步传输。这种方式对传输的数据类型包容性强,但相对性能较低。
4. **http协议**:基于Http表单提交,适合Web应用和JavaScript调用。它使用Spring的HttpInvoke实现,也是多个短连接,HTTP传输,适合提供者数量多于消费者的情况。
5. **hessian协议**:集成Hessian服务,通过HTTP通讯,使用Servlet暴露服务。Dubbo默认使用Jetty作为服务器。该协议适用于参数较大的场景,提供者压力较大,可以传递文件,但同步传输可能增加延迟。
6. **memcache协议**和**redis协议**:这两种协议基于流行的缓存系统,实现了RPC功能,分别基于memcached和redis,用于快速的数据交换和服务调用。
关于Dubbo的超时时间设置,有两处可以配置:服务提供者端和服务消费者端。服务端设置的超时时间可以更好地反映服务特性,而消费者端的设置具有更高的优先级,能更灵活地控制调用。如果消费者端超时,服务端线程不会被占用,但会产生警告。
Dubbo支持多种注册中心,包括:
1. **Multicast注册中心**:使用网络中的组播地址进行服务注册和发现,无需中心节点,具备一定的容错能力。
2. **Zookeeper注册中心**:基于Apache Zookeeper,是一个分布式的、可靠的协调系统,常用于服务发现和配置管理。它提供了一致性的视图,适合需要高度可用性和稳定性的场景。
这些知识是面试中可能遇到的重点,理解并掌握它们对于成为一名合格的Java开发者,尤其是参与大型分布式系统开发的人员来说至关重要。
2013-05-09 上传
2019-10-21 上传
2020-05-28 上传
2019-10-31 上传
2022-02-28 上传
2021-10-18 上传
2021-09-30 上传
Java天下第1
- 粉丝: 563
- 资源: 65
最新资源
- SSM Java项目:StudentInfo 数据管理与可视化分析
- pyedgar:Python库简化EDGAR数据交互与文档下载
- Node.js环境下wfdb文件解码与实时数据处理
- phpcms v2.2企业级网站管理系统发布
- 美团饿了么优惠券推广工具-uniapp源码
- 基于红外传感器的会议室实时占用率测量系统
- DenseNet-201预训练模型:图像分类的深度学习工具箱
- Java实现和弦移调工具:Transposer-java
- phpMyFAQ 2.5.1 Beta多国语言版:技术项目源码共享平台
- Python自动化源码实现便捷自动下单功能
- Android天气预报应用:查看多城市详细天气信息
- PHPTML类:简化HTML页面创建的PHP开源工具
- Biovec在蛋白质分析中的应用:预测、结构和可视化
- EfficientNet-b0深度学习工具箱模型在MATLAB中的应用
- 2024年河北省技能大赛数字化设计开发样题解析
- 笔记本USB加湿器:便携式设计解决方案