3.Dubbo高级特性
Dubbo高级特性
1、超时与重试
服务消费者在调用服务提供者的时候发生了阻塞、等待的情形,这个时候,服务消费者会一直等待下去。
在某个峰值时刻,大量的请求都在同时请求服务消费者,会造成线程的大量堆积,势必会造成雪崩。
- dubbo 利用超时机制来解决这个问题(使用timeout属性配置超时时间,默认值1000,单位毫秒)
- 若超时时间较短,当网络波动时请求就会失败,Dubbo通过重试机制避免此类问题的发生
user-consumer模块中添加配置信息
dubbo: registry: address: nacos://127.0.0.1:8848 consumer: timeout: 3000 retries: 0
2.为了保障服务的正常可用,Dubbo 会在启动时检查依赖的服务是否可用,不可用时会抛出异常
在开发时,往往会存在没有提供者的情况。由于启动检查的原因,可能导致开发测试出现问题
可以通过check=false关闭
user-consumer模块中添加配置信息
dubbo: registry: address: nacos://127.0.0.1:8848 consumer: check: false #取消启动检查 retries: 0 #取消重试机制,默认重试俩次
3.灰度发布:当出现新功能时,会让一部分用户先使用新功能,用户反馈没问题时,再将所有用户迁移到新功能。
Dubbo提供了提供者多版本的支持,平滑处理项目功能升级部署
(1)user-provider定义新的服务实现类UserServiceImpl2,指定版本
@DubboService(version = "v2.0.0") public class UserServiceImpl2 implements UserService { //把dao接口自动装配到service实现类上 @Autowired private UserMapper userMapper; ...... }
(2)user-consumer消费者调用时,指定版本调用
@RestController @RequestMapping("/user") public class UserController { @DubboReference(version = "v2.0.0") private UserService userService; ...... }
(3)在集群部署时,Dubbo提供了4种负载均衡策略,帮助消费者找到最优提供者并调用
- Random :按权重随机,默认值。按权重设置随机概率。
- RoundRobin :按权重轮询
- LeastActive:最少活跃调用数,相同活跃数的随机。
- ConsistentHash:一致性 Hash,相同参数的请求总是发到同一提供者。
@RestController @RequestMapping("/user") public class UserController { //引用远程服务 @DubboReference(loadbalance = "roundrobin") private UserService userService; }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律