zoukankan      html  css  js  c++  java
  • dubbo基础知识

    Dubbo的SPI机制

    • java spi需要遍历实现所有的实现并实例化,然后我们在循环中才能找到我们需要的实现
    • 配置文件中只是简单的列出了所有的扩展实现,而没有给他们命名。导致在程序中很难去准确的引用它们
    • 不提供类似于Spring的IOC和AOP功能
    • 扩展很难和其他的框架集成,比如扩展里面依赖了一个Spring bean,原生的Java SPI不支持

    基础概念:

    Protocol protocol = ExtensionLoader.getExtensionLoader(Protocol.class).getAdaptiveExtension();

    1.1 扩展点(Extension Point)

      是一个Java的接口。(Protocol)

    1.2 扩展(Extension)

      扩展点的实现类。(DubboProtocol)

    1.3 扩展实例(Extension Instance)

      扩展点实现类的实例。(ExtensionLoader.getExtensionLoader(Protocol.class))

    1.4 扩展自适应实例(Extension Adaptive Instance)

        java动态生成字节码Protocol$Adaptive

    负载均衡:

    1. RandomLoadBalance:随机负载均衡。随机的选择一个。是Dubbo的默认负载均衡策略。
    2. RoundRobinLoadBalance:轮询负载均衡。轮询选择一个。
    3. LeastActiveLoadBalance:最少活跃调用数,相同活跃数的随机。活跃数指调用前后计数差。使慢的 Provider 收到更少请求,因为越慢的 Provider 的调用前后计数差会越大。
    4. ConsistentHashLoadBalance:一致性哈希负载均衡。相同参数的请求总是落在同一台机器上。

    集群容错

      

      failover:重试其它机器

      failfast:快速失败,只发起一次调用,失败立即报错。通常用于非幂等性的写操作,比如新增记录。

    协议:

      dubbo:

    • 连接个数:单连接
    • 连接方式:长连接
    • 传输协议:TCP
    • 传输方式:NIO 异步传输
    • 序列化:Hessian 二进制序列化
    • 适用范围:传入传出参数数据包较小(建议小于100K),消费者比提供者个数多,单一消费者无法压满提供者,尽量不要用 dubbo 协议传输大文件或超大字符串。
    • 适用场景:常规远程服务方法调用

      hessian:// 

    • 连接个数:多连接
    • 连接方式:短连接
    • 传输协议:HTTP
    • 传输方式:同步传输
    • 序列化:Hessian二进制序列化
    • 适用范围:传入传出参数数据包较大,提供者比消费者个数多,提供者压力较大,可传文件。
    • 适用场景:页面传输,文件传输,或与原生hessian服务互操作

      http://

    • 连接个数:多连接
    • 连接方式:短连接
    • 传输协议:HTTP
    • 传输方式:同步传输
    • 序列化:表单序列化
    • 适用范围:传入传出参数数据包大小混合,提供者比消费者个数多,可用浏览器查看,可用表单或URL传入参数,暂不支持传文件。
    • 适用场景:需同时给应用程序和浏览器 JS 使用的服务。
  • 相关阅读:
    android handle详解
    android面试详解
    linux网络编程-一个简单的线程池(41)
    linux网络编程-posix条件变量(40)
    如何写一个简单的分页
    jQuery 3 有哪些新东西
    浅析正则表达式模式匹配的 String 方法
    jQuery源码浅析2–奇技淫巧
    前端文本截断
    你会用setTimeout吗
  • 原文地址:https://www.cnblogs.com/faker2014/p/11054483.html
Copyright © 2011-2022 走看看