Dubbo高级特性

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

1 dubbo-admin安装

dubbo- admin

●dubbo-admin管理平台,是图形化的服务管理页面

●从注册中心中获取到所有的提供者 /消费者进行配置管理

●路由规则、动态配置、服务降级、访问控制、权重调整、负载均衡等管理功能

●dubbo- admin是一个前后端分离的项目。前端使用vue,后端使用springboot

●安装dubbo-admin其实就是部署该项目


2 dubbo-admin使用

具体安装参见:安装


3 序列化

1.dubbo 内部已经将序列化和反序列化的过程内部封装了

2.我们只需要在定义pojo类时实现seriali zable接口即可

3.一般会定义一 个公共的pojo模块,让生产者和消费者都依赖该模块。

2020121313563958.png


User对象未实现seriali zable接口


错误信息:


2020121313565991.png


解决办法:

User implements Serializable

4 地址缓存

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


1.可以,因为dubbo服务消费者在第一-次调用时,会将服务提供方地址缓存到本地,以后在调用则不会访问注册中心。

2.当服务提供者地址发生变化时,注册中心会通知服务消费者。

20201213135733877.png


5 超时

20201213135748432.png


服务消费者在调用服务提供者的时候发生了阻塞、等待的情形,这个时候,服务消费者会直等待下去。

在某个峰值时刻,大量的请求都在同时请求服务消费者,会造成线程的大量堆积,势必会造成雪崩。

dubbo利用超时机制来解决这个问题,设置-个超时时间, 在这个时间段内,无法完成服务访问,则自动断开连接。

使用timeout属性配置超时时间,默认值1000,单位毫秒

//timeout 超时时间 单位毫秒  retries 重试次数
@Service(timeout = 3000,retries=0)

6 重试

20201213135801705.png


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

如果出现网络抖动,则这一-次请求就会失败。

Dubbo提供重试机制来避免类似问题的发生。

通过retries属性来设置重试次数。默认为2次

//timeout 超时时间 单位毫秒  retries 重试次数
@Service(timeout = 3000,retries=0)

7 多版本

20201213135901779.png


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


dubbo中使用version属性来设置和调用同一个接口的不同版本


生产者配置


@Service(version="v2.0")
public class UserServiceImp12 implements UserService {...}

消费者配置


@Reference(version = "v2.0")//远程注入
private UserService userService;

8 负载均衡

负载均衡策略(4种) :

**Random:**按权重随机,默认值。按权重设置随机概率。


RoundRobin: 按权重轮询。


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


**ConsistentHash:**一 致性Hash,相同参数的请求总是发到同一提供者。


20201213140204331.png


服务提供者配置


@Service(weight = 100)
public class UserServiceImp12 implements UserService {...}

application.xml 配置parameter key


20201213140224476.png


消费者配置

//@Reference(loadbalance = "roundrobin")
//@Reference(loadbalance = "leastactive")
//@Reference(loadbalance = "consistenthash")
@Reference(loadbalance = "random")//默认 按权重随机
private UserService userService;

9 集群容错

在这里插入图片描述


集群容错模式:

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

**Failfast Cluster 😗*快速失败,发起-次调用,失败立即报错。通常用于写操作。

**Failsafe Cluster:**失败安全,出现异常时,直接忽略。返回一个空结果。

**Failback Cluster:**失败自动恢复,后台记录失败请求,定时重发。

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

Broadcast Cluster: 广播调用所有提供者,逐个调用,任意一台报错则报错。


消费者配置

@Reference(cluster = "failover")//远程注入
private UserService userService;

10 服务降级

服务降级:当服务器压力剧增的情况下,根据实际业务情况及流量,对一些服务和页面有策略的不处理或换种简单的方式处理,从而释放服务器资源以保证核心交易正常运作或高效运作


服务降级方式:

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


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

20201213140251634.png



消费方配置

//远程注入
@Reference(mock =“ force :return null")//不再调用userService的服务
private UserService userService;
相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
目录
相关文章
|
XML Dubbo Java
【Dubbo3高级特性】「框架与服务」服务的异步调用实践以及开发模式
【Dubbo3高级特性】「框架与服务」服务的异步调用实践以及开发模式
394 0
|
Dubbo Cloud Native 网络协议
【Dubbo3技术专题】「服务架构体系」第一章之Dubbo3新特性要点之RPC协议分析介绍
【Dubbo3技术专题】「服务架构体系」第一章之Dubbo3新特性要点之RPC协议分析介绍
362 1
|
JSON Dubbo Java
微服务框架(二十)Dubbo Spring Boot 生产就绪特性
  此系列文章将会描述Java框架Spring Boot、服务治理框架Dubbo、应用容器引擎Docker,及使用Spring Boot集成Dubbo、Mybatis等开源框架,其中穿插着Spring Boot中日志切面等技术的实现,然后通过gitlab-CI以持续集成为Docker镜像。   本文为Dubbo Spring Boot 生产就绪特性
|
11月前
|
SpringCloudAlibaba 负载均衡 Dubbo
【SpringCloud Alibaba系列】Dubbo高级特性篇
本章我们介绍Dubbo的常用高级特性,包括序列化、地址缓存、超时与重试机制、多版本、负载均衡。集群容错、服务降级等。
1599 7
【SpringCloud Alibaba系列】Dubbo高级特性篇
|
负载均衡 Dubbo 算法
深入理解Dubbo-2.Dubbo功能之高级特性分析
深入理解Dubbo-2.Dubbo功能之高级特性分析
209 0
|
存储 负载均衡 Dubbo
Dubbo阶段性总结及3.0新特性
该文章是对Dubbo技术的一次总结,包括对Dubbo框架的整体架构、服务提供者发布注册原理、SPI机制、服务消费者订阅原理、服务调用原理、线程池模型、负载均衡机制、服务容错机制等内容的回顾,并简要介绍了Dubbo 3.0的新特性。
Dubbo阶段性总结及3.0新特性
|
SpringCloudAlibaba 负载均衡 Dubbo
SpringCloudAlibaba:3.2dubbo的高级特性
SpringCloudAlibaba:3.2dubbo的高级特性
154 1
|
XML Cloud Native Dubbo
【Dubbo3高级特性】「提升系统安全性」手把手教你如何通过令牌进行Dubbo3服务验证及服务鉴权控制实战指南(一)
【Dubbo3高级特性】「提升系统安全性」手把手教你如何通过令牌进行Dubbo3服务验证及服务鉴权控制实战指南
822 1
|
Dubbo Cloud Native 应用服务中间件
【Dubbo3 终极特性】「云原生三中心架构」带你探索 Dubbo3 体系下的配置中心和元数据中心、注册中心的原理及开发实战(中)
【Dubbo3 终极特性】「云原生三中心架构」带你探索 Dubbo3 体系下的配置中心和元数据中心、注册中心的原理及开发实战(中)
616 1
|
XML Dubbo Java
【Dubbo3高级特性】「框架与服务」 Nacos作为注册中心-服务分组及服务分组聚合实现
【Dubbo3高级特性】「框架与服务」 Nacos作为注册中心-服务分组及服务分组聚合实现
480 0