~/talk

Using Akka Streams for Web scale Data Ingestion

Talkat Scale By The Bay 2018 · 2018-11-15..11-17· [data-engineering]
name:Jie Ren
linkedin:jie-ren
links:none on file
slides:none on file

Iterable moves from RabbitMQ to Kafka to fix single‑point failures and spiky flow control, and wires Akka Streams + Alpakka Kafka to consume partitioned topics (partitioned by user ID) and keep per‑user ordering. The pipeline batches with groupWithin, uses mapAsync with parallelism=1 for ordered Elasticsearch bulk updates, merges per‑user updates, and uses Redis dedupe for at‑most‑once semantics. Result: steady throughput at tens of thousands/sec (peaks ~50k), far fewer outages, and correct ordering with retries for 429/409.

AI-written summary · about

  1. 0:00Intro
  2. 1:25What is Iterable?
  3. 3:14About Iterable's Data
  4. 4:08Data inside ElasticSearch
  5. 4:20The Problem
  6. 5:01Existing Ingestion Architecture
  7. 5:32Motivation for change: RabbitMQ
  8. 6:49Motivation for change: Batching
  9. 7:31Example out of order processing
  10. 8:19Motivation for change: Error handling
  11. 9:11Spiky processing and non-optimal performance
  12. 10:15Real life effect at Iterable
  13. 11:01Goals of new architecture
  14. 11:58Tools and Technologies
  15. 14:11High Level Ingestion Architecture
  16. 15:50Kafka Partitioning strategy
  17. 16:37Code: Our streaming graph
  18. 16:47Source of Sources
  19. 17:24Source of messages per partition
  20. 18:14Batch messages
  21. 19:05Index Batch into ES
  22. 20:40Index batch into Elasticsearch
  23. 20:59Trigger downstream changes
  24. 22:03Commit back to Kafka
  25. 22:46Shutting down stream and cleaning up
~/search
type to search 6,249 conferences, 138,987 speakers and 185,172 talks
~/help
cmdctrl k
search every conference, speaker and series
/
focus the filter search
h
home
c
conferences
s
speakers
e
series
t
light / dark — the status bar button does the same
?
this help
esc
close this, then clear every filter — or just the search, while you are typing in it

Ignored while you are typing. Pages without a filter rail have no search to focus.