~/talk

How do we approach event streaming at Revolut?

Talkat GeeCON 2019 · 2019-05-15..05-17· [distributed-systems]
links:none on file
slides:none on file

Revolut builds its own event streaming on Postgres rather than Kafka: events are appended immutably to a partitioned Postgres event log (monthly partitions, table >4–5 TB), propagated via Postgres NOTIFY/LISTEN, served by two stateless Ktor instances (Netty, Kotlin coroutines) exposing SDKs and WebSocket streams. Producers write model change and event in one DB transaction, marking a local journal; delivery is at-least-once via local journal + reconciler that batches retries. System meets production scale, feeds Kafka for analytics, and targets p99 <20 ms.

AI-written summary · about

  1. 0:00Introduction and speaker intro
  2. 1:29Revolut and event streaming context
  3. 4:43Requirements for event streaming
  4. 12:04Solution design overview
  5. 18:22Real-world use cases
  6. 22:20Handling distributed transactions
  7. 25:35Ensuring data consistency
  8. 33:14Reconciliation and fault tolerance
  9. 36:35Achieving delivery guarantees
  10. 37:18PostgreSQL optimizations
  11. 39:02Scalability and performance
  12. 40:06Low-latency strategies
  13. 42:58Client SDK and observability
  14. 45:10Subscription and streaming mechanics
  15. 47:41Future improvements
  16. 50:31Q&A and closing
~/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.