栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

dubbo高级配置(笔记)

dubbo高级配置(笔记)

一、序列化

  • dubbo 内部已经将序列化和反序列化的过程内部封装了
  • 我们只需要在定义pojo类时实现Serializable接口即可
  • 一般会定义一个公共的pojo模块,让生产者和消费者都依赖该模块。
    public class User implements Serializable {}

    二、 地址缓存

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

    三、 超时与重试

  • 服务消费者在调用服务提供者的时候发生了阻塞、等待的情形,这个时候,服务消费者会一直等待下去。
  • 在某个峰值时刻,大量的请求都在同时请求服务消费者,会造成线程的大量堆积,势必会造成雪崩。
  • dubbo 利用超时机制来解决这个问题,设置一个超时时间,在这个时间段内,无法完成服务访问,则自动断开连接。
  • 使用timeout属性配置超时时间,默认值1000,单位毫秒。(一般在在服务端设置)
  • 通过 retries  属性来设置重试次数。默认为 2 次(一般在在服务端设置)
  • @Service(timeout = 3000,retries = 2)//当前服务3秒超时,重试2次,一共3次
    public class UserServiceImpl implements UserService {}

    四、多版本

  • 灰度发布:当出现新功能时,会让一部分用户先使用新功能,用户反馈没问题时,再将所有用户迁移到新功能。
  • dubbo 中使用version 属性来设置和调用同一个接口的不同版本(消费者和服务端都需要设置)
  •  服务端1:

    @Service(version = "v1.0")
    public class UserServiceImpl implements UserService {}
    
    

    服务端2: 

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

    消费者: 

    @RestController
    @RequestMapping("/user")
    public class UserController {
    
    
        
    
        @Reference(version = "v2.0")//远程注入
        private UserService userService;
    }

    五、负载均衡

    负载均衡策略(4种):(在服务端设置权重,在消费者设置均衡策略)

  • Random :按权重随机,默认值。按权重设置随机概率。
  • RoundRobin :按权重轮询。
  • LeastActive:最少活跃调用数,相同活跃数的随机。
  • ConsistentHash:一致性 Hash,相同参数的请求总是发到同一提供者。
  •  服务端

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

    消费者 

    @RestController
    @RequestMapping("/user")
    public class UserController {
    
        @Reference(loadbalance = "random")//远程注入
        private UserService userService;
    }

    六、集群容错

    集群容错模式:(在消费者设置cluster 属性)

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

    @RestController
    @RequestMapping("/user")
    public class UserController {
    
        @Reference(cluster = "failover")//远程注入
    }

    七、服务降级

    在消费者中设置

     

  • 转载请注明:文章转载自 www.mshxw.com
    本文地址:https://www.mshxw.com/it/747098.html
    我们一直用心在做
    关于我们 文章归档 网站地图 联系我们

    版权所有 (c)2021-2022 MSHXW.COM

    ICP备案号:晋ICP备2021003244-6号