Spud's log

9. Dubbo3 服务调用源码分析

服务调用过程 参考链接:dubbo2.6源码分析 1. 简介 在前面的文章中,我们分析了 Dubbo SPI、服务导出与引入、以及集群容错方面的代码。经过前文的铺垫,本篇文章我们终于可以分析服务调用过程了。Dubbo 服务调用过程比较复杂,包含众多步骤,比如发送请求、编解码、服务降级、过滤器链处理、序列化、线程派发以及响应请求等步骤。限于篇幅原因,本篇文章无法对所有的步骤一一进...

8. Dubbo3 服务引用源码分析

服务引用 参考链接:dubbo2.6源码分析 1. 简介 上一篇文章详细分析了服务导出的过程,本篇文章我们趁热打铁,继续分析服务引用过程。 在 Dubbo 中,我们可以通过两种方式引用远程服务。第一种是使用服务直连的方式引用服务,第二种方式是基于注册中心进行引用。服务直连的方式仅适合在调试或测试服务的场景下使用,不适合在线上环境使用。因此,本文我将重点分析通过注册中心引用服务...

7. Dubbo3 服务导出源码分析

服务导出 参考链接:dubbo2.6源码分析 简介 当我们在应用中使用@DubboService或XML配置声明一个服务时,Dubbo框架究竟做了什么?服务是如何被暴露给其他应用调用的?今天,我们将从源码角度一探究竟,理解Dubbo 3服务导出的完整流程。 与Dubbo 2.6相比,Dubbo 3已将事件传播机制从Spring容器依赖转向框架自身实现,提升了灵活性与扩展性。这...

6. Dubbo3 负载均衡源码分析

负载均衡 参考链接:dubbo2.6源码分析 1.简介 LoadBalance 中文意思为负载均衡,它的职责是将网络请求,或者其他形式的负载“均摊”到不同的机器上。避免集群中部分服务器压力过大,而另一些服务器比较空闲的情况。通过负载均衡,可以让每台服务器获取到适合自己处理能力的负载。在为高负载服务器分流的同时,还可以避免资源浪费,一举两得。负载均衡可分为软件负载均衡和硬件负载均...

5. Dubbo3 集群源码分析

集群 参考链接:dubbo2.6源码分析 1. 集群模块概述 在分布式系统中,为了保证高可用性,同一服务通常会部署多个实例。对于服务消费者而言,如何从这些实例中选择一个进行调用,以及如何处理调用失败的情况,是需要特别关注的问题。Dubbo的集群模块正是为解决这些问题而设计的。 集群模块的核心职责包括: 将多个服务提供者合并为一个虚拟的服务提供点 在调用失败时,根据配...

4. Dubbo 服务路由源码分析

Dubbo 服务路由机制详解 参考链接:dubbo2.6源码分析, dubbo官方文档-路由机制 1. 服务路由概述 在上一篇文章中,我们分析了集群容错的第一部分 — 服务目录 Directory。服务目录在刷新 Invoker 列表的过程中,会通过 Router 进行服务路由,筛选出符合路由规则的服务提供者。本文将深入分析 Dubbo 服务路由的实现原理和源码。 1.1 什...

2. SPI 自适应拓展

SPI 自适应拓展 参考链接:dubbo2.6源码分析 1.原理 在 Dubbo 中,很多拓展都是通过 SPI 机制进行加载的,比如 Protocol、Cluster、LoadBalance 等。有时,有些拓展并不想在框架启动阶段被加载,而是希望在拓展方法被调用时,根据运行时参数进行加载。这听起来有些矛盾。拓展未被加载,那么拓展方法就无法被调用(静态方法除外)。拓展方法未被调用...

1. Dubbo SPI 源码解析

Dubbo SPI 源码解析 参考链接:dubbo2.6源码分析 1. SPI 机制概述 SPI (Service Provider Interface) 是一种服务发现机制,允许应用在运行时动态地发现和加载实现类。SPI 的核心思想是将接口实现类的全限定名配置在特定文件中,通过服务加载器读取这些配置文件,从而加载并实例化相应的实现类。这种机制使得框架可以实现更好的扩展性和灵活...