Java面试高频问题(26-28)

二十六、熔断降级框架:Hystrix与Sentinel对比

核心机制对比

特性 Hystrix Sentinel

隔离策略 线程池隔离 信号量/线程池混合隔离

熔断策略 错误比例熔断 异常比例/异常数/慢调用熔断

实时规则配置 支持 支持动态规则(Nacos集成)

流量控制 不支持 滑动窗口计数器

java

// Sentinel流控规则配置示例

FlowRule rule = new FlowRule();

rule.setResource("order_create");

rule.setGrade(RuleConstant.FLOW_GRADE_QPS);

rule.setCount(100); // QPS阈值

FlowRuleManager.loadRules(Collections.singletonList(rule));

核心架构差异

mermaid

graph LR

Hystrix-->线程池隔离A依赖服务

Sentinel-->信号量控制B依赖服务

Hystrix-->熔断回退CFallback逻辑

Sentinel-->实时监控D控制台

源码深度解析

  1. Hystrix:`HystrixCommand`通过`execute()`方法触发熔断逻辑,依赖`CircuitBreaker`状态机

  2. Sentinel:`Entry`入口对象调用`SphU.entry()`触发资源统计,`DegradeRuleManager`管理熔断规则

二十七、Service Mesh架构:Istio数据面通信原理

核心通信流程

  1. 服务发现:Pilot通过xDS协议下发服务路由规则

  2. 流量劫持:iptables重定向流量到Envoy代理

  3. 遥测数据:Envoy上报指标到Prometheus

性能优化点

  1. Sidecar资源控制:通过`resources.limits`限制CPU/Memory

  2. mTLS双向认证:使用SPIFFE标识服务身份

  3. WASM扩展:用WebAssembly实现自定义过滤器

二十八、热点数据治理:缓存击穿与雪崩防护

高并发场景解决方案

问题类型 解决方案 技术实现

缓存击穿 互斥锁+永不过期 Redis SETNX + 异步更新

缓存雪崩 随机过期时间+热点Key拆分 Caffeine二级缓存

数据一致性 双删策略+延迟双删 MySQL binlog监听

java

// 互斥锁实现缓存击穿防护

public Object getData(String key) {

Object value = redis.get(key);

if (value == null) {

if (redis.setnx("lock:" + key, "1")) {

try {

value = db.query(key);

redis.setex(key, 3600, value);

} finally {

redis.del("lock:" + key);

}

} else {

Thread.sleep(50);

return getData(key);

}

}

return value;

}

进阶挑战

  1. 多级缓存同步:Redis+LocalCache+MQ实现最终一致性

  2. 冷热数据分离:Redis ZSET按访问频率分层存储

  3. 自动降级策略:Sentinel动态切换数据源

相关推荐
莫叫石榴姐5 分钟前
SQL百题斩:从入门到精通,一站式解锁数据世界
大数据·数据仓库·sql·面试·职场和发展
学Linux的语莫7 分钟前
机器学习数据处理
java·算法·机器学习
找不到、了7 分钟前
JVM的即时编译JIT的介绍
java·jvm
earthzhang202138 分钟前
【1007】计算(a+b)×c的值
c语言·开发语言·数据结构·算法·青少年编程
西瓜er41 分钟前
JAVA:Spring Boot 集成 FFmpeg 实现多媒体处理
java·spring boot·ffmpeg
你总是一副不开心的样子(´ . .̫ .44 分钟前
一、十天速通Java面试(第三天)
java·面试·职场和发展·java面试
迎風吹頭髮1 小时前
UNIX下C语言编程与实践63-UNIX 并发 Socket 编程:非阻塞套接字与轮询模型
java·c语言·unix
我是华为OD~HR~栗栗呀1 小时前
23届考研-Java面经(华为OD)
java·c++·python·华为od·华为·面试
Javatutouhouduan1 小时前
Java程序员如何深入学习JVM底层原理?
java·jvm·java面试·后端开发·java架构师·java程序员·互联网大厂
王嘉俊9251 小时前
设计模式--享元模式:优化内存使用的轻量级设计
java·设计模式·享元模式