Apache ShenYu 架构学习指南
Apache ShenYu 是一款高性能、插件化的微服务API网关,基于Spring WebFlux + Reactor 构建,支持多协议、动态配置与实时数据同步。本指南以通俗类比和实战路径,带你深入理解其架构设计、核心流程与源码实现,助力快速掌握并参与贡献。
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 的内部机制,适用于面试准备和技术研究。