发布时间:2024-01-22 19:00
dubbo官方文档:https://dubbo.apache.org/zh/docs/
Failover Cluster:失败重试
失败自动切换:当我们在调用Dubbo服务时出现失败,容错策略会重试其它服务器 。一般用于幂等性操作,可以通过配置retries=\"?\"设置重试次数。
<dubbo:reference>
<dubbo:method name=\"method001\"retries=\"2\"/>
</dubbo:reference>
Failfast Cluster:快速失败
当服务消费方调用服务提供者失败后,立即报错,也就是只调用一次。通常用于非幂等性的写操作。
Failsafe Cluster:安全失败
当服务消费者调用服务出现异常时,直接忽略异常。通常用于写入日志等操作。
Failback Cluster:失败自动恢复
服务消费端调用服务出现异常后,在后台记录失败的请求,并按照一定的策略后期再进行重试。这种模式通常用于消息通知操作。
Forking Cluster:并行调用
当消费方调用一个接口方法后,Dubbo Client 会并行调用多个服务提供者的服务,只要一个成功即返回。这种模式通常用于实时性要求较高的读操作,但需要浪费更多服务资源。如下代码可通过 forks=“?” 来设置最大并行数。
<dubbo:reference id=\"userService\"
interface=\"com.test.UserServiceBo\"group=\"dubbo\"version=\"1.0.0\"cluster=\"forking\">
<dubbo:parameter key=\"forks\"value=\"4\"/>
</dubbo:reference>
Broadcast Cluster:广播调用
循环调用所有Dubbo服务提供者,任意一台报错则报错。
使用场景:通用用于向多个实例通知消息,例如:更新集群中所有应用缓存或日志。
Available Cluster
调用目前可用的实例(只调用一个),如果当前没有可用的实例,则抛出异常。通常用于不需要负载均衡的场景。
Mergeable Cluster
将集群中的调用结果聚合起来返回结果,通常和group一起配合使用。通过分组对结果进行聚合并返回聚合后的结果,比如菜单服务,用group区分同一接口的多种实现,现在消费方需从每种group中调用一次并返回结果,对结果进行合并之后返回,这样就可以实现聚合菜单项。
ZoneAware Cluster
多注册中心订阅的场景,注册中心集群间的负载均衡。
引用参考:https://blog.csdn.net/xiaojin21cen/article/details/79834222
dubbo支持九种协议:
<dubbo:application name=\"world\" />
<dubbo:registry id=\"registry\" address=\"10.20.141.150:9090\" username=\"admin\" password=\"hello1234\" />
<!-- 多协议配置 -->
<dubbo:protocol name=\"dubbo\" port=\"20880\" />
<dubbo:protocol name=\"rmi\" port=\"1099\" />
<!-- 指定使用 dubbo协议 -->
<dubbo:service interface=\"com.alibaba.hello.api.HelloService\" version=\"1.0.0\" ref=\"helloService\" protocol=\"dubbo\" />
<!-- 指定使用 rmi协议 -->
<dubbo:service interface=\"com.alibaba.hello.api.DemoService\" version=\"1.0.0\" ref=\"demoService\" protocol=\"rmi\" />
<!-- 使用多个协议暴露服务 -->
<dubbo:service id=\"helloService\" interface=\"com.alibaba.hello.api.HelloService\" version=\"1.0.0\" protocol=\"dubbo,hessian\" />
</beans>
Dubbo支持的注册中心:
Zookeeper(官方推荐)
Multicast:组播协议
允许将一台主机发送的数据通过网络路由器和交换机复制到多个加入此组播的主机,是一种一对多的通讯方式。每一台服务提供方和服务消费方都可以看作是注册中心的一部分。
Redis
Simple