zoukankan      html  css  js  c++  java
  • Dubbo第二篇



    没有实践的项目,对Dubbo理解还不深入


    1. 启动时检查

    Dubbo 缺省会在启动时检查依赖的服务是否可用,不可用时会抛出异常,阻止 Spring 初始化完成,以便上线时,能及早发现问题


    我们可以关闭检查,比如测试时,有些服务不关心,或者出现了循环依赖,必须有一方先启动

    dubbo.consumer.check=false
    dubbo.reference.check=false
    dubbo.registry.check=false
    




    2. 超时、配置覆盖关系、属性优先级


    2.1 超时

    provider因为网络等原因很长时间才返回,此时造成消费者阻塞,所以可以设置超时来解决,默认1000毫秒

    可在注解内设置timeout

    @Reference(timeout = 5000)
    

    2.2 配置覆盖关系

    • 方法级优先,接口次之,全局配置再次之
    • 级别一样,消费者优先,提供者次之

    2.3 属性优先级

    优先级从高到低:

    • JVM设置的属性
    • XML文件的属性
    • Properties内的属性




    3. 重试次数

    • 调用失败后的重试次数,不包含第一次失败的调用,默认2次,在注解内可用retries= ‘2’ 设置
    • 有些调用是幂等的,所以可以重试、有些非幂等设置为0不重试
    @Reference(retries = 0)
    




    4. 多版本

    当一个接口实现有不兼容升级时,可以用版本号过渡,版本号不同的服务相互间不引用,让一部分调用旧版本,一部分调用新版本


    可在暴露服务接口上添加属性

    @Service(version = "1.0.0")
    @Service(version = "2.0.0")
    
    @Reference(version = "1.0.0")
    




    5. 本地存根

    在进行远程过程调用的时候,我们可能需要先进行参数校验或者本地缓存,那么此时可以利用本地存根了


    5.1 消费者方

    在消费者这边要创建本地存根,而该存根需要一个有参构造

    public class SumServiceStub implements SumService {
    
        // 自己手动添加一个有参构造
        private final SumService sumService;
    
        // 框架会传入远程代理对象
        public SumServiceStub(SumService sumService) {
            this.sumService = sumService;
        }
    
        // 这里可以进行各种调用前置操作
        public int sum(int a, int b) {
            if(a != 0  && b != 0){
                return sumService.sum(a,b);
            }
            return -1;
        }
    }
    

    5.2 提供者方

    提供者只是需要指明消费者存根的全限定类名即可

    @Service(stub = "com.howl.consumer.service.impl.SumserviceStub")	// 指明消费者存根
    @Component
    public class SumServiceImpl implements SumService {
        @Override
        public int sum(int a, int b) {
            return a+b;
        }
    }
    




    6. 高可用

    这里本来都不想写了,因为官方写得很清楚,还详细有实例


    • 注册中心宕机

      • 若之前调用过,则会有本地缓存不影响使用,但不能更新服务信息
      • 或者在@Service(url=“127.0.0.1:20882”)跳过注册中心直连提供者
    • 负载均衡:可在注解,控制台进行配置

      • Random 随机
      • RoundRobin 轮询
      • LeastActive 最少活跃
      • ConsistentHash 一致性哈希
    • 服务降级:服务器有压力时,对某些服务或页面进行处理或不处理,保证核心业务正常

      • 消费者不调用而直接返回空
      • 消费者调用失败而返回空




  • 相关阅读:
    学生管理系统代写
    学生竞赛评价系统
    《划时代51单片机C语言全新教程》前言
    《划时代51单片机C语言全新教程》第三章 开发环境 概览
    校验和
    NBOOT分析-S3C244xInit.s(1)
    《划时代51单片机C语言全新教程》第一章 8051简介 概览
    《划时代51单片机C语言全新教程》第二章 STC89C52RC 处理器 概览
    ARM9中断调试(1)
    NBOOT分析-NBOOT.c(2)
  • 原文地址:https://www.cnblogs.com/Howlet/p/13955124.html
Copyright © 2011-2022 走看看