SpringCloudAlibaba:3.2dubbo的高级特性

本文涉及的产品
传统型负载均衡 CLB,每月750个小时 15LCU
网络型负载均衡 NLB,每月750个小时 15LCU
应用型负载均衡 ALB,每月750个小时 15LCU
简介: SpringCloudAlibaba:3.2dubbo的高级特性

 启动时检查

简介

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

建议

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

配置【默认为true】

@DubboReference(check = false)
 private OrdersService OrdersService;

image.gif

地址缓存

问题

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

回答

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

超时机制

简介

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

优先级讲解

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

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

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

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

配置【服务提供端】

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

image.gif

配置【服务消费端】

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

image.gif

重试机制

简介

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

配置【服务消费者】

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

image.gif

多版本灰度发布

简介

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

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

版本迁移步骤

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

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

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

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

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

image.gif

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

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

image.gif

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

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

image.gif

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

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

image.gif

 

负载均衡

简介

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

Dubbo内置负载均衡策略

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

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

roundrobin:轮询负载均衡

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

配置【服务生产者】

@DubboService(loadbalance = "roundrobin")

image.gif

配置【服务消费者】

@DubboReference(loadbalance = "roundrobin"

image.gif

查看负载均衡配置

编辑器中快速按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;

image.gif

查找容错配置

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

服务降级

服务降级方式

mock=force:return null

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

mock=fail:return null

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

配置【服务消费者】

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

image.gif

服务限流

并发控制【服务生产者】

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

image.gif

连接控制【服务生产者】

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

image.gif


相关实践学习
SLB负载均衡实践
本场景通过使用阿里云负载均衡 SLB 以及对负载均衡 SLB 后端服务器 ECS 的权重进行修改,快速解决服务器响应速度慢的问题
负载均衡入门与产品使用指南
负载均衡(Server Load Balancer)是对多台云服务器进行流量分发的负载均衡服务,可以通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应用系统的可用性。 本课程主要介绍负载均衡的相关技术以及阿里云负载均衡产品的使用方法。
相关文章
|
6月前
|
XML Dubbo Java
【Dubbo3高级特性】「框架与服务」服务的异步调用实践以及开发模式
【Dubbo3高级特性】「框架与服务」服务的异步调用实践以及开发模式
157 0
|
6月前
|
Dubbo Cloud Native 网络协议
【Dubbo3技术专题】「服务架构体系」第一章之Dubbo3新特性要点之RPC协议分析介绍
【Dubbo3技术专题】「服务架构体系」第一章之Dubbo3新特性要点之RPC协议分析介绍
94 1
|
6月前
|
JSON Dubbo Java
微服务框架(二十)Dubbo Spring Boot 生产就绪特性
  此系列文章将会描述Java框架Spring Boot、服务治理框架Dubbo、应用容器引擎Docker,及使用Spring Boot集成Dubbo、Mybatis等开源框架,其中穿插着Spring Boot中日志切面等技术的实现,然后通过gitlab-CI以持续集成为Docker镜像。   本文为Dubbo Spring Boot 生产就绪特性
|
3月前
|
存储 负载均衡 Dubbo
Dubbo阶段性总结及3.0新特性
该文章是对Dubbo技术的一次总结,包括对Dubbo框架的整体架构、服务提供者发布注册原理、SPI机制、服务消费者订阅原理、服务调用原理、线程池模型、负载均衡机制、服务容错机制等内容的回顾,并简要介绍了Dubbo 3.0的新特性。
Dubbo阶段性总结及3.0新特性
|
6月前
|
负载均衡 Dubbo 算法
深入理解Dubbo-2.Dubbo功能之高级特性分析
深入理解Dubbo-2.Dubbo功能之高级特性分析
105 0
|
6月前
|
SpringCloudAlibaba Dubbo 应用服务中间件
SpringCloudAlibaba:3.1dubbo
SpringCloudAlibaba:3.1dubbo
128 2
|
6月前
|
XML Cloud Native Dubbo
【Dubbo3高级特性】「提升系统安全性」手把手教你如何通过令牌进行Dubbo3服务验证及服务鉴权控制实战指南(一)
【Dubbo3高级特性】「提升系统安全性」手把手教你如何通过令牌进行Dubbo3服务验证及服务鉴权控制实战指南
306 1
|
6月前
|
Dubbo Cloud Native 应用服务中间件
【Dubbo3 终极特性】「云原生三中心架构」带你探索 Dubbo3 体系下的配置中心和元数据中心、注册中心的原理及开发实战(中)
【Dubbo3 终极特性】「云原生三中心架构」带你探索 Dubbo3 体系下的配置中心和元数据中心、注册中心的原理及开发实战(中)
191 1
|
6月前
|
XML Dubbo Java
【Dubbo3高级特性】「框架与服务」 Nacos作为注册中心-服务分组及服务分组聚合实现
【Dubbo3高级特性】「框架与服务」 Nacos作为注册中心-服务分组及服务分组聚合实现
272 0
|
6月前
|
Cloud Native Dubbo 应用服务中间件
【Dubbo3高级特性】「微服务云原生架构」带你从零基础认识搭建公司内部服务用户中心体系(实战指南-序章)
【Dubbo3高级特性】「微服务云原生架构」带你从零基础认识搭建公司内部服务用户中心体系(实战指南-序章)
205 0