1. 前言 本文基于Dubbo2.6.x版本,中文注释版源码已上传github:xiaoguyu/dubbo 源码分析均基于官方Demo,路径:dubbo/dubbo-demo 如果没有看过之前Dubbo系列的文章,建议先去看看。因为服务调用过程涉及范围较广,需要那些前置知识。 Dubbo 服务调用过程比较复杂,包含众多步骤,比如发送请求、编解码、服务降级、过滤器链处理、序列化、线程派发以及响应请求等步骤。限于篇幅原因,本篇文章无法对所有的步骤一一进行分析。后续挖坑再说吧。本篇文章将会重点分析请求的发送与接收、线程…

2022年8月31日 0条评论 134点热度 0人点赞 王谷雨 阅读全文

前言 本文基于Dubbo2.6.x版本,中文注释版源码已上传github:xiaoguyu/dubbo 负载均衡,英文名称为Load Balance,其含义就是指将负载(工作任务)进行平衡、分摊到多个操作单元上进行运行。 例如:在Dubbo中,同一个服务有多个服务提供者,每个服务提供者所在的机器性能不一致。如果流量均匀分摊,则会导致有些服务提供者负载过高,有些则轻轻松松,导致资源浪费。负载均衡就解决这个问题。 源码 LoadBalance就是负载均衡的接口,咱们先看看类图 Dubbo提供了4中内置的负载均衡实现: …

2022年8月16日 0条评论 132点热度 0人点赞 王谷雨 阅读全文

前言 本文基于Dubbo2.6.x版本,中文注释版源码已上传github:xiaoguyu/dubbo 集群(cluster)就是一组计算机,它们作为一个总体向用户提供一组网络资源。这些单个的计算机系统就是集群的节点(node)。 在Dubbo中,为了避免单点故障,同一个服务允许有多个服务提供者,也允许同时连接多个注册中心。那么,服务消费者引用服务时,该请求哪个注册中心的服务提供者以及调用失败之后该如何处理呢?这些就是Dubbo集群所做的事。 集群容错 在分析集群源码之前,先看看集群容错的所有组件,下图是官方文档的…

2022年8月10日 0条评论 207点热度 0人点赞 王谷雨 阅读全文

前言 本文基于Dubbo2.6.x版本,中文注释版源码已上传github:xiaoguyu/dubbo 今天,来聊点短的,服务路由Router,本文讲的是路由的调用路径,不讲路由的规则解析。想了解规则解析的可以去官方文档:服务路由 Dubbo的路由,就是根据规则,规定了哪些服务消费者可调用哪些服务提供者。 怎么用 我们可以在服务治理控制台Dubbo-Admin写入路由规则。 安装Dubbo-Admin 我是使用docker方式安装的,命令如下: docker run -d \ -p 9001:8080 \ -e a…

2022年8月3日 0条评论 875点热度 0人点赞 王谷雨 阅读全文

前言 本文基于Dubbo2.6.x版本,中文注释版源码已上传github:xiaoguyu/dubbo 今天,来聊聊Dubbo的服务目录(Directory)。下面是官方文档对服务目录的定义: 服务目录中存储了一些和服务提供者有关的信息,通过服务目录,服务消费者可获取到服务提供者的信息,比如 ip、端口、服务协议等。 服务目录持有Invoker对象集合,Dubbo的服务调用均由Invoker发起。 当服务提供者信息发生变化时(比如某一个服务挂了),服务目录也需要动态调整。 继承体系 服务目录目前内置的实现有两个,分…

2022年7月29日 0条评论 264点热度 0人点赞 王谷雨 阅读全文