Tumregler för komponering av topics i Apache Kafka

Sun, Dec 13, 2020

I ett blogginlägg som heter Should you put several event types in the same Kafka topic? så listar Martin Kleppmann några tumregler för hur vi kan välja att dela upp våra topics i Apache Kafka:

  1. Sikta på max hundratalet topic-partioner per broker-instans, om låg latens är viktigt.
  2. Händelser som berör en och samma entitet bör placers i en och samma topic, eftersom ordningen på händelserna troligtvis är av betydelse (varför även nyckel måste väljas därefter).
  3. Händelser som berör olika entiteter, men där det finns beroenden mellan entiteterna, bör hamna på samma topic. Saknas beroende bör händelserna placeras på olika topics, särskilt om dom hanteras av olika team.
  4. Enskilda händelser som omfattar flera entiteter bör initialt sparas som en sammansatt händelse, eftersom det är lättare att vid senare processning bryta upp händelsen i flera händelser (jämfört med att försöka återskapa den ursprungliga sammansatta händelsen).
  5. Om flera konsumenter behöver konsumera samma uppsättning topics, överväg att ersätta dessa topics med ett sammansatt topic.
  6. När regel 2-5 inte är applicerbara, så kan det vara aktuellt att gruppera händelser per händelsetyp i en och samma topic. Det kan dock komplicera användandet av statistik definierade scheman (så som Apache Avro) för händelserna.