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;
}
posted @   给我手牵你走  阅读(59)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示