dubbo

81 阅读3分钟
  • 分布式事务
    • seata
      • AT
      • TCC
      • SAGA
      • XA
    • 分组聚合
      • 消费方从每个group中调用一次并返回结果,对结果进行合并
    • 服务版本
      • version
    • 服务分组
      • group
    • 启动时检查
      • check = false/true
    • 集群容错
      • failover cluster
        • 失败则 立即 自动切换重试
        • 重试次数retries = 2
        • 适用于 场景
      • failfast cluster
        • 只调用一次,失败则立即报错
        • 适用于非幂等性的 操作
      • failsave cluster
        • 只调用一次,失败则忽略,不报错
        • 适用于记录日志等 可丢失写 操作
      • failback cluster
        • 失败则 定时 重试
        • 适用于消息重发
      • forking cluster
        • 并行调用多个节点,只要一个成功立即返回
        • 并行数设置 forks=2
        • 适用于 读实时性高 的场景
      • broadcast cluster
        • 广播调用所有提供者
        • broadcast.fail.percent 设置失败节点的比例,超过就报错,不再继续调用
    • 服务降级
      • sentinel
      • 配置
        • mock = true,同包下编写相应,接口名Mock.java
        • mock = "com.xxx.service.xxxMock"
    • 异步调用
      • CompletableFuture 签名接口
        • CompletableFuture<String> sayHello() 举个例子
      • AsyncContext
      • RpcContext
    • 泛化调用
      • API
        • provider 开启泛化
          • ServiceConfig#setGeneric(true)
          • ServiceConfig#setRef(泛化的接口)
        • consumer
          • ReferenceConfig#setGeneric(true)
          • ReferenceConfig#get().$invoke
    • spring
      • provider
        • 无需设置
      • consumer
        • 接口上属性 generic = true
        • genericService 泛化 bean 使用
    • 调用链路隐式传递参数
      • RpcContext
        • ServerContext
          • 在client 和 Server 端使用,用于从Server 端回传Client使用,Server端写入到ServerContext的参数在调用结束后可以在Client端的ServerContext对象中获取到
        • ClientAttachment
          • 在Client端使用,往ClientAttachment中写入的参数将被传递到Server端
        • ServiceContext
          • 在Dubbo内部使用,用户传递调用链路上的参数信息,如 invoker 对象
    • 直连提供者
      • 在consumer端指定 url,例子: url = "dubbo://localhost:20890"
    • 一致性hash选址负载
      • @DubboReference(loadbalance = "consistenthash")
    • 只订阅不注册
      • <dubbo:registry address= "xxx:9090" register = false>
    • 配置
      • ProverConfig
      • ApplicationConfig
      • RegistryConfig
      • ProtocolConfig
    • 调用触发事件通知
      • 调用服务方法前 可以记录开始事件,调用结束后统计整个调用耗时,发生异常时可以告警或者打印错误日志等
    • 多协议配置
      • <dubbo::service id="hello" interface="xx" version="" protocol="dubbo,hessian">
    • 多注册中心
      • <dubbo::service id="hello" interface="xx" version="" registry="hangzhouRegistry,qingdaoRegistry">
    • 流量治理
      • 级别
        • 服务级别
        • 应用级别
      • dubbo-addmin
        • 条件路由
        • 标签路由
    • 诊断与调优
      • 线程模型
        • 服务端模型
          • ALLDispacther
            • dubbo thread pool
              • 反序列化请求
              • received、connected、disconnected、caught
            • io thread pool
              • send
              • 序列化相应
          • DirectDispatcher
            • dubbo thread pool
            • io thread pool
              • 反序列化请求
              • received、connected、disconnected、caught
              • send
              • 序列化相应
          • MessaeOnlyDispatcher
            • dubbo thread pool
            • io thread pool
          • ExecutionDipatcher
            • dubbo thread pool
              • received
              • 反序列化
            • io thread pool
            • send、connected、disconnected、caught
            • 序列化响应
          • ConnectionOrderedDispatcher
      • 负载均衡
        • 客户端负载均衡
        • 策略
          • RandomLoadBanlance
            • 加权随机
          • RoundRobinLoadBalance
            • 加权轮询
          • LeastActiveLoadBalance
            • 最少活跃优先 + 加权随机
          • ShortestResponseLoadBalance
            • 最短响应 + 加权随机
          • ConsistentHashLoadBalance
            • 一致性hash 确定入参,确定路由到的提供者,适用于有状态请求
        • 调用结果缓存
          • <dubbo:reference interface="xxx.service" cache="lru">
        • 并发控制
          • 客户端并发设置
            • <dubbo:service interface="xxx.service", accepts="10">
          • 服务端并发控制
            • <dubbo:service interface="xxx.service", executes="10">
        • 连接控制
          • 服务端连接控制
            • <dubbo:provider accepts="10">
          • 客户端连接控制
            • <dubbo:reference interface=“” connections="10">
        • 延迟连接
          • 使用场景
            • 延迟建立连接。当有调用发起时,再创建连接
          • 使用方式
            • <dubbo:protocol lazy="true">
        • 粘滞连接
          • 使用场景
            • 粘滞连接用户有状态服务,尽可能的让客户端总是向同一个服务提供者发起调用,除非该提供者挂了,再连另外一台。
            • 粘滞连接会自动开始延迟连接,以减少长连接数。
          • consumer使用方式
            • <dubbo:reference id="" interface="" sticky="true">