DUBBO原理20231219

本文详细探讨了Dubbo的核心原理,包括使用Zookeeper作为注册中心,服务提供者和消费者的角色,以及服务的重试、集群容错、负载均衡策略。同时,讲解了服务的线性派发模型,服务提供者和消费者的限流参数配置,以及各种负载均衡算法如随机、最小活跃数和轮询策略。此外,还涵盖了超时和重试机制,指出Dubbo的超时实际上是客户端控制的。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

注册中心上保存四种类型的数据:

providers: 服务提供者目录,记录着服务提供者的ip、端口等信息。
consumers: 服务消费者目录,记录服务消费者的元数据信息,服务提供者并不会用到服务消费者的信息,这里要记录消费者的信息,是给服务治理中心(dubbo-admin)使用的。
routers: 用于消费者路由策略元数据信息。
configurators:用于服务者动态配置URL元数据信息。
在这里插入图片描述

以zookeeper作为注册中心


持久和临时节点
持久节点:节点会一直存在,就算建立该节点的会话断线,节点也会存在。
临时节点:会话存在,节点就存在;会话断开,节点就会被删除。

Watch机制
zookeeper节点发生变化(Znode本身的增加,删除,修改,以及子Znode的变化),zookeeper注册中心可以通过Watch机制通知到客户端。 

服务消费者的服务列表
每一个服务消费者都会在本地维持一张服务提供者的列表,在消费者第一次启动的时候,回去注册中心拉取一次完整的服务列表,然后通过watch机制监听routers、configuration、provider这三个目录的变化。如果新增了服务提供者,或者某一个提供者下线了,消费者就会收到通知,去更新自己的服务列表。

服务提供者的注册操作
当启动一个新的服务,会把服务的ip和端口注册provider下,作为一个临时节点,假如服务提供者宕机,由于是临时节点,所以节点会被删除,这样就可以触发watch机制,服务提供者启动后会监听configuration。

DUBBO控制台搭建

下载源码,打包部署! 

服务重试

服务重试 | Apache Dubbo

集群容错

集群容错 | Apache Dubbo

负载均衡

负载均衡 | Apache Dubbo

有多种级别的配置:服务端服务/方法级别、客户端服务/方法级别

多个配置是有覆盖关系的, 配置的优先级是:

    1. 客户端方法级别配置;(最优先)
    2. 客户端接口级别配置;
    3. 服务端方法级别配置;
    4. 服务端接口级别配置;(最后使用)

    <!-- 服务端服务级别 -->
    <dubbo:service interface="..." loadbalance="roundrobin" />
    <!-- 客户端服务级别 -->
    <dubbo:reference interface="..." loadbalance="roundrobin" />
    <!-- 服务端方法级别 -->
    <dubbo:service interface="...">
        <dubbo:method name="hello" loadbalance="roundrobin"/>
    </dubbo:service>
    <!-- 客户端方法级别 -->
    <dubbo:reference interface="...">
        <dubbo:method name="hello" loadbalance="roundrobin"/>
    </dubbo:reference>

 虽说以上配置有全封闭服务端配置的,有针对客户端配置的,但是,真正使负载均衡起作用的是,客户端在发起调用的时候,使用相应负载均衡算法进行选择调用。(服务端不可能有这能力)

 另外,控制台可以设置负载均衡!!!

 Dubbo中,先通过路由,从多个 Provider 中按照路由规则,选出一个子集。再根据负载均衡从子集中选出一个 Provider 进行本次调用。如果调用失败了,根据集群容错策略,进行重试或定时重发或快速失败等。 可以看到Dubbo中的路由,负载均衡和集群容错发生在一次RPC调用的不同阶段。最先是路由,然后是负载均衡,最后是集群容错。

直连提供者

直连提供者

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值