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

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

 

 

 

相关文章:

  • AI新战局:Gemini 2.5 Pro强势挑战OpenAI o3,谁是真“全能”?“锯齿AGI”时代已来临?
  • 中国250米土壤质地类型数据
  • 筑牢数字防线:商城系统安全的多维守护策略
  • Ubuntu18.04更改时区(图文详解)
  • 【Python数据库与后端开发】从ORM到RESTful API
  • 前端基础之《Vue(11)—自定义指令》
  • 全栈国产化信创适配,构建安全可控的呼叫中心系统
  • 【安全扫描器原理】TCP/IP协议编程
  • 力扣面试150题--环形链表和两数相加
  • 【滑动窗口+哈希表/数组记录】Leetcode 438. 找到字符串中所有字母异位词
  • C语言中操作字节的某一位
  • Pandas 数据处理:长格式到宽格式的全面指南
  • 潇洒郎:ssh 连接Windows WSL2 Linux子系统 ipv6地址转发到ipv4地址上
  • SDC命令详解:使用get_cells命令进行查询
  • 数据结构------C语言经典题目(7)
  • 【沉浸式求职学习day25】【部分网络编程知识分享】【基础概念以及简单代码】
  • C语言实现贪心算法
  • PostgreSQL技术内幕29:事件触发器tag原理解析
  • 开发者专用部署工具PasteSpider的V5正式版发布啦!(202504月版),更新说明一览
  • 厚铜PCB打样全流程解析:从文件审核到可靠性测试的关键步骤
  • 美乌矿产协议签署被曝“临门一脚”时生变,美方提附加条件
  • 浙商银行一季度净赚超59亿微增0.61%,非息净收入降逾22%
  • 厚重与潮流交织,淮安展现“运河之都”全新城市想象
  • 出行注意防晒补水,上海五一假期以多云天气为主最高33℃
  • 王毅:为改革完善全球治理作出金砖贡献
  • 古籍新书·2025年春季|中国土司制度史料集成