"Dubbo常问面试题及协议比较详解"

需积分: 2 0 下载量 45 浏览量 更新于2024-01-16 收藏 1.26MB PDF 举报
Dubbo 是一种分布式服务框架,支持多种协议,每种协议都有不同的应用场景、优缺点。Dubbo 主要支持的协议有 dubbo、rmi、webservice 和 http。每种协议都有自己的特点和适用范围。 首先,dubbo 协议采用单一长连接和 NIO 异步通讯,适合大并发小数据量的服务调用,以及消费者远大于提供者的情况。传输协议为 TCP,异步传输,使用 Hessian 序列化。这种协议的优点是适用于大并发场景,能够有效降低网络开销和提高性能,但缺点是只支持 Java 语言,不适合跨语言调用。 其次,rmi 协议采用 JDK 标准的 rmi 实现,传输参数和返回参数对象需要实现 Serializable 接口,使用 java 标准序列化机制,使用阻塞式短连接,传输数据包大小混合,适用于消费者和提供者个数差不多,可传文件,传输协议为 TCP。这种协议适用于常规的远程服务调用和 rmi 互操作,但在依赖低版本的 Common-Collections 包和存在 java 序列化安全漏洞的情况下存在一定的安全风险。 另外,webservice 协议是基于 WebService 的远程调用协议,集成 CXF 实现,提供和原生 WebService 的互操作。该协议使用多个短连接,基于 HTTP 传输,同步传输,适用于系统集成和跨语言调用。webservice 协议的优点是支持跨语言调用,能够实现不同系统之间的互操作,但缺点是性能相对较低,适用场景相对较窄。 最后,http 协议是基于 Http 表单提交的远程调用协议,使用 Spring 的 HttpInvoke 实现。该协议适用于多个短连接,传输协议为 HTTP,传入参数大小混合,提供者个数多于消费者的场景。http 协议的特点是简单易用,但在大并发和高性能的场景下表现不佳。 总的来说,Dubbo 支持多种协议,每种协议都有自己的特点和适用范围。在选择合适的协议时,需要根据具体的业务场景和需求来进行选择,以达到最佳的性能和效果。