Sobes.tech
Junior — Middle

Milyen főbb mintázatai vannak a Kafka és a mikroszolgáltatások közötti interakciónak, amiket ismersz?

sobes.tech MI

Válasz az MI-től

A Kafka és a mikroszolgáltatások közötti főbb kölcsönhatási minták:

  1. Esemény-vezérelt architektúra (EDA) — a mikroszolgáltatások eseményeket tesznek közzé Kafka-ban, más mikroszolgáltatások feliratkoznak ezekre az eseményekre és reagálnak rájuk. Ez egy aszinkron üzenetcsere, amely csökkenti a szolgáltatások közötti kötöttséget.

  2. Parancs és kérés felelősség szétválasztása (CQRS) — a parancsokat és kérdéseket külön mikroszolgáltatások kezelik, és Kafka-t használják az állapotváltozási események vagy parancsok továbbítására.

  3. Esemény forrás (Event Sourcing) — minden mikroszolgáltatás állapotváltozása eseményként kerül tárolásra Kafka-ban, lehetővé téve az állapot helyreállítását vagy auditálását.

  4. Naplógyűjtés — Kafka-t használják a mikroszolgáltatások naplóinak és metrikáinak gyűjtésére későbbi elemzés céljából.

Egyszerű Go producer példája a sarama könyvtár használatával:

package main

import (
    "github.com/Shopify/sarama"
    "log"
)

func main() {
    producer, err := sarama.NewSyncProducer([]string{"localhost:9092"}, nil)
    if err != nil {
        log.Fatal(err)
    }
    defer producer.Close()

    msg := &sarama.ProducerMessage{
        Topic: "events",
        Value: sarama.StringEncoder("Hello Kafka"),
    }

    partition, offset, err := producer.SendMessage(msg)
    if err != nil {
        log.Fatal(err)
    }
    log.Printf("Az üzenet a %d partícióban, %d offsetnél van tárolva\n", partition, offset)
}