导语:
当祺贵人(订单服务)突然宕机,当华妃(流量洪峰)发起攻击,当皇后(注册中心)暗中使绊子……用甄嬛传讲透微服务高可用设计,附送代码级解决方案!
一、祺贵人宕机了!——服务节点故障
剧情还原:
祺贵人(订单服务)突然晕倒(Pod崩溃),皇上(客户端)无法下单,后宫大乱。
技术真相
健康检查机制
Liveness Probe:太医院(Kubernetes)每10秒把脉一次,连续3次失败则判定死亡
Readiness Probe:检查是否准备好接客(服务就绪),失败则从服务发现中剔除
代码实战(K8s配置):
# 健康检查配置livenessProbe:httpGet:path: /healthport: 8080initialDelaySeconds: 30 # 容器启动30秒后开始检查periodSeconds: 10 # 每10秒检查一次failureThreshold: 3 # 连续失败3次判定宕机readinessProbe:tcpSocket:port: 8080initialDelaySeconds: 5periodSeconds: 10
自动恢复策略
原地重启:太医(Kubelet)尝试抢救(重启容器)
节点迁移:若抢救失败,将祺贵人迁至其他寝宫(重新调度Pod)
配置参数:
restartPolicy: Always # 重启策略(Always/OnFailure/Never)terminationGracePeriodSeconds: 30 # 优雅终止等待时间
二、华妃发起流量攻击!——限流与熔断
剧情还原:
华妃(恶意用户)发动1000个宫女同时召见祺贵人(每秒千次请求),导致服务崩溃。
技术真相
网关层限流(皇后把关)
令牌桶算法:每个宫女(请求)需持令牌才能进殿
全局限流:限制整个后宫的请求总量
代码实战(Nginx配置):
# 限制每秒10个请求limit_req_zone $binary_remote_addr zone=req_limit:10m rate=10r/s;location order {limit_req zone=req_limit burst=20; # 允许突发20个请求proxy_pass http://order-service;}
客户端熔断(甄嬛的智慧)
熔断条件:错误率超过50%或连续5次失败
半开状态:试探性放行部分请求,若成功则关闭熔断
代码实战(Sentinel熔断规则):
// 定义熔断规则DegradeRule rule = new DegradeRule("orderService").setGrade(RuleConstant.DEGRADE_GRADE_EXCEPTION_RATE) // 按异常比例.setCount(0.5) // 阈值50%.setTimeWindow(10) // 熔断时长10秒.setMinRequestAmount(5) // 最小请求数.setStatIntervalMs(10000); // 统计窗口10秒
三、皇后篡改名册!——注册中心故障
剧情还原:
皇后(注册中心Nacos)故意删除祺贵人的登记信息(服务下线),导致无人能找到她。
技术真相
注册中心高可用架构
集群部署:同时向太后(Nacos节点A)和敬妃(Nacos节点B)登记
客户端缓存:皇上(客户端)本地缓存服务列表,防止注册中心全挂
配置实战(Nacos集群):
spring:cloud:nacos:discovery:server-addr: 192.168.1.101:8848,192.168.1.102:8848
服务心跳保活
主动上报:祺贵人每5秒向皇后报平安(注册续约)
自我保护模式:若皇后发现超过85%节点失联,暂停剔除服务
四、安陵容顶替上岗!——服务降级与容灾
剧情还原:
祺贵人宕机后,安陵容(降级服务)临时接管,返回默认订单(“商品已售罄”)。
技术真相
降级策略设计
静态降级:直接返回预设默认值
动态降级:从缓存中读取最近一次成功数据
代码实战(Hystrix降级):
@HystrixCommand(fallbackMethod = "fallbackOrder")public Order createOrder(OrderRequest request) {// 正常业务逻辑}// 降级方法public Order fallbackOrder(OrderRequest request) {return new Order("default_order_id", "商品已售罄", 0);}
跨机房容灾
异地多活:圆明园(机房A)和紫禁城(机房B)同时部署服务
DNS智能解析:根据用户位置选择最近机房
五、温太医的监控系统——可观测性设计
剧情还原:
温太医(Prometheus+Grafana)实时监控嫔妃(服务)健康状态,发现异常立即告警。
技术栈配置
指标收集(脉象记录)
# Prometheus配置scrape_configs:- job_name: 'order-service'metrics_path: '/actuator/prometheus'static_configs:- targets: ['order-service:8080']
告警规则(太医诊断标准)
# Alertmanager规则groups:- name: service-alertsrules:- alert: HighErrorRateexpr: sum(rate(http_server_errors_total{job="order-service"}[5m])) > 0.5for: 5mlabels:severity: criticalannotations:summary: "服务异常:订单服务错误率超过50%"
终极容灾方案——混沌工程演练
剧情彩蛋:
每月举办“甘露寺演习”(Chaos Mesh),随机让嫔妃(服务)宕机,训练后宫应急能力。
混沌实验配置:
# 模拟Pod故障apiVersion: chaos-mesh.org/v1alpha1kind: PodChaosmetadata:name: kill-order-servicespec:action: pod-killmode: oneselector:labelSelectors:app: order-serviceduration: "30s"
文末求生欲:
评论区留言「你在微服务中踩过的最深坑」
下期预告:
《用红楼梦讲透分布式事务!贾宝玉的银子到底该给谁?》




