Sobes.tech
Junior — Middle

Kafka ilə mikroxidmətlər arasında əsas qarşılıqlı əlaqə nümunələri hansılardır?

sobes.tech Süni İntellekt

AI-dan cavab

Kafka ilə mikroxidmətlərin qarşılıqlı əlaqəsinin əsas nümunələri:

  1. Hadisəyə əsaslanan memarlıq (EDA) — mikroxidmətlər Kafka-da hadisələr yayımlayır, digər mikroxidmətlər bu hadisələrə abunə olur və onlara reaksiya verir. Bu, xidmətlər arasında asinxron mesaj mübadiləsidir və əlaqəliliyi azaldır.

  2. Əmr və sorğu məsuliyyətlərinin ayrılması (CQRS) — əmr və sorğular fərqli mikroxidmətlər tərəfindən işlənir və Kafka vəziyyət dəyişikliklərinin əmr və ya hadisələrini ötürmək üçün istifadə olunur.

  3. Hadisə mənbəyi (Event Sourcing) — mikroxidmətin bütün vəziyyət dəyişiklikləri Kafka-da hadisələr ardıcıllığı kimi saxlanılır, bu da vəziyyətin bərpasına və ya auditə imkan verir.

  4. Logların toplanması — Kafka mikroxidmətlərdən loglar və metrikləri toplamaq üçün istifadə olunur və sonradan analiz üçün.

Sadə Go istehsalçısının nümunəsi, sarama kitabxanası istifadə edilərək:

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("Mesaj, %d partiyada, %d offset-də saxlanılır\n", partition, offset)
}