Java大厂硬核面试:Flink流处理容错、Pomelo JVM调优、MyBatis二级缓存穿透防护与Kubernetes服务网格实战解析
第二幕:系统架构设计
面试官:设计一个处理10万+QPS的秒杀系统需要的技术方案和技术选型
xbhog:采用基础架构:
- 存储层:Redis限流+分布式锁
- 服务层:Sentinel流量控制
- 消息层:RocketMQ事务消息保证最终一致性 关键设计:
- 库存扣减使用Redission的MultiOperation实现原子操作
- 通过Spring Cloud Gateway的自定义过滤器实现用户身份认证网关层拦截
面试官:Kubernetes如何实现服务自动扩缩容?写出核心YAML配置片段
xbhog:需配置HPA并关联Prometheus指标:
apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
spec:scaleTargetRef:apiVersion: apps/v1kind: Deploymentname: my-appminReplicas: 2maxReplicas: 10metrics:- type: Objectobject:target:kind: ServicemetricName: request-per-second
配合Prometheus的custom metrics server实现基于QPS的水平扩缩容。
硬核终局:极限场景攻坚
面试官:请解释Pomelo JVM调优方案并对比与GraalVM的差异?
xbhog:Pomelo实现:1. 基于Corretto 8 JVM的 RED 链路诊断(Recent、Eden、Dead)2. 使用AsyncPi GC减少STW时间。与GraalVM的AOT编译相比,Pomelo更适合长周期运行的服务,而GraalVM在冷启动性能上具有优势。
面试官:微服务架构中如何实现服务间安全通讯?请用代码演示
xbhog:通过Spring Security OAuth2实现:
@Configuration
@EnableResourceServer
public class SecurityConfig extends ResourceServerConfigurerAdapter {@Overridepublic void configure(HttpSecurity http) {http.authorizeRequests().antMatchers("/api/**").authenticated().and().oauth2ResourceServer().jwt();}
}
配合Nginx的SSL Termination实现TLS层加密传输。
面试官笑而不语,递上咖啡后补充道:最后一个问题,请用React式编程实现WebSocket实时推送
xbhog:结合Project Reactor实现:
@MessageMapping("/topic")
public Flux<Message> stream() {int count = 0;return Flux.interval(Duration.ofSeconds(1)).map(sequence -> new Message("Server", count++));
}
通过Spring WebFlux实现非阻塞式消息回推,支持万级并发连接。
技术场景全解析
1. Flink Checkpoint优化
- 关键参数:state.backend.incremental=enabled
- 性能对比:增量快照比全量节省80%存储
- 灾难恢复:通过HDFS与S3的元数据夹层实现
2. MyBatis缓存防护
- 深度防护矩阵:
- 全局过滤器拦截可疑SQL
- Redis bloom filter存储查询指纹
- 空对象缓存时长设为5分钟防雪崩
- 典型应用场景:电商商品详情页访问控制
3. Kubernetes扩缩容实践
- 指标自定义:增加自定义的HTTP状态码监控维度
- 防抖设计:配置10秒冷却期避免快速反弹
- 成本优化:使用spot instance配合优先级队列
4. Pomelo JVM调优
- RED链路诊断:配合Prometheus的gc_scavenge_time_seconds指标
- 内存分区:将young gen比例从25%调整到30%
- GC日志分析工具:jvm-recommender的实时建议系统
5. Reactor+WebSocket架构
- 性能对比:阻塞式Key/Selector比传统IO提升500%并发
- 监控指标:连接存活时间、消息发送延迟的标准差
- 安全加固:HTTPS + JWT双重加密传输框架
架构设计推荐方案:
- 使用TiDB的HTAP架构实现实时分析
- Prometheus + Pushgateway实现自定义指标上报
- 通过ServiceMesh实现统一链路追踪与配置管理
- Kubernetes Operator实现有状态应用的自动化运维体系