Python + Kafka = ?

Николай Сасковец

+ 🐍 = ?

Николай Сасковец

What is Kafka?

Distributed Streaming Platform Распределённый брокер сообщений Распределенная система передачи сообщений

What is Kafka?

Distributed Streaming Platform Распределённый брокер сообщений Распределённая система передачи сообщений
Apache Kafka — это распределенная система обмена сообщениями с высокой пропускной способностью, которую можно использовать для упрощения масштабируемого сбора данных. [↪]

Alternatives for Kafka

RabbitMQ ActiveMQ
NUTS Pulsar NSQ

Kafka for what???

Messaging Metrics Website Activity Tracking Log Aggregation Stream Processing Event Sourcing Commit Log

Kafka for what???

Queue

Theory

Карикатура «Теория и практика», Даниил Кузнецов, 09.05.2017, http://ccra.ru/Plxd

Microservices: Synchronous Communication

( REST / gRPC / HTTP )

Microservices: Synchronous Communication

( REST / gRPC / HTTP )

Microservices: Coupling and Cohesion

by Jeppe Cramon, tigerteam.dk

Microservices: Async Communication (Celery)

Microservices: Async Communication (Kafka)

Kafka: Overview

Fig. from dzone.com

Kafka: Partitions

Fig. from mrsrinivas

Kafka: Partitions (P<C)

Fig. from mrsrinivas

Kafka: Partitions (P=C)

Fig. from mrsrinivas

Kafka: Partitions (P>C)

Fig. from mrsrinivas

Kafka: Partitions: few consumer groups

Fig. from mrsrinivas

Kafka: Replication

Fig. from dzone.com

Kafka: Schema

key, value
byte[], byte[]

Kafka: Replication

Fig. from dzone.com

Kafka: Schema

Use Avro to define a data schema

Kafka: Schema: Avro

{   "namespace":"com.example.avroSample.model",
    "type":"record",
    "name":"Automobile",
    "fields":[  {  "name":"modelName",
                   "type":"string"},
                {  "name":"modelYear",
                   "type":"int"}
             ]
}
        

Kafka: Schema: Avro: Schema Registry

Kafka: Consumers Offsets

Microservices?

Microservices: Async Communication (Kafka). Again

Microservices: Async Communication. Few Details

PostgreSQL → Kafka

Stream data from PostgreSQL to Kafka

Fig. from debezium.io

Microservices: Async Communication. Few Details

А как же питон?

Kafka-related libraries for Python

confluent-kafka aiokafka
fastavro
Thanks!
Questions?