Dubbo各项已有扩展点
2021-11-09 17:57:42 0 举报
AI智能生成
dubbo各项已有扩展点
作者其他创作
大纲/内容
启动时处理@DubboService 服务
注册服务
注册到本地服务
暴露到注册中心
服务调用时,根据负载均衡算法,选择一个provider
监控monitor 通过filter 手机各项服务信息
根据通信协议,远程调用接口
根据序列化协议,将参数或返回值序列化
出问题时
根据集群容错配置,处理集群异常
当你的@DubboService 服务发生异常是,根据mock配置对服务进行降级<br>也就是advice after-throwing 操作<br>
当你调用@DubboReference 接口是,使用stub 配置,进行advice around 操作
负载均衡<br>org.apache.dubbo.rpc.cluster.LoadBalance<br>
加权随机 RandomLoadBalance
轮询随机 RoundRobinLoadBalance
最小活跃节点 LeastActiveLoadBalance
分区容错 ConsistentHashLoadBalance
通信协议<br>org.apache.dubbo.rpc.Protocol<br>
dubbo(推荐)
单一TCP长连接和NIO异步通讯<br>适合大并发小数据量的服务调用,以及服务消费者远大于提供者的情况<br>Hessian二进制序列化<br><br>缺点是不适合传送大数据包的服务<br>
rmi
采用JDK标准的rmi协议实现,传输参数和返回参数对象需要实现Serializable接口<br>使用java标准序列化机制,使用阻塞式短连接,传输数据包不限,消费者和提供者个数相当<br>多个短连接,TCP协议传输,同步传输,适用常规的远程服务调用和rmi互操作
rest
基于标准的Java REST API,实现的REST调用支持<br>
http
基于Http表单提交的远程调用协议,使用Spring的HttpInvoke实现<br>对传输数据包不限,传入参数大小混合,提供者个数多于消费者
序列化协议<br>org.apache.dubbo.common.serialize.Serialization<br>
hessian2 默认<br>
kryo 推荐
fst 推荐<br>
protobuf
<br>集群容错<br>org.apache.dubbo.rpc.cluster.Cluster<br>
failover<br>失败自动切换,当出现失败,重试其它服务器。通常用于读操作,但重试会带来更长延迟,retries<br>
failfast<br>快速失败,只发起一次调用,失败立即报错。通常用于非幂等性的写操作,比如新增记录。<br>
failsafe<br>失败安全,出现异常时,直接忽略。通常用于写入审计日志等操作。<br>
failback<br>失败自动恢复,后台记录失败请求,定时重发。通常用于消息通知操作。<br>
Forking<br>并行调用多个服务器,只要一个成功即返回。通常用于实时性要求较高的读操作,但需要浪费更多服务资源。可通过 forks="2" 来设置最大并行数。<br>
Broadcast<br>广播调用所有提供者,逐个调用,任意一台报错则报错。通常用于通知所有提供者更新缓存或日志等本地资源信息。<br>
服务降级
mock
等同于 AOP 中的 after-throwing advice
mock=force:return+null 表示消费方对该服务的方法调用都直接返回 null 值,不发起远程调用。用来屏蔽不重要服务不可用时对调用方的影响。
还可以改为 mock=fail:return+null 表示消费方对该服务的方法调用在失败后,再返回 null 值,不抛异常。用来容忍不重要服务不稳定时对调用方的影响。<br>
服务存根
stub
本地存根的工作方式与 AOP 的 around advice 类似
0 条评论
下一页