顺德网站制作案例机构,视频网站采集规则,wordpress调用幻灯片,学习做网页的网站Dubbo 集群容错
假设我们运营一个大型的电子商务网站#xff0c;它有大量的用户在任何时间都在进行购物、浏览商品、添加到购物车、结账等操作。为了处理这种高流量和高并发性的情况#xff0c;我们可能已经设置了一个由多个服务器组成的计算机集群。
在这种情况下#xf…Dubbo 集群容错
假设我们运营一个大型的电子商务网站它有大量的用户在任何时间都在进行购物、浏览商品、添加到购物车、结账等操作。为了处理这种高流量和高并发性的情况我们可能已经设置了一个由多个服务器组成的计算机集群。
在这种情况下集群容错就显得非常重要。
集群容错是一种技术其目的是在集群中的一个或多个节点发生故障时保证系统整体的持续运行。这是通过故障检测、备份和恢复机制来实现的。
现在让我们看看在电商网站这个场景中如何具体应用集群容错。
故障检测集群中的每个节点都会定期向其他节点发送“心跳”信号以表示它们正在正常运行。如果一个节点停止发送心跳那么其他节点会认为它已经发生故障。备份和恢复集群中的数据通常会在多个节点上进行备份。这样即使一个节点发生故障数据也不会丢失。同时一旦检测到一个节点发生故障其他节点可以立即接管它的任务保证用户不会感知到服务中断。
例如假设一个用户正在结账购物车中的商品而负责处理这个请求的服务器突然发生故障。由于集群容错的存在这个请求可以立即被另一个服务器接管用户可能只会感到稍微的延迟但不会出现购物失败的情况。
通过以上的方式集群容错确保了我们的电子商务网站在面对单个或多个服务器故障时仍能提供稳定、连续的服务给用户这对于保证用户体验和商业收入来说是至关重要的。
Dubbo 提供了完整的微服务治理方案包括之前文章提到的注册中心、负载均衡和今天分享的集群容错等。
集群容错是 Dubbo 中非常重要的组件之一它能够保证当某个服务节点发生故障或者网络出现问题时Dubbo 能够自动切换到健康的节点保证服务稳定。
1、FailOver Cluster
Failover Cluster 是 Dubbo 的一种默认集群容错策略它会在服务提供者节点出现错误时自动切换到另一个可用节点上。当某个节点发生故障时Dubbo会自动尝试向其他节点发起请求直到找到一个可用的节点为止。如果所有的节点均不可用Dubbo将会抛出异常告知消费者该服务不可用。
Failover Cluster 有两种启动机制
1、在消费者端配置 Failover Cluster 当消费者需要调用服务时Dubbo 会自动调用 Failover Cluster来保证服务的可用性和稳定性。
2、在注册中心配置 Failover Cluster 这种方式一般用于服务端当服务端节点发生故障时Dubbo 会通过注册中心通知消费者端让消费者端自动切换到另一个可用节点上。
2、Failfast Cluster
Failfast Cluster 是 Dubbo 的一种快速失败集群容错策略
当服务提供者节点发生异常时Dubbo会立即抛出异常告知消费者该服务不可用。
这种集群容错机制虽然迅速但是它容易造成雪崩效应。因此在真正的生产环境中不建议采用 Failfast Cluster。
3、Failsafe Cluster
Failsafe Cluster 是 Dubbo 的一种安全失败集群容错策略
当服务提供者节点发生异常时Failsafe Cluster 会忽略此次调用不会立即抛出异常。而是会将异常信息存储起来等待下一次调用时重新尝试调用直到调用成功或者超时为止。
4、Failback Cluster
Failback Cluster 是 Dubbo 的一种自动恢复集群容错策略
当服务提供者节点发生异常时Failback Cluster 会自动把请求缓存下来直到节点恢复正常后再重新发起请求。
这种集群容错机制虽然比较稳定但是它需要占用一定的内存因此在大规模的应用中建议使用 Failover Cluster。
5、选择
Failover Cluster
失败自动切换当出现失败重试其它服务器。通常用于读操作但重试会带来更长延迟。可通过 retries2 来设置重试次数(不含第一次)。
Failfast Cluster
快速失败只发起一次调用失败立即报错。通常用于非幂等性的写操作比如新增记录。
Failsafe Cluster
失败安全出现异常时直接忽略。通常用于写入审计日志等操作。
Failback Cluster
失败自动恢复后台记录失败请求定时重发。通常用于消息通知操作。
Forking Cluster
并行调用多个服务器只要一个成功即返回。通常用于实时性要求较高的读操作但需要浪费更多服务资源。可通过 forks2 来设置最大并行数。
Broadcast Cluster
广播调用所有提供者逐个调用任意一台报错则报错。通常用于通知所有提供者更新缓存或日志等本地资源信息。
现在广播调用中可以通过 broadcast.fail.percent 配置节点调用失败的比例当达到这个比例后BroadcastClusterInvoker 将不再调用其他节点直接抛出异常。 broadcast.fail.percent 取值在 0100 范围内。默认情况下当全部调用失败后才会抛出异常。 broadcast.fail.percent 只是控制的当失败后是否继续调用其他节点并不改变结果(任意一台报错则报错)。broadcast.fail.percent 参数 在 dubbo2.7.10 及以上版本生效。
Broadcast Cluster 配置 broadcast.fail.percent。
broadcast.fail.percent20 代表了当 20% 的节点调用失败就抛出异常不再调用其他节点。
reference(cluster broadcast, parameters {broadcast.fail.percent, 20})Available Cluster
调用目前可用的实例只调用一个如果当前没有可用的实例则抛出异常。通常用于不需要负载均衡的场景。
Mergeable Cluster
将集群中的调用结果聚合起来返回结果通常和group一起配合使用。通过分组对结果进行聚合并返回聚合后的结果比如菜单服务用group区分同一接口的多种实现现在消费方需从每种group中调用一次并返回结果对结果进行合并之后返回这样就可以实现聚合菜单项。
ZoneAware Cluster
多注册中心订阅的场景注册中心集群间的负载均衡。对于多注册中心间的选址策略有如下四种
指定优先级preferredtrue注册中心的地址将被优先选择
dubbo:registry addresszookeeper://127.0.0.1:2181 preferredtrue /同中心优先检查当前请求所属的区域优先选择具有相同区域的注册中心
dubbo:registry addresszookeeper://127.0.0.1:2181 zonebeijing /权重轮询根据每个注册中心的权重分配流量
dubbo:registry idbeijing addresszookeeper://127.0.0.1:2181 weight100 /dubbo:registry idshanghai addresszookeeper://127.0.0.1:2182 weight10 /缺省值选择一个可用的注册中心
集群模式示例
按照以下示例在服务提供方和消费方配置集群模式
dubbo:service clusterfailsafe /或
dubbo:reference clusterfailsafe /