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.mzph.cn/diannao/8814.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SpringBoot 使用 @RequiredArgsConstructor(onConstructor_ = @Autowired) 报错解决

若使用 RequiredArgsConstructor(onConstructor_ Autowired) 启动报错,或者爆红可以使用以下方法解决 1. 安装或启用 Lombok插件 2. 检查 Lombok 版本 3. 若 onConstructor_ 爆红, 可能是IDEA中文软件包冲突 4. 若以上还是不行,可以添加…

Django和Python版本兼容表

记录一下Python和Django版本的兼容性对照表,如果还在维护老的项目可以作参考: Django 版本Python 版本备注5.1 3.10, 3.11, 3.125.0 3.10, 3.11, 3.12最低要求Python3.104.23.8, 3.9, 3.10, 3.11, 3.12 (从4.2.8开始)4.1 3.8, 3.9, 3.10, 3.11 (…

模方已经安装了3dmax,也装了插件,为什么一直显示没有插件?

答:主要是联动2018版本,然后插件在模方安装时候,会有选项自动安装联动插件,SketchUp(建议版本为2019),3dsMax(建议版本为2018) 模方是一款针对实景三维模型的冗余碎片、…

SpringBoot框架如何接入RocketMQ?

目录 一、SpringBoot框架介绍 二、RocketMQ介绍 三、RocketMQ的应用场景 四、SpringBoot框架如何接入RocketMQ 一、SpringBoot框架介绍 Spring Boot是一个开源的Java框架,它基于Spring框架,旨在简化Java应用程序的开发。Spring Boot通过自动化配置和约定优于配置的原则,大…

AVFilterLink的channels设置

下面这样一条命令 ffmpeg -i /Users/user/video/mp4/output.wav -ac 1 /Users/user/video/mp4/output1.wav 我们会形成下面这样的图 图1 现在有个问题link4的channel怎么设置的? static int pick_format(AVFilterLink *link, AVFilterLink *ref){link->cha…

猫头虎分享已解决Bug || Node.js安装失败Error: unable to connect to https://nodejs.org/猫头虎

猫头虎分享已解决Bug || Node.js安装失败Error: unable to connect to https://nodejs.org/猫头虎 博主猫头虎的技术世界 🌟 欢迎来到猫头虎的博客 — 探索技术的无限可能! 专栏链接: 🔗 精选专栏: 《面试题大全》 — …

数据结构(二)关于空间的使用

数据结构(二)关于空间的使用 要点:解决问题的效率跟空间的利用效率有关 思考:如何空间的利用效率 01 如何空间的利用效率 参考:递归导致的栈溢出 Exception in thread "main" java.lang.StackOverflowE…

11.结构化开发

1.无直接耦合 2.数据耦合 值耦合 3.标记耦合 数据结构耦合 4.控制耦合 逻辑 顺序耦合 5.外部耦合 软件之外的联系 6.公共耦合 指通过一个公共的数据环境 7.内容耦合 一个模块直接用另一个模块的数据 8.偶然内聚 指一个模块的处理没有任何关系 9.逻辑内聚 执行若干个逻辑相似的功…

JVM的垃圾回收

JVM简介 JVM 是 Java Virtual Machine 的简称,意为 Java虚拟机。 虚拟机:是指通过软件模拟的具有完整硬件功能、运行在一个完全隔离的环境中完整计算机系统 1.JVM的内存区域划分 jvm是一个java进程 每一个java进程就是一个jvm实例 一个进程运行过程中 就要从操作系…

VscodeC/C++环境配置

引言 vscode是一款非常好用的编辑器,集成了大量的插件,具有很高的自由度,因此广受大家的喜爱。但是他本身是不带编译器的,因此如果要使用vscode来编译C/C程序的话,我们需要额外安装编译器并且为vscode配上环境。 编译…

一文教会你lambda表达式

引言 在现代编程中,Lambda表达式(也称为匿名函数或闭包)已经成为了一种非常流行的编程范式。它允许我们定义简短、一次性的函数对象,而无需显式地定义它们。在C11及之后的版本中,Lambda表达式得到了官方的支持&#x…

梦幻西游12门派复古怀旧 单机版 安装简单,云盘下载哦

做游戏开发的朋友,可以多参考里面的设计思想,真的不错。 梦幻西游12门派复古怀旧 单机版 安装简单,云盘下载哦 游戏大小: 支持系统:win7、win10 64位 特色:简化安装,非常容易。 重新整盒高…

MLIP-3主动机器学习方法探索

INPUT文件 此文件中包含15个文件,逐个分析他们的功能 Cu_1620.data:LAMMPS的初始文件需要搭配in文件一起使用 README.md:解释文件,解释各个文件的功能以及操作流程 VASP/:文件夹 auto.sh:执行最主要的文件…

Ubuntu下halcon软件的下载安装

由于工作需求,点云配准需要使用halcon进行实现,并且将该功能放入QT界面中 1.下载halcon 进入halcon官网进行下载 官网链接:https://www.mvtec.com/products/halcon/ 注意:要注册登陆之后才能进行下载 接着点击Downloads->H…

MouseBoost PRO mac中文激活版:专业鼠标助手

MouseBoost PRO mac鼠标性能优化软件,以其强大的功能和智能化的操作,助您轻松驾驭鼠标,提高工作效率。 MouseBoost PRO支持自定义快捷键设置,让您轻松实现快速切换应用程序、打开特定文件、调节音量大小等操作。自动识别窗口功能则…

达梦 定义水平分区表

水平分区包括范围分区、哈希分区和列表分区三种。水平分区表的创建需要通过 <PARTITION 子句>指定。 范围&#xff08;RANGE&#xff09;分区&#xff0c;按照分区列的数据范围&#xff0c;确定实际数据存放位置的划分方式。 列表&#xff08;LIST&#xff09;分区&a…

240多道!Go开发岗位面试题合集(含答案)

随着今年互联网寒潮环境的影响&#xff0c;找工作的人也将达到顶峰&#xff0c;今天给大家分享一份《Go开发工程师超高频面试真题》&#xff0c;一共有240多道面试真题&#xff0c;希望能够帮助大家在面试中&#xff0c;少走一些弯路、更快拿到offer&#xff01; 内容展示 GO 基…

Dreamweaver 2021 for Mac 激活版:网页设计工具

在追求卓越的网页设计道路上&#xff0c;Dreamweaver 2021 for Mac无疑是您的梦幻之选。这款专为Mac用户打造的网页设计工具&#xff0c;集强大的功能与出色的用户体验于一身。 Dreamweaver 2021支持多种网页标准和技术&#xff0c;让您能够轻松创建符合现代网页设计的作品。其…

论文精度-Attention Is All You Need

文章目录 论文精读-Transformer(Attention is All You Need)1.Transformer 整体结构2. Transformer 的输入2.1 单词 Embedding2.2 位置 Embedding3. Self-Attention(自注意力机制)3.1 Self-Attention 结构3.2 Q, K, V 的计算3.3 Self-Attention 的输出3.4 Multi-Head Attent…

[Algorithm][BFS][拓扑排序][课程表][课程表Ⅱ][火星词典] + BFS解决拓扑排序原理 详细讲解

目录 0.原理讲解1.有向无环图2.AOV网3.拓扑排序4.实现拓扑排序5.如何建图&#xff1f; 1.课程表1.题目链接2.算法原理详解3.代码实现 2.课程表 II1.题目链接2.算法原理详解3.代码实现 3.火星词典1.题目链接2.算法原理详解3.代码实现 0.原理讲解 1.有向无环图 有向无环图&#…