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动态切换数据源

相关推荐
泡泡以安8 分钟前
【Android逆向工程】第3章:Java 字节码与 Smali 语法基础
android·java·安卓逆向
毕设源码-朱学姐6 小时前
【开题答辩全过程】以 工厂能耗分析平台的设计与实现为例,包含答辩的问题和答案
java·vue.js
智者知已应修善业6 小时前
【求中位数】2024-1-23
c语言·c++·经验分享·笔记·算法
地平线开发者7 小时前
PTQ 量化数值范围与优化
算法·自动驾驶
sali-tec7 小时前
C# 基于halcon的视觉工作流-章68 深度学习-对象检测
开发语言·算法·计算机视觉·重构·c#
测试人社区-小明7 小时前
智能弹性伸缩算法在测试环境中的实践与验证
人工智能·测试工具·算法·机器学习·金融·机器人·量子计算
Spring AI学习7 小时前
Spring AI深度解析(9/50):可观测性与监控体系实战
java·人工智能·spring
罗西的思考8 小时前
【Agent】MemOS 源码笔记---(5)---记忆分类
人工智能·深度学习·算法
java1234_小锋8 小时前
Spring IoC的实现机制是什么?
java·后端·spring
xqqxqxxq8 小时前
背单词软件技术笔记(V2.0扩展版)
java·笔记·python