当前位置: 首页 > 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动态切换数据源

 

 

 

http://www.xdnf.cn/news/130411.html

相关文章:

  • 使用浏览器的Clipboard API实现前端复制copy功能
  • 基准指数选股策略思路
  • 风光储能+智能调度,这才是企业未来能源管理的最优解
  • Linux进程学习【基本认知】
  • vscode切换Python环境
  • C++中的浅拷贝和深拷贝
  • 【现代深度学习技术】循环神经网络06:循环神经网络的简洁实现
  • 头歌实训之索引
  • MySQL 库的操作 -- 增删改查,备份和恢复,系统编码
  • 深度解析之算法之分治(快排)
  • Python-36:饭馆菜品选择问题
  • 使用jsrsasign进行RSA加密解密
  • Vue 2 和 Vue 3 的详细对比,从 生命周期、API、响应式系统、函数调用 等多角度展开,最后附表格总结
  • 【C到Java的深度跃迁:从指针到对象,从过程到生态】第三模块·面向对象深度进化 —— 第十二章 接口:比C函数指针更强大的契约
  • 数学基础 -- 欧拉公式的推导过程学习
  • 精准落地设计,现代项目管理中的深度实践
  • FeignClient用法笔记
  • 构建企业官方网站有哪些必备因素?
  • YOLOv8融合CPA-Enhancer【提高恶略天气的退化图像检测】
  • ecovadis认证需要提供哪些文件?ecovadis认证优势是什么?
  • c语言 write函数
  • Java线程池那点事(面试高频)
  • ASR VAD TTS
  • VLA 论文精读(十八)π0.5: a Vision-Language-Action Model with Open-World Generalization
  • JavaFX 第三篇 HostServices和Platform
  • 交通运输行业综合智慧监管平台:商贸物流的安全与效率引擎
  • Windows下QT打包后程序运行后弹出CMD命令窗口的问题解决方法
  • vxe-table封装表头
  • MSHFlexGrid 控件网格赋值指南方案
  • Python爬虫实战:移动端逆向工具Fiddler经典案例