advanced-java/docs/distributed-system/dubbo-serialization-protocol.md

34 lines
1.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

## 面试题
dubbo 支持哪些通信协议?支持哪些序列化协议?
## 面试官心理分析
上一个问题,说说 dubbo 的基本工作原理,那是你必须知道的,至少知道 dubbo 分成哪些层,然后平时怎么发起 rpc 请求的,注册、发现、调用,这些是基本的。
接着就可以针对底层进行深入的问问了比如第一步就可以先问问序列化协议这块就是平时rpc的时候怎么走的
## 面试题剖析
### dubbo 支持不同的通信协议
- dubbo 协议
**默认**就是走 dubbo 协议单一长连接NIO 异步通信,基于 hessian 作为序列化协议。使用的场景是:传输数据量小(每次请求在 100kb 以内),但是并发量很高。
为了要支持高并发场景,一般是服务提供者就几台机器,但是服务消费者有上百台,可能每天调用量达到上亿次!此时用长连接是最合适的,就是跟每个服务消费者维持一个长连接就可以,可能总共就 100 个连接。然后后面直接基于长连接 NIO 异步通信,可以支撑高并发请求。
- rmi 协议
走 Java 二进制序列化,多个短连接,适合消费者和提供者数量差不多,适用于文件的传输,一般较少用。
- hessian 协议
走 hessian 序列化协议,多个短连接,适用于提供者数量比消费者数量还多,适用于文件的传输,一般较少用。
- http 协议
走 json 序列化
- webservice
走 SOAP 文本序列化
### dubbo 支持的序列化协议
dubbo 支持 hession、Java 二进制序列化、json、SOAP 文本序列化多种序列化协议。但是 hessian 是其默认的序列化协议。