目录
第一章:那个在凌晨 3 点炸掉的 JDBC 连接池——同步交互的死局
1.1 同步 Sink:吞吐量的隐形杀手
1.2 连接池枯竭与“重试风暴”
1.3 为什么只做限流不管用?
第二章:别傻傻地同步等待——异步 I/O 的实战细节
2.1 真正的异步不仅仅是加个回调
2.2 UnorderedWait vs OrderedWait:性能的岔路口
2.3 致命的超时处理
第三章:不仅要重试,还要优雅地重试——手撸 AsyncRetryStrategy
3.1 引入 Guava Retrying?太重了
3.2 为什么一定要用指数退避(Exponential Backoff)?
第四章:熔断器——学会说“不”的艺术
4.1 为什么要熔断?
4.2 手撸一个基于滑动窗口的轻量级熔断器
4.3 将熔断器集成进 AsyncFunction
第五章:即使失败,也要体面——降级与旁路缓存
5.1 策略一:本地缓存(Local Cache)兜底
5.2 策略二:默认值填充
5.3 策略三:旁路输出(Side Output)—— 最终的救生艇
第六章:反压的哲学——当 DB 真的太慢时,Flink 应该减速吗?
6.1 主动限流(Rate Limiting)
第七章:实战大结局——一个工业级的 Sink 架构图
7.1 给老板的一句话总结
第八章:拒绝单兵作战——高并发下的“攒批”艺术
8.1 别在内存里裸奔——ListState 的重要性
8.2 手写一个生产级的 BatchSink
8.3 Checkpoint 时的“强制刷盘”
第九章:所谓的“精准一次” (Exactly-Once),可能是拖垮系统的最后一根稻草
9.1 Flink 的 2PC 机制是如何工作的?
9.2 为什么 2PC 会导致连接池雪崩?
9.3 拥抱幂等性(Idempotency),抛弃 2PC
第十章:监控——别等到用户投诉才发现 DB 挂了
10.1 必须埋点的关键指标
10.2 告警阈值配置建议
第一章:那个在凌晨 3 点炸掉的 JDBC 连接池——同步交互的死局
你以为你的 Flink 作业挂掉是因为数据量太大了? 错。 绝大多数时候,搞死实时作业的凶手,都是那个看起来人畜无害的外部系统。
上周五凌晨3点,我的手机狂响。运维打来电话,语气里全是想杀人的冲动:“你的 Flink 任务又重启了,每次重启完跑几分钟就接着挂,死循环了,把下游的 MySQL 还有其他业务库全拖死了,CP
网硕互联帮助中心






评论前必须登录!
注册