Hi, Flink community! 😁
I recently built a high-performance Ad Frequency Capping system at Toss to ensure precise real-time counting for ad exposures and clicks. Since this data directly impacts budget efficiency and revenue, we needed a solution that remains accurate across lookback periods ranging from 1 minute to 7 days. To achieve this at scale, we implemented a
unified state-based approach using Flink Timers instead of the standard Sliding Window operator. This gave us the granular control needed for event-level expiration while managing massive state sizes.
Our technical deep-dive covers:
•
Custom Sliding Logic: Managing event-level expiration for 1-minute to 7-day durations using Flink Timers.
•
RocksDB Optimization: Strategies to resolve Write Stalls and Filter Block Cache Misses under Direct I/O environments.
•
State Scalability: Leveraging
Flink Changelog (DSTL) to handle large-scale state and resolving complex Savepoint deadlocks.
•
Operational Reliability: Ensuring data consistency during the critical transition from Backfill to Real-time Catch-up.
If you're interested in how we tuned Flink for long-term state and high-throughput ad-tech workloads, check out the full post:
Blog Post: https://toss.tech/article/flink-realtime-frequency-capping
Linkedin:
https://www.linkedin.com/posts/seungminlee0127_apache-flink-rocksdb-%ED%8A%9C%EB%8B%9[…]m=member_desktop&rcm=ACoAADhWrVwBMAtsg_7tgh9WANuY_Dk5cbS0Rec
(Note: The post is in Korean, but the architecture diagrams and code snippets should be quite helpful!)