SpringCloudAlibaba:3.2dubbo的高级特性

启动时检查

简介

Dubbo在启动时检查依赖得服务是否可用,不可用时会抛出异常,阻止Spring初始化完成,以便上线时,能及早发现问题

建议

如果你的Spring容器是懒加载的,或者通过API编程延迟引用服务,请关闭check,否则服务临时不可用时, 会抛出异常,拿到 null 引用,如果 check="false",总是会返回引用,当服务恢复时,能自动连上

配置【默认为true】

 @DubboReference(check = false)
 private OrdersService OrdersService;       

地址缓存

问题

注册中心挂了,服务是否可以正常访问?

回答

因为Dubbo服务消费者在第一次调用时,会将服务提供方地址缓存到本地,以后在调用则不会访问注册中心。 服务提供者地址发生变化时,注册中心会通服务消费者。

超时机制

简介

设置一个超时时间,在这个时间段内,无法完成服务访问,则自动断开连接

优先级讲解

超时机制是针对服务消费端,为什么服务提供端也可以设置超时呢?

1.服务提供端的超时配置是服务消费端的缺省配置,即如果服务提供端设置了超时,服务消费端可以不设置超时时间,简化了配置

2.针对控制的粒度,Dubbo支持了接口级别也支持方法级别,可以根据不同的实际情况精确控制每个方法的超时时间。

3.优先级:@DubboReference【服务消费端】>@DubboService【服务提供端】

配置【服务提供端】

 @DubboService(timeout = 3000)
 public class PaymentServiceImpl implements IPaymentService

配置【服务消费端】

 @DubboReference(timeout = 2000)// 远程注入
 private OrderService OrderService;          

重试机制

简介

Dubbo在调用服务不成功时,进行重试

配置【服务消费者】

//Dubbo在调用服务不成功时,默认会重试2次。
 @DubboReference(timeout = 3000,retries = 2)

多版本灰度发布

简介

灰度发布:当出现新功能时,会让一部分用户先使用新功能,用户反馈没问题时,再将所有用户迁移到新功能

Dubbo提供多版本的配置,方便我们做服务的灰度发布,或者是解决不兼容的问题

版本迁移步骤

1.在低压力时间段,先升级一半提供者为新版本

2.再将所有消费者升级为新版本

3.然后将剩下的一半提供者升级为新版本

配置【老版本服务提供者配置】

@DubboService(version = "1.0.0")
public class PaymentServiceImpl implements IPaymentService

配置【新版本服务提供者配置】

@DubboService(version = "2.0.0")
public class PaymentServiceImpl implements IPaymentService

配置【新版本服务消费者配置】

 @DubboReference(version = "1.0.0")
 private IPaymentService iPaymentService;
     

如果不需要区分版本,可以按照以下的方式配置

@DubboReference(version = "*")
private IOrderService iOrderService;// 订单服务    

 

负载均衡

简介

Dubbo是一个分布式服务框架,如何从多个服务提供者组成的集群中挑选出一个进行调用,就涉及到一个负载均衡的策略

Dubbo内置负载均衡策略

random:随机负载均衡,随机选择一个【默认负载均衡】

leastactive:最少活跃调用数,相同活跃数的随机

roundrobin:轮询负载均衡

consistenthash:一致性哈希负载均衡,相同参数的请求总是落在同一台机器上

配置【服务生产者】

@DubboService(loadbalance = "roundrobin")

配置【服务消费者】

@DubboReference(loadbalance = "roundrobin"

查看负载均衡配置

编辑器中快速按2下Shift,搜索Balance

集群容错

简介

Dubbo框架为服务集群容错提供了一系列好的解决方案,在此称为Dubbo服务集群容错模式

容错模式

Failover Cluster:失败重试。默认值。当出现失败,重试其它服务器,默认重试2次,使用retries配置。一般用于读操作

Failfast Cluster : 快速失败,只发起一次调用,失败立即报错。通常用于写操作。

Failsafe Cluster : 失败安全,出现异常时,直接忽略。返回一个空结果。日志不重要操作。 Failback Cluster : 失败自动恢复,后台记录失败请求,定时重发。非常重要的操作。

Forking Cluster:并行调用多个服务器,只要有一个成功即返回。

Broadcast Cluster:广播调用所有提供者,逐个调用,任意一台报错则报错。 同步要求高的可以使用这个模式。

配置【服务消费者】

@DubboReference(cluster = "failover")
private OrderService orderService;    

查找容错配置

编辑器快速按2下Shift,搜索Cluster

服务降级

服务降级方式

mock=force:return null

表示消费方对该服务的方法调用都直接返回null值,不发起远程调用。用来屏蔽不重要服务不可用时对调用方的影响。

mock=fail:return null

表示消费方对该服务的方法调用在失败后,再返回null值,不抛异常。用来容忍不重要服务不稳定时对调用方的影响。

配置【服务消费者】

@DubboReference(mock = "force:return null")

服务限流

并发控制【服务生产者】

//服务端并发执行(或占用线程池线程数)不能超过10个
@DubboService(executes = 10)

连接控制【服务生产者】

  //占用连接的请求的数不能超过10个
  @DubboService(actives= 10)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/606104.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

前端双语实现方案(VUE版)

一、封装一个lib包 结构如下 en.js use strict;exports.__esModule true; exports.default {sp: {input: {amountError: Incorrect amount format},table: {total: Total:,selected: Selected:,tableNoData: No data,tableNoDataSubtext: Tip: Suggest to recheck your fil…

LeetCode 110. 平衡二叉树

LeetCode 110. 平衡二叉树 1、题目 题目链接:110. 平衡二叉树 给定一个二叉树,判断它是否是 平衡二叉树 示例 1: 输入:root [3,9,20,null,null,15,7] 输出:true示例 2: 输入:root [1,2…

AI写作助手:推荐顶级论文写作工具

ChatGPT生成内容需要注意的问题 永远不要直接提交未经修改的AI文本使用工具如Quillbot、Versabot(支持中文论文生成和润色)、Paraphrasing Tool和Jasper来改变文本的措辞亲自修改短语、句子和文本的其他元素提示ChatGPT重新写自己的文本,并通过多个草稿进行修订 Ch…

如何把多个文件(夹)向上移动1层(或多层)(在批量复制前或后进行)

首先,需要用到的这个工具: 度娘网盘 提取码:qwu2 蓝奏云 提取码:2r1z 假定情况是,我要把下图里的4个文件夹内部的全部文件,合并到04的当前位置来(4个文件夹里面各有5个兔兔的图片&#xff09…

【吃透Java手写】2-Spring(下)-AOP-事务及传播原理

【吃透Java手写】Spring(下)AOP-事务及传播原理 6 AOP模拟实现6.1 AOP工作流程6.2 定义dao接口与实现类6.3 初始化后逻辑6.4 原生Spring的方法6.4.1 实现类6.4.2 定义通知类,定义切入点表达式、配置切面6.4.3 在配置类中进行Spring注解包扫描…

华为ensp中BFD和OSPF联动(原理及配置命令)

作者主页:点击! ENSP专栏:点击! 创作时间:2024年5月6日20点26分 BFD通常指的是双向转发检测。BFD是一个旨在快速检测通信链路故障的网络协议,提供了低开销、短延迟的链路故障检测机制。它主要用于监测两个…

start.spring.io不支持java8,idea使用阿里云又报错

做项目的时候,我们可以发现,访问https://start.spring.io/ 创建脚手架项目的时候,最低是java 17了 但是对于很多项目来说,还是在用java8,这该怎么办呢? 值得庆幸的是,阿里云也同样有相同功能的…

VASP_AIMD+VASPKIT计算含温力学性质

材料的力学性质一直是DFT计算的重要方向,笔者在以往已有针对于静态结构的力学性质诸如弹性常数的相关计算,同时可通过VASPKIT借助相关方程导出力学性能。 bashvaspvaspkit能量应变计算弹性常数 vaspkit计算弹性常数的对称性指定 vaspkit计算弹性常数脚…

visual studio 2017重命名解决方案或项目名称

1.解决方案->右键->重命名->新的名字 2.项目->右键->重命名->新的名字 3.修改程序集和命名空间名称 项目->右键->属性->修改程序集名称和命名空间名称 4.搜索换名 Ctrl-F->输入旧名称->搜索->将所有旧名称改为新名称(注意是整…

C++向函数传递对象

C语言中,对象作为函数的参数和返回值的传递方式有 3 种:值传递、指针传递和引用传递。 1. 对象作为函数参数 把实参对象的值复制给形参对象,这种传递是单向的,只从实参到形参。因此,函数对形参值做的改变不会影响到实…

使用Docker安装Whistle Web Debugging Proxy

大家好,继续给大家分享如何使用docker来安装Whistle Web Debugging Proxy,关于Whistle Web Debugging Proxy的介绍和使用,大家可以参考下面文章,希望本文能够给大家的工作带来一定帮助。 Whistle Web Debugging Proxy介绍及使用 …

《二十一》QT QML编程基础

QML概述 QML(Qt Meta-Object Language)是一种声明性语言,它被用于描述Qt框架中用户界面的结构和行为。QML提供了一种简洁、灵活的方式来创建动态和交互式的界面。 QML基于JavaScript语法,通过使用QML类型和属性来定义界面的元素…

Codeforces Round 941 (Div. 2)(A,B,C,D,E)

比赛链接 这场难度不高,基本没考算法,全是思维题。B是推结论,C是博弈,D是构造,需要对二进制有一定理解,E是思维题,2300分的暴力和模拟。 A. Card Exchange 题意: 您有 n n n 张牌…

【思科战报】2024.5月最新CCNP考试战报

【福利】思科CCNP考试介绍(附CCNP题库下载)-CSDN博客思科 CCNP(企业基础架构),需考 2 门https://blog.csdn.net/XMWS_IT/article/details/138609138?spm1001.2014.3001.5501【福利】思科CCNP考试介绍(附CC…

CSS-盒子模型

盒子模型的重要组成部分 内容区域content:width , height 内边距:内边框和内容区域的距离Padding边框线:Border外边距:Margin Border (边框线) 属性:Border 属性值:边框线粗细px 线条样式 颜色(不区分…

从零开始的软件测试学习之旅(八)jmeter线程组参数化及函数学习

jmeter线程组参数化及函数学习 Jmeter基础基本使用流程组件与元件 线程组线程的执行方式Jmeter组件执行顺序 常见属性设置查看结果数的作用域举例 Jmeter参数化实现方式1.用户定义参数2.用户参数3.函数4.csv数据文件设置 每日复习 Jmeter基础 基本使用流程 启动项目案例 启动…

华为OD机试【全量和已占用字符集】(java)(100分)

1、题目描述 给定两个字符集合,一个是全量字符集,一个是已占用字符集,已占用字符集中的字符不能再使用。 2、输入描述 输入一个字符串 一定包含,前为全量字符集 后的为已占用字符集;已占用字符集中的字符一定是全量…

Run ‘conda init‘ before ‘conda activate‘

使用conda activate 虚拟环境名称的时候提示:Run conda init before conda activate 解决办法: 首先需要确保是管理员身份运行这个cmd窗口。 然后,现在执行一下:conda init 命令,最后再执行:conda activate…

vue3+ts+vant选择器选中文字效果

所需要的样式: 选中某个选项后文字有放大和改变颜色的效果 主要就是在van-picker上加class, 给对应的style样式即可 <van-pickerclass"custom-picker":title"pickerData.titleText"v-if"pickerData.ispicker"show-toolbar:columns"col…

【Java orm 框架比较】九 新增wood框架对比

【Java orm 框架比较】九 新增wood框架对比 本次新增wood 框架测试 测试数据存储、分页查询&#xff0c;文档及框架比较稳定半天时间加入测试使用 迁移到&#xff08;https://gitee.com/wujiawei1207537021/spring-orm-integration-compare&#xff09; orm框架使用性能比较…
最新文章