2024年3月6日
dubbo-remoting 模块整体结构设计 服务治理框架 大致可分为 “服务通信” 和 “服务管理” 两部分,前面我们分析了有关注册中心的源码,也就是服务管理,接下来要分析的就是跟服务通信有关的源码,也就是远程通讯模块。该模块中提供了多种客户端和服务端通信的功能,而在对 NIO 框架选型上,dubbo 交由用户选择,它集成了……
阅读全文
2024年3月6日
Buffer 序列化和反序列化 Dubbo 是一个高性能、轻量级的开源 Java RPC 框架,它提供了许多组件来帮助开发者实现分布式服务调用。其中,Dubbo 的远程通信模块使用了 Netty 作为网络通信框架,而 Netty 中的 Buffer 组件则是 Dubbo 远程通信中非常重要的一个部分。 在 Dubbo 中,Buffer 组件主要用于数据的序列化和反序列化。当客户端发送请……
阅读全文
2024年3月6日
Dubbo 的注册中心虽然提供了多种实现,但生产上的事实标准基本上都是 基于 Zookeeper 实现的。这种注册中心的实现方法也是 Dubbo 最为推荐的。为了易于理解 Zookeeper 在 Dubbo 中的应用,我们先简单看一下 zookeeper。 由于 Dubbo 是一个分布式 RPC 开源框架,各服务之间单独部署,往往会出现资源之间数据不一致的问题,比如:某一个服务……
阅读全文
2024年3月6日
注册中心在 Dubbo 中的作用 服务治理框架可以大致分为 服务通信 和 服务管理 两部分,服务管理可以分为服务注册、服务订阅以及服务发现,服务提供者 Provider 会往注册中心注册服务,而消费者 Consumer 会从注册中心中订阅自己关注的服务,并在关注的服务发生变更时 得到注册中心的通知。Provider、Consumer 以及 Registry……
阅读全文
2024年3月6日
Dubbo 是一款高性能、轻量级的开源 Java RPC 框架,它提供了三种集群模式:失败转移、失败重试和负载均衡,以及多种容错策略:失败重试、失败快速失败、降级和熔断等。本文将详细介绍 Dubbo 集群容错的重点和方案。 重点: 集群模式:Dubbo 提供了三种集群模式,分别是失败转移、失败重试和负载均衡。其中,失败转移……
阅读全文
2024年3月6日
Dubbo 负载均衡简介 负载均衡,无论在常用的中间件 及 框架中,还是现实生活中,都有所体现。比如,一个团队干活,老大肯定要尽可能把任务均匀合理地分下去,让整个团队能高速运转,能力强的多分点,能力弱的少分点,绝对不能去逮着一个人 让他累到死,让其它人闲着。这样的均匀分配任务及压力的思想 放在开发领……
阅读全文
2024年3月6日
Dubbo Mock 和服务降级是两个不同的概念,但都是用来处理分布式系统中服务调用异常的手段。 Dubbo Mock:Mock 是一种模拟服务的实现方式,当某个服务出现问题或者网络延迟等情况时,消费方可以通过 Mock 来模拟提供方的服务,返回一个默认的或者自定义的结果,以保证消费方的正常运行。Dubbo 中提供了两种 Mock……
阅读全文
2024年3月6日
集群模块简介 集群,是指同一个服务 被部署在了多个服务器上,每个服务器的任务都相同,能够以较高的性价比,提升系统的 性能、可靠性、灵活性,但同时也要面对 集群中会出现的 负载均衡、容错等问题。dubbo 的集群模块,主要涉及以下几部分内容。 负载均衡策略:dubbo 支持的所有负载均衡策略算法;……
阅读全文
2024年3月6日
项目结构 首先从 GitHub 上 clone 下来 Dubbo 项目,我们根据其中各子项目的项目名,也能大概猜出来各个模块的作用。 dubbo-common 公共逻辑子项目,定义了各子项目中 通用的 组件 和 工具类,如:IO、日志、配置处理等。 dubbo-rpc 分布式协调服务框架的核心,该模块定义了 RPC 相关的组件,包括 服务发布、服务调用代理、远程调用结果、RPC 调用……
阅读全文
2024年3月6日
JDK 的 SPI 思想 SPI,即 Service Provider Interface。在面向对象的设计里面,模块之间推荐基于接口编程,而不是对实现类进行硬编码,这样做也是为了模块设计的可插拔原则。 比较典型的应用,如 JDBC,Java 定义了一套 JDBC 的接口,但是 Java 本身并不提供对 JDBC 的实现类,而是开发者根据项目实际使用的数据库来选……
阅读全文