Java面试终极篇:Sentinel+Seata+Kafka Streams高并发架构实战
面试官:张总(严肃脸)
程序员:小王(紧张冒冷汗)
第一轮:分布式基础
张总:说说Spring Cloud Alibaba的Sentinel和Nacos的区别? 小王:(结巴)那个...Sentinel是流量控制,Nacos是...是服务发现? 张总:(点头)嗯,能分清基础组件不错。那Sentinel的熔断策略具体怎么配置? 小王:(掏出手机翻笔记)记得是...是@SentinelResource注解?
第二轮:中间件实战
张总:我们系统每天处理2亿条消息,Kafka怎么保证Exactly Once? 小王:(擦汗)这个...要配合事务消息和幂等校验? 张总:(微笑)说对了。那怎么设计跨集群的Kafka数据同步方案? 小王:(抓耳挠腮)可能...需要用MirrorMaker?
第三轮:分布式事务
张总:订单系统要同时扣库存和改账户余额,怎么保证一致性? 小王:(激动)可以用Seata的AT模式! 张总:(竖起大拇指)好!那TCC模式和SAGA模式有什么本质区别? 小王:(懵逼)那个...TCC是...需要业务参与?
第四轮:性能优化
张总:Redis集群怎么处理热点Key? 小王:(自信)可以用Lua脚本+本地缓存! 张总:(惊讶)不错!那Redisson的看门狗机制怎么实现的? 小王:(结巴)是...是通过定时任务续期?
第五轮:架构设计
张总:如果要支撑10万QPS,你会怎么设计系统? 小王:(激动)用Nginx做反向代理,配合Sentinel限流... 张总:(点头)很好。今天就到这里,回去等通知吧。
技术解析
1. Sentinel vs Nacos
- Sentinel:流量控制、熔断降级、系统自适应保护
- Nacos:服务发现、配置管理、动态DNS
2. Kafka Exactly Once
- 生产端:事务消息+acks=all
- 消费端:幂等校验+检查点提交
3. 分布式事务模式
- AT模式:自动回滚,适合简单业务
- TCC模式:需要业务编码,适合复杂场景
- SAGA模式:长事务补偿,适合跨服务场景
4. Redis热点Key解决方案
- 本地缓存+Redis集群
- Lua脚本保证原子性
- 热点Key自动迁移
5. 高并发架构
- CDN加速
- 消息队列削峰
- 分库分表
- 服务降级