3.Hessian
Dubbo 的 Hessian 协议基于 HTTP 通信,使用 Servlet 暴露服务,内嵌 Jetty 服务器,支持与原生 Hessian 服务互操作,适用于参数较大、需传输文件的场景,配置灵活,支持多端口和直连调用。
5.LoadBalance
本文深入解析了 Dubbo 中的负载均衡算法,包括随机、轮询、最少活跃数和一致性哈希四种策略。内容涵盖算法原理、代码实现、流程图解析及实际应用场景,帮助读者理解不同算法的特点及适用场景,适合面试复习与源码学习。
1.Dubbo(缺省默认)
Dubbo缺省协议采用单一长连接和NIO异步通信,适合小数据量高并发场景,消费者多于提供者。不适用于大数据传输,如文件或视频,除非请求量低。支持多种传输器、序列化方式和线程池策略。特性包括基于Mina和Hessian的交互、单连接、长连接、TCP传输、NIO异步、Hessian序列化等。适用于常规远程服务调用,但参数和返回值需实现Serializable接口,不能自定义集合类。配置灵活,支持多端口和连接数控制,保障服务提供者的稳定性。
4.Cluster
本文深入解析了 Dubbo 中集群容错机制的设计与实现,重点介绍了 Cluster 接口及其九种常见实现类,包括 MergeableCluster、AvailableCluster、ForkingCluster、FailfastCluster、MockClusterWrapper、FailoverCluster、FailbackCluster、FailsafeCluster 和 BroadcastCluster。
4.Http
基于HTTP表单的远程调用协议,采用Spring的HttpInvoker实现,支持多连接、短连接、同步传输,适用于混合参数大小、提供者多于消费者场景,可浏览器访问。
6.Thrift
Dubbo支持的Thrift协议在原生基础上扩展,添加服务名、魔数等头信息,需用Thrift编译器生成Java代码。依赖libthrift库,配置统一端口,但不兼容原生Thrift且不支持null值传递。
5.WebService
基于 Apache CXF 的 WebService 协议实现,支持与原生 WebService 服务互操作,适用于系统集成和跨语言调用。
6.服务暴露原理
本文详细解析了 Dubbo 服务发布的核心流程,包括本地暴露与远程暴露的区别、协议支持、服务注册等关键环节,并结合日志和源码分析了服务启动过程中的关键动作,帮助读者深入理解 Dubbo 的内部机制,适用于面试准备和技术研究。
2.RMI
RMI 协议基于 JDK 标准的 `java.rmi.*` 实现,采用阻塞式短连接和 JDK 标准序列化方式。存在多连接、TCP传输、同步传输等特性,适用于常规远程服务调用,但需注意反序列化安全风险及接口兼容性问题。
2.Directory
本文深入解析Dubbo中Directory接口的两个实现类:StaticDirectory与RegistryDirectory,重点剖析RegistryDirectory如何通过注册中心回调机制动态更新invoker列表,揭示其背后的服务发现与集群容错原理。