docs(dubbo): add dubbo-serialization-protocol.md

This commit is contained in:
yanglbme
2018-11-19 21:11:02 +08:00
parent d1c864a8d9
commit dfed5e251c
2 changed files with 35 additions and 1 deletions

View File

@@ -14,7 +14,7 @@
### 分布式服务框架
- [说一下 Dubbo 的工作原理?注册中心挂了可以继续通信吗?](/docs/distributed-system/dubbo-operating-principle.md)
- Dubbo 支持哪些序列化协议?说一下 Hessian 的数据结构PB知道吗为什么 PB 的效率是最高的?
- [Dubbo 支持哪些序列化协议?说一下 Hessian 的数据结构PB知道吗为什么 PB 的效率是最高的?](/docs/distributed-system/dubbo-serialization-protocol.md)
- Dubbo 负载均衡策略和高可用策略都有哪些?动态代理策略呢?
- Dubbo 的 spi 思想是什么?
- 如何基于 Dubbo 进行服务治理、服务降级、失败重试以及超时重试?

View File

@@ -0,0 +1,34 @@
## 面试题
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 是其默认的序列化协议。