Dubbo学习笔记(五)——黑马B站dubbo课程

目录

一、对前面几篇dubbo笔记的补充

二、黑马B站dubbo课程

2.1 分布式系统中相关概念

2.2 dubbo概念和架构

2.3 dubbo快速入门

2.4 dubbo高级特性

2.4.1 dubbo-admin 的安装和使用 

2.4.2 序列化

2.4.3 地址缓存

2.4.4 超时与重试

2.4.5 多版本

2.4.6 负载均衡

2.4.7 集群容错

2.4.8 服务降级


一、对前面几篇dubbo笔记的补充

xml方式搭建dubbo项目可参考:

  1. 官网;
  2. IDEA+Dubbo+Zookeeper+SpringBoot 整合详细教程_zookeeper://127.0.0.1:2181/com.alibaba.dubbo.regis-CSDN博客

这篇也是参照尚硅谷雷丰阳老师课程做的笔记:

微服务 RPC框架Dubbo_github ddd 微服务 rpc-CSDN博客

图灵的dubbo专题,儒猿的源码,回头看看。

Dubbo入门介绍及学习笔记总结-CSDN博客 这篇也是参考的尚硅谷dubbo课程 

Dubbo面试B站视频:

2023年B站Dubbo面试最全攻略,涵盖所有核心技术点,让你面试少走99%的弯路!!_哔哩哔哩_bilibili

最全面Dubbo面试题总结 - 掘金 (juejin.cn)

40 道基础Dubbo 面试题及答案_分布式面试题-CSDN博客

ZooKeeper面试题(总结最全面的面试题!!!)_下对zookeeper描述正确的是( )。①zookeeper可以采用集群化部署,采用奇数台服务器部-CSDN博客

07-分布式中的应用 · 语雀

1.Zookeeper特性与节点数据类型详解_zookeeper节点-CSDN博客

zookeeper_zookeeper zxid-CSDN博客

java - Dubbo 一篇文章就够了:从入门到实战 - 个人文章 - SegmentFault 思否

好好学java 的文章 - SegmentFault 思否

本人面试两个月真实经历:面试了20家大厂之后,发现这样介绍项目经验,显得项目很牛逼! - 好好学java - SegmentFault 思否

二、黑马B站dubbo课程

视频地址:03-相关概念-互联网项目架构目标-目标_哔哩哔哩_bilibili

他人的笔记:【Dubbo】-CSDN博客

以下是我的零星笔记

2.1 分布式系统中相关概念

 

2.2 dubbo概念和架构

2.3 dubbo快速入门

zookeeper在Linux环境下的安装;

先写普通的Sping和SpringMVC整合的项目,然后再进行改造为Dubbo项目。

@DubboService注解:将服务对外发布,将访问的地址(ip、port、url)注册到注册中心; 

@DubboReference注解:远程注入引用的服务

2.4 dubbo高级特性

2.4.1 dubbo-admin 的安装和使用 

2.4.2 序列化

创建模块dubbo-pojo,在该模块中创建实体类(务必实现序列化接口),将该模块引入dubbo-interface模块中。这样的话,dubbo-service模块和dubbo-web模块相当于也就间接依赖了dubbo-pojo模块,因为这两个模块中都已经引入了dubbo-interface模块(依赖具有传递性)。

如果不实现序列号接口就会报错,因为User对象的数据需要通过流在两台机器进行传输。 

2.4.3 地址缓存

2.4.4 超时与重试

  • 超时的配置(默认是1000ms),建议配置在服务提供方一侧,如果Provider和Consumer都配置的话,Provider一侧的超时时间会被覆盖。
  • 重试(retries),默认是2次(不包括第一次)。

2.4.5 多版本

同一个接口比如UserService,一个是旧的实现类UserServiceImpl,类上面的注解中指定版本@DubboService(version="1.0"),一个是新的实现类UserServiceImpl2,类上面的注解中指定版本@DubboService(version="2.0"),然后在消费者一侧引入服务时@DubboReference(version="1.0")动态切换调用哪个版本。

2.4.6 负载均衡

在服务提供方配置权重,当然也可以不配置权重(默认weight是100);这里测试时,一台机器权重没配置是默认的100,一台机器配置权重如下为200;

@DubboService(weight = 200)        //暴露服务
public class UserServiceImpl implements UserService{

然后,在消费方配置负载均衡策略为random,当然也可以不配置,因为默认就是random

    @DubboReference(loadbalance = LoadbalanceRules.RANDOM)
    private UserService userService;

负载均衡策略涉及的类:LoadBalance接口 -> AbstractLoadBalance抽象类 -> 六七种实现类,每一种实现类对应一种负载均衡策略。LoadBalance接口中只提供了一个抽象方法select,它的作用为:select one invoker in list. 即返回消费者真正调用的服务Provider Cluster中的某一个调用程序。几种负载均衡策略在RandomLoadBalance常量接口中进行了维护。

package org.apache.dubbo.rpc.cluster;

import org.apache.dubbo.common.URL;
import org.apache.dubbo.common.extension.Adaptive;
import org.apache.dubbo.common.extension.SPI;
import org.apache.dubbo.rpc.Invocation;
import org.apache.dubbo.rpc.Invoker;
import org.apache.dubbo.rpc.RpcException;
import org.apache.dubbo.rpc.cluster.loadbalance.RandomLoadBalance;

import java.util.List;

/**
 * LoadBalance. (SPI, Singleton, ThreadSafe)
 * <p>
 * <a href="http://en.wikipedia.org/wiki/Load_balancing_(computing)">Load-Balancing</a>
 *
 * @see org.apache.dubbo.rpc.cluster.Cluster#join(Directory)
 */
@SPI(RandomLoadBalance.NAME)
public interface LoadBalance {

    /**
     * select one invoker in list.
     *
     * @param invokers   invokers.
     * @param url        refer url
     * @param invocation invocation.
     * @return selected invoker.
     */
    @Adaptive("loadbalance")
    <T> Invoker<T> select(List<Invoker<T>> invokers, URL url, Invocation invocation) throws RpcException;

}

2.4.7 集群容错

服务提供方Provider集群部署,在服务消费方Consumer端引入服务时进行指定容错策略。集群容错的策略维护在 org.apache.dubbo.common.constants.ClusterRules 接口常量中。

@DubboReference(cluster = ClusterRules.FAIL_OVER) //默认是failover,默认重试两次
private UserService userService;

2.4.8 服务降级

官方提供了两种降级的方法如下: 

//不会发起调用,接收到浏览器url请求后,直接返回null,不报错
@DubboReference(mock="force:return null") //注意:①配置mock时的格式;②return和null之间没有加号(+)
//会发起调用服务提供方,失败时返回才返回null,不报错
@DubboReference(mock="fail:return null")
private UserService userService;

使用场景:

  • 某服务或接口负荷超出最大承载能力范围,需要进行降级应急处理,避免系统崩溃
  • 调用的某非关键服务或接口暂时不可用时,返回模拟数据或空,业务还能继续可用
  • 降级非核心业务的服务或接口,腾出系统资源,尽量保证核心业务的正常运行
  • 某上游基础服务超时或不可用时,执行能快速响应的降级预案,避免服务整体雪崩

当然,以上是低版本2.X版本的官方文档提供的。现在的有点差异,但部分使用时报错,有可能是版本的原因,先不管了吧。请移步官网文档:

服务降级 | Apache Dubbo

限流降级 | Apache Dubbo

限流 & 熔断 | Apache Dubbo

通常,实际项目中,都是结合组件使用:

              

  • 7
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值