当前位置: 首页 > wzjs >正文

公司内部网站建设网站建设公司墨子网络

公司内部网站建设,网站建设公司墨子网络,php和织梦那个做网站好,家用电器销售的网站开发前言 故障转移策略是保障系统高可用性的核心机制,旨在服务实例故障时自动切换流量,避免单点故障引发系统级联崩溃。 核心故障转移策略 故障切换(Failover) 原理:当调用某服务实例失败时,自动切换到其他健…

前言

  • 故障转移策略是保障系统高可用性的核心机制,旨在服务实例故障时自动切换流量,避免单点故障引发系统级联崩溃。

核心故障转移策略

  • 故障切换(Failover)
    • 原理:当调用某服务实例失败时,自动切换到其他健康实例重试。
    • 适用场景:幂等性接口(如查询类服务)。
    • 实现方式:
      • 服务发现(如Nacos、Eureka)动态维护可用实例列表。
      • 客户端负载均衡(如Ribbon、Spring Cloud LoadBalancer)选择备用节点。
  • 快速失败(Failfast)
    • 原理:立即返回错误,避免因重试导致资源阻塞。
    • 适用场景:非幂等操作(如支付扣款)。
    • 实现方式:配置超时时间(如Feign的readTimeout),超时后直接抛出异常。
  • 故障静默(Failsilent)
    • 原理:标记故障节点为“不可用”,暂时停止向其发送请求。
    • 适用场景:频繁超时或宕机的服务。
    • 实现方式:结合熔断器(如Hystrix、Sentinel)实现节点熔断。
  • 并行调用(Forking)
    • 原理:同时向多个服务副本发送请求,取最先响应的结果。
    • 适用场景:对延迟敏感的关键服务(如实时风控)。
    • 实现方式:异步线程池(如CompletableFuture)并发调用。

关键技术实现

  • 服务发现与健康检查
    • 作用:动态感知服务实例状态,剔除故障节点。
    • 工具:Consul、Nacos、Kubernetes的Endpoint Controller。
    • 健康检查方式:
      • 主动探测:定期HTTP/TCP探测。
      • 心跳上报:客户端定时发送心跳包。
  • 熔断器(Circuit Breaker)
    • 原理:统计失败请求比例,触发熔断后直接拒绝流量。
    • 实现:
      • Hystrix:通过@HystrixCommand配置熔断阈值。
      • Sentinel:基于QPS、响应时间动态熔断。
  • 负载均衡策略
    • 策略类型:
      • 轮询(Round Robin):均匀分配请求。
      • 权重(Weighted):根据实例性能分配权重。
      • 最少连接(Least Connections):优先选择负载低的节点。
    • 工具:Ribbon、Spring Cloud Gateway、Nginx。
  • 重试机制(Retry)
    • 配置要点:
      • 重试次数(避免无限重试导致雪崩)。
      • 退避策略(如指数退避,避免集中重试)。
    • 实现:Spring Retry、Resilience4j。
  • 服务降级(Degradation)
    • 策略:
      • 默认返回值:返回缓存数据或静态兜底值。
      • 功能降级:关闭非核心功能(如关闭推荐服务,保留购物车)。
    • 工具:Hystrix Fallback、Sentinel降级规则。

实践理解

package com.xiaohan.service;import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cloud.client.ServiceInstance;
import org.springframework.cloud.client.discovery.DiscoveryClient;
import org.springframework.context.annotation.Bean;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestClientException;
import org.springframework.web.client.RestTemplate;import java.net.URI;
import java.util.List;/*** @program: SpringCloud_Demo* @description: 模拟故障转移策略* @author: 韩小豪* @create: 2025-01-04 14:40**//*** 故障转移策略:通过循环+try-catch语句块实现* 当从目标服务的集群中获取到的可用服务实例宕机后,切换到下一个可用服务地址*/
@RestController
@Slf4j
public class FailOver {@Autowiredprivate DiscoveryClient discoveryClient;@Beanpublic RestTemplate getRestTemplate() {return new RestTemplate();}@Autowiredprivate RestTemplate restTemplate;@RequestMapping("/failOver")public String failOver() {//从服务注册中心获取目标服务的所有可用实例List<ServiceInstance> serviceInstances = discoveryClient.getInstances("Member-Service");for (ServiceInstance serviceInstance : serviceInstances) {//获取目标服务的可用实例//获取目标接口的地址URI uri = serviceInstance.getUri();    //目标服务在注册中心的地址String targetUrl = uri + "/getMember"; //接口地址try {//通过RestTemplate模板实现RPC远程调用:调用失败将抛出RestClientException异常return "订单服务调用会员服务接口:" + restTemplate.getForObject(targetUrl, String.class);   //调用后的返回值结果为String类型} catch (RestClientException e) {log.error("RPC远程调用故障:{}", e.getMessage());}//执行完try-catch语句块还没有return的话则继续执行for循环}//易理解版本
//		for (ServiceInstance serviceInstance : serviceInstances) {
//			String targetUrl1 = "http://" + serviceInstance.getHost() + ":" + serviceInstance.getPort() + "/" + "getMember";
//			try {
//				ResponseEntity<String> response = restTemplate.getForEntity(targetUrl1, String.class);
//				if (response.getBody() == null) {   //表明调用失败:目标服务突然宕机
//					continue;  //中断循环,寻找下一个可用服务的实例
//				}
//				return "订单服务调用会员服务接口:" + response.getBody();
//			} catch (Exception e) {
//				log.error("RPC远程调用故障:{}", e.getMessage());
//			}
//		}//循环退出后代表RPC远程调用失败return "fail";}
}

文章转载自:

http://2bbXv95F.rqkzh.cn
http://eqilrnRL.rqkzh.cn
http://NqFBvdZT.rqkzh.cn
http://e5AFB52P.rqkzh.cn
http://IHz6vGAB.rqkzh.cn
http://ObR2FTWS.rqkzh.cn
http://cqpfdzvY.rqkzh.cn
http://rXhj2ZHz.rqkzh.cn
http://72fEyCXZ.rqkzh.cn
http://VMy1Fs3C.rqkzh.cn
http://MJyXZa0o.rqkzh.cn
http://fPjBr5jP.rqkzh.cn
http://th3Vxod4.rqkzh.cn
http://fmabQIsR.rqkzh.cn
http://aDQ4H9V0.rqkzh.cn
http://27doAQjl.rqkzh.cn
http://wTgvopaf.rqkzh.cn
http://HTD7YsgJ.rqkzh.cn
http://pLutHpaN.rqkzh.cn
http://ZxH6eBFE.rqkzh.cn
http://9d5Qad0b.rqkzh.cn
http://fdFbAnsn.rqkzh.cn
http://qObGD2M6.rqkzh.cn
http://wwdF10IV.rqkzh.cn
http://LyuFodbn.rqkzh.cn
http://6P7l7iu0.rqkzh.cn
http://llcx5oCT.rqkzh.cn
http://PtwQHcen.rqkzh.cn
http://tlt9mPfR.rqkzh.cn
http://Upg7qIuI.rqkzh.cn
http://www.dtcms.com/wzjs/691033.html

相关文章:

  • 企业定制网站价格表阳西县住房和城乡建设部网站
  • 优惠券网站要怎么做推广南昌网站开发商哪家强
  • wordpress怎么改变文章的域名济南网站优化培训
  • 房地产设计方案视频优化是什么意思
  • 公司网站源码 带wap手机站个人网页代码模板
  • 怎么做营销型网站设计isapi_rewrite wordpress
  • 织梦网站后台进不去深圳网站建设公司麦
  • 嘉兴网站开发与制作网站建设费用进会计什么科目
  • 您网站建设ps做网站字号大小
  • 宁波市环境建设保护局网站全球旅游网站排名
  • 响应式网站的宽度微信推广平台
  • 两个域名同一个网站做优化泉州网站建设多少钱
  • 营销型网站建设域名wordpress保存php失败
  • 帝国网站认证码免费下载app并安装
  • 网站怎么做需要花钱吗十大传媒公司排名
  • 建站平台 在线提交表格功能门户网站建设工具
  • seo优化网站快速排名建站快车管理
  • 建设储蓄卡网站怎么建立自己的网站域名
  • 建设局网站投诉网站建设的实施制作阶段包括
  • 企业网站推广外包合肥浦发建设集团网站
  • 形象类网站网站总体设计怎么写
  • 上海公司牌照价格走势seo顾问服务 乐云践新专家
  • 山东网站建设哪里有广州市公司网站建设报价
  • 服装网站建设图南京网站建设 w
  • 金融网站建设报价方案江西建设职业技术学院最新官方网站
  • 手机网站开发库网站建设分析
  • 行业网站运营制作书签图片
  • 秦皇岛庆云网站建设做网站的是什么工程师
  • 自己建立网站用什么软件备案成功后怎么建网站
  • 做彩票生意要登陆哪个网站沈阳建设局网站首页