Niezawodne dostarczanie zdarzeń w Apache Kafka oparte o ponawianie i DLQ

Jacek Grobelny, Tech Lead @ Consdata

Agenda

  • Consdata

  • Santander Poczta

  • Pierwsza implementacja

  • Problemy

  • Refactoring do Event Sourcingu

  • Problemy 

  • Live Demo

  • Wnioski

<CONSDATA >

Santander Poczta

  • poczta retail/corporate

  • 5 mln kont

  • 500 mln wiadomości

  • operacje masowe

Problemy pierwszej implementacji

  • komunikacja synchroniczna

  • mało elastyczne API

  • mnogość przypadków - wysyłka masowa

Wolumen danych

Event Sourcing to the Rescue!

  • Czym jest Event Sourcing

  • Event Store vs State Store

  • Revert do dowolnego momentu

Zmiana architektury

  • Wszystkie procesy dotyczące wiadomości w naszym systemie to eventy!

  • Mamy state store (SOLR)

  • Wystarczy wybrać event store :)

Apache Kafka

  • Referencje

  • Wydajność

  • Wolumen danych

  • Dumb Broker/Smart Consumer

Wyzwania

  • Ostateczna spójność (idempotencja)

  • Zwiększenie złozoności (serwery, monitoring)

  • Ręczne aktualizacje na bazie

  • Obsługa błędów

Obsługa błędów

 Strategia #1

BRAK

Obsługa błędów

 Strategia #2

Ponawianie

Obsługa błędów

 Strategia #3

independent events

topic external

-> topic external retry(loop)

->topic external dlq

Obsługa błędów

 Strategia #4

dependent events

topic final(loop)

-> topic final dlq

LIVE DEMO

Kolejne kroki

Wnioski końcowe

  • Minimalna konfiguracja 3xBroker, 3xZoo

  • Obsługa błędów

  • Monitoring

Dziękuję

 

https://ynleborg.github.io

https://blog.consdata.tech/

@ynleborg

Q&A

Warsaw IT Architecture Group #1

By ynleborg

Warsaw IT Architecture Group #1

  • 329