dubbo特性用法汇总

一.序列化

  • 用于实现不同机器间传输数据,例如传输java对象
  • dubbo内部已经将序列化和反序列化过程封装了
  • 我们只需要在定义pojo类时实现serializable接口即可,否则用到pojo类时会报错
  • 一般会定义一个公共的pojo模块,让生产者和消费者都依赖该模块

二.地址缓存

  • 问题:注册中心挂了,服务是否可以正常访问
  • 答案:可以,因为dubbo服务消费者在第一次调用时,会将服务提供方地址缓存到本地,以后再调用则不会访问注册中心
  • 当服务提供方地址发生变化时,注册中心会通知服务消费者

三.超时与重试

1.超时机制

  • 服务消费者在调用服务提供者的时候发生了阻塞、等待的情形,这个时候,服务消费者会一直等待下去。
  • 在某个峰值时刻,大量的请求都在同时请求服务消费者,会造成线程的大量堆积,势必会造成雪崩
  • dubbo利用超时机制来解决这个问题,设置一个超时时间,在这个时间段内,无法完成服务访问,则自动断开连接
  • 使用timeout属性配置超时时间,默认值1000,单位毫秒
  • 使用方法
    1.配置服务提供方:在该类的dubbo注解@Service内配置timeout
    2.配置服务调用方:在该类的dubbo注解@Reference内配置timeout
    3.注意:调用方的超时设置能够覆盖提供方的设置
    4.建议:由于提供方比调用方更清楚服务的所需处理时间,因此设置的时间会更为合理,则建议在提供方配置超时时间

2.重试机制

  • 设置了超时时间,在这个时间段内,无法完成服务访问,则自动断开连接。
  • 如果出现网络抖动,例如玩游戏时,突然网断了,很快又连上了,像这种情况,则这一次请求就会失败。
  • Dubbo提供重试机制来避免类似问题的发生。
  • 通过retries属性来设置重试次数。默认为2次。
  • 使用方法
    配置服务提供方:在该类的dubbo注解@Service内配置retries属性值

三.多版本

  • 灰度发布:当出现新功能时,会让一部分用户先使用新功能,用户反馈没问题时,再将所有用户迁移到新功能。例如某款app0.1版本升级到0.2版本,不会一次性提供给所有用户使用,而是先让部分用户进行使用以便测试性能,确保运行良好后,才面向所有用户
  • dubbo中使用version属性来设置和调用同一个接口的不同版本,即先给每个服务设置一个version值,调用方只需要在已经设置的所有version中选择一个version值就能调用不同版本的服务
  • 使用方法
    1.配置服务提供方:在该类的dubbo注解@Service内配置version属性值(字符串),例如v1-0
    2.配置服务调用方:在该类的dubbo注解@Reference内配置version属性值(字符串),同提供方version属性值相同

四.负载均衡

  • 第一种策略Random:按权重随机,默认值。按权重设置随机概率。

    说明:通过设置dubbo注解@Service中的weight属性值,如上图,2号提供者选中概率为0.5,另外两个被选中概率都为0.25
  • 第二种策略RoundRobin:按权重轮询。
    说明:还是以上的图,但执行的顺序是1号,2号,3号,2号…即按权重从小到大,到达权重最大的又从最小的开始继续轮询
  • 第三种策略LeastActive:最少活跃调用数,相同活跃数的随机。
    说明:根据处理各自的最后一次请求所花时间的大小,选择最小的,也就是完成请求最快的提供者
  • 第四种策略ConsistentHash:一致性Hash,相同参数的请求 总是发到同一提供者。
    在这里插入图片描述
    说明:根据地址参数与提供者编号是否对应进行选择,即如果请求参数一直是同一个值,则会一直匹配同样的提供者完成服务

五.集群容错

  • Failover Cluster:失败重试。默认值,当出现失败,重试其它服务器,默认重试2次,使用retries配置。一般用于读操作
  • Failfast Cluster:快速失败,只发起一次调用,失败立即报错。通常用于写操作。
  • Failsafe Cluster:失败安全,出现异常时,直接忽略。返回一个空结果。
  • Failback Cluster:失败自动恢复,后台记录失败请求,定时重发。
  • Forking Cluster:并行调用多个服务器,只要一个成功即返回。
  • Broadcast Cluster:广播调用所有提供者,逐个调用,任意 一台报错则报错。

六.服务降级

  • mock=force:return null表示消费方对该服务的方法调用都直接返回null值,不发起远程调用。用来屏蔽不重要服务不可用时对调用方的影响。
  • mock—fail:return null表示消费方对该服务的方法调用在失败后,再返回null值,不抛异常。用来容忍不重要服务不稳定时对调用方的影响。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值