- 分布式事务
- 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 设置失败节点的比例,超过就报错,不再继续调用
- failover cluster
- 服务降级
- sentinel
- 配置
- mock = true,同包下编写相应,接口名Mock.java
- mock = "com.xxx.service.xxxMock"
- 异步调用
- CompletableFuture 签名接口
- CompletableFuture<String> sayHello() 举个例子
- AsyncContext
- RpcContext
- CompletableFuture 签名接口
- 泛化调用
- API
- provider 开启泛化
- ServiceConfig#setGeneric(true)
- ServiceConfig#setRef(泛化的接口)
- consumer
- ReferenceConfig#setGeneric(true)
- ReferenceConfig#get().$invoke
- provider 开启泛化
- API
- spring
- provider
- 无需设置
- consumer
- 接口上属性 generic = true
- genericService 泛化 bean 使用
- provider
- 调用链路隐式传递参数
- RpcContext
- ServerContext
- 在client 和 Server 端使用,用于从Server 端回传Client使用,Server端写入到ServerContext的参数在调用结束后可以在Client端的ServerContext对象中获取到
- ClientAttachment
- 在Client端使用,往ClientAttachment中写入的参数将被传递到Server端
- ServiceContext
- 在Dubbo内部使用,用户传递调用链路上的参数信息,如 invoker 对象
- ServerContext
- RpcContext
- 直连提供者
- 在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
- 序列化相应
- dubbo thread pool
- 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
- 序列化响应
- dubbo thread pool
- ConnectionOrderedDispatcher
- ALLDispacther
- 服务端模型
- 负载均衡
- 客户端负载均衡
- 策略
- RandomLoadBanlance
- 加权随机
- RoundRobinLoadBalance
- 加权轮询
- LeastActiveLoadBalance
- 最少活跃优先 + 加权随机
- ShortestResponseLoadBalance
- 最短响应 + 加权随机
- ConsistentHashLoadBalance
- 一致性hash 确定入参,确定路由到的提供者,适用于有状态请求
- RandomLoadBanlance
- 调用结果缓存
- <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">
-
- 使用场景
- 线程模型
- seata