Dubbo分布式框架详解:架构、特点和应用场景

需积分: 0 0 下载量 147 浏览量 更新于2024-08-03 收藏 16KB DOCX 举报
Dubbo 面试题及答案总结 作为一个分布式框架,Dubbo 提供了远程服务调用的功能,其核心部分包含集群容错、远程通讯和自动发现三个主要组件。 **集群容错** 集群容错是 Dubbo 的核心组件之一,提供了基于接口方法的透明远程过程调用,包括多协议支持,以及软负载均衡、失败容错、地址路由、动态配置等集群支持。 Dubbo 的集群容错机制可以在内网替代 F5 等硬件负载均衡器,降低成本,减少单点故障。 **远程通讯** Dubbo 的远程通讯组件提供了对多种基于长连接的 NIO 框架抽象封装,包括多种线程模型、序列化,以及“请求-响应”模式的信息交换方式。 Dubbo 的远程通讯机制可以实现透明化的远程方法调用,就像调用本地方法一样调用远程方法,只需简单配置,没有任何 API 侵入。 **自动发现** Dubbo 的自动发现组件基于注册中心目录服务,使服务消费方能动态的查找服务提供方,使地址透明,使服务提供方可以平滑增加或减少机器。 Dubbo 的自动发现机制可以实现服务自动注册与发现,不再需要写死服务提供方地址,注册中心基于接口名查询服务提供者的 IP 地址,并且能够平滑添加或删除服务提供者。 **通信框架** Dubbo 的默认通信框架是 Netty 框架,但是也支持 Mina 框架。 Netty 框架是一个基于 Java 的异步 I/O 框架,提供了高性能、低延迟的网络编程模型。 **服务调用** Dubbo 的服务调用默认是阻塞的,但是可以异步调用,没有返回值的可以这么做。 Dubbo 的服务调用机制可以实现透明化的远程方法调用,就像调用本地方法一样调用远程方法,只需简单配置,没有任何 API 侵入。 **注册中心** Dubbo 的注册中心是 ZooKeeper,另外还有 Multicast 注册中心、Redis 注册中心、Simple 注册中心等选择。 ZooKeeper 是一个分布式应用程序协调服务,提供了高可用、高性能的注册中心服务。 ZooKeeper 的节点是通过像树一样的结构来进行维护的,并且每一个节点通过路径来标示以及访问。 **序列化框架** Dubbo 的默认序列化框架是 Hessian 序列化,另外还有 Duddo、FastJson、Java 自带序列化等选择。 Hessian 序列化是一个采用二进制格式传输的服务框架,相对传统 SOAPWebService,更轻量,更快速。 Hessian 序列化机制可以实现高性能的数据传输,减少网络带宽占用。 **Hessian 序列化原理** Hessian 序列化的原理是基于 HTTP 协议的,Hessian 将辅助信息封装在 HTTP 头中,比如“授权 token”等,Hessian 提供了简单的“校验”机制。 Hessian 序列化的交互核心数据,比如“调用的方法”和参数列表信息,将通过 POST 请求的 body 体直接传输。 Dubbo 是一个功能强大、灵活的分布式框架,提供了远程服务调用的功能,包含集群容错、远程通讯和自动发现三个主要组件。 Dubbo 的通信框架、注册中心和序列化框架可以根据实际情况进行选择和配置。