未验证 提交 b012de29 编写于 作者: Y Yang Libin 提交者: GitHub

fix: update dubbo protocol and close #201

新增 Dubbo 支持的通信协议
上级 26d0939f
......@@ -16,9 +16,9 @@ dubbo 支持哪些通信协议?支持哪些序列化协议?说一下 Hessian
### dubbo 支持不同的通信协议
- dubbo 协议
- dubbo 协议 `dubbo://`
**默认**就是走 dubbo 协议,单一长连接,进行的是 NIO 异步通信,基于 hessian 作为序列化协议。使用的场景是:传输数据量小(每次请求在 100kb 以内),但是并发量很高。
**默认**就是走 dubbo 协议,单一长连接,进行的是 NIO 异步通信,基于 hessian 作为序列化协议。使用的场景是:传输数据量小(每次请求在 100kb 以内),但是并发量很高,以及服务消费者机器数远大于服务提供者机器数的情况
为了要支持高并发场景,一般是服务提供者就几台机器,但是服务消费者有上百台,可能每天调用量达到上亿次!此时用长连接是最合适的,就是跟每个服务消费者维持一个长连接就可以,可能总共就 100 个连接。然后后面直接基于长连接 NIO 异步通信,可以支撑高并发请求。
......@@ -30,21 +30,41 @@ dubbo 支持哪些通信协议?支持哪些序列化协议?说一下 Hessian
![dubbo-not-keep-connection](./images/dubbo-not-keep-connection.png)
- rmi 协议
- rmi 协议 `rmi://`
走 Java 二进制序列化,多个短连接,适合消费者和提供者数量差不多的情况,适用于文件的传输,一般较少用。
RMI 协议采用 JDK 标准的 java.rmi.\* 实现,采用阻塞式短连接和 JDK 标准序列化方式。多个短连接,适合消费者和提供者数量差不多的情况,适用于文件的传输,一般较少用。
- hessian 协议
- hessian 协议 `hessian://`
走 hessian 序列化协议,多个短连接,适用于提供者数量比消费者数量还多的情况,适用于文件的传输,一般较少用。
Hessian 1 协议用于集成 Hessian 的服务,Hessian 底层采用 Http 通讯,采用 Servlet 暴露服务,Dubbo 缺省内嵌 Jetty 作为服务器实现。走 hessian 序列化协议,多个短连接,适用于提供者数量比消费者数量还多的情况,适用于文件的传输,一般较少用。
- http 协议
- http 协议 `http://`
走表单序列化。
基于 HTTP 表单的远程调用协议,采用 Spring 的 HttpInvoker 实现。走表单序列化。
- webservice
- thrift 协议 `thrift://`
走 SOAP 文本序列化。
当前 dubbo 支持的 thrift 协议是对 thrift 原生协议的扩展,在原生协议的基础上添加了一些额外的头信息,比如 service name,magic number 等。
- webservice `webservice://`
基于 WebService 的远程调用协议,基于 Apache CXF 的 frontend-simple 和 transports-http 实现。走 SOAP 文本序列化。
- memcached 协议 `memcached://`
基于 memcached 实现的 RPC 协议。
- redis 协议 `redis://`
基于 Redis 实现的 RPC 协议。
- rest 协议 `rest://`
基于标准的 Java REST API——JAX-RS 2.0(Java API for RESTful Web Services 的简写)实现的 REST 调用支持。
- gPRC 协议 `grpc://`
Dubbo 自 2.7.5 版本开始支持 gRPC 协议,对于计划使用 HTTP/2 通信,或者想利用 gRPC 带来的 Stream、反压、Reactive 编程等能力的开发者来说, 都可以考虑启用 gRPC 协议。
### dubbo 支持的序列化协议
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册