Rumah > pembangunan bahagian belakang > Golang > 'Faktor replikasi tidak sah' dalam pelanggan Convergence Kafka Go

'Faktor replikasi tidak sah' dalam pelanggan Convergence Kafka Go

王林
Lepaskan: 2024-02-14 10:30:09
ke hadapan
912 orang telah melayarinya

汇合 Kafka Go 客户端中的“无效复制因子”

editor php Xigua hari ini membawakan anda artikel tentang "faktor replikasi tidak sah" dalam pelanggan Kafka Go. Kafka ialah platform pemprosesan strim teragih berprestasi tinggi, berskala, manakala Go ialah bahasa pengaturcaraan yang ringkas dan cekap. Artikel ini akan menumpukan pada masalah "faktor replikasi tidak sah" yang berlaku dalam klien Kafka Go, meneroka punca dan penyelesaiannya serta membantu pembaca memahami dengan lebih baik dan menangani cabaran teknikal biasa ini. Faktor replikasi yang tidak sah boleh menyebabkan ketidakkonsistenan data dan kemerosotan prestasi, jadi penting bagi pengguna Kafka memahami cara menangani isu ini. Mari kita meneroka secara mendalam bersama-sama!

Kandungan soalan

Saya baru mengenali Kafka dan cuba memulakan projek saya. Saya mempunyai ini dalam docker-compose.yml saya

version: '3'

services:
  zookeeper:
    image: confluentinc/cp-zookeeper:7.3.0
    container_name: zookeeper
    environment:
      ZOOKEEPER_CLIENT_PORT: 2181
      ZOOKEEPER_TICK_TIME: 2000

  broker:
    image: confluentinc/cp-kafka:7.3.0
    container_name: broker
    depends_on:
      - zookeeper
    ports:
      - 9092:9092
    environment:
      KAFKA_BROKER_ID: 1
      KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
      KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://kafka:9092,PLAINTEXT_HOST://localhost:29092
      KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: PLAINTEXT:PLAINTEXT,PLAINTEXT_HOST:PLAINTEXT
      KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1
      KAFKA_TRANSACTION_STATE_LOG_MIN_ISR: 1
      KAFKA_TRANSACTION_STATE_LOG_REPLICATION_FACTOR: 1
Salin selepas log masuk

Kemudian saya menjalankan fail main.go saya dengan pengeluar dan pengguna serta beberapa topik olok-olok.

package main

import (
    "fmt"
    "log"
    "time"

    "github.com/confluentinc/confluent-kafka-go/kafka"
)



func main()  {
    topic := "HVSE"
    p, err := kafka.NewProducer(&kafka.ConfigMap{
        "bootstrap.servers": "localhost:9092",
        "client.id": "foo",
        "acks": "all",
    })
    go func() {
        consumer, err := kafka.NewConsumer(&kafka.ConfigMap{
            "bootstrap.servers":    "localhost:9092",
            "group.id":             "foo",
            "auto.offset.reset":    "smallest",
        })

        if err != nil {
            log.Fatal(err)
        }

        err = consumer.Subscribe(topic, nil)

        if err != nil {
            log.Fatal(err)
        }

        for {
                ev := consumer.Poll(100)
                // fmt.Println(ev)
                switch e := ev.(type) {
                case *kafka.Message:
                        fmt.Printf("consumed message from queue: %s\n", string(e.Value))
                case *kafka.Error:
                        fmt.Printf("%v\n", e)
                        // return
                // default:
                //      fmt.Printf("Ignored %v\n", e)
                }
        }
    }()

    deliverch := make(chan kafka.Event, 10000)
    for {
        err = p.Produce(&kafka.Message{
            TopicPartition: kafka.TopicPartition{Topic: &topic, Partition: kafka.PartitionAny},
            Value: []byte("FOO"),
        },
            deliverch,
        )
        if err != nil {
            log.Fatal(err)
        }
    
        <- deliverch
        time.Sleep(time.Second * 1)
    }
}
Salin selepas log masuk

Jika saya menyahkomen nilai lalai saya akan masuk ke dalamnya.

Jika tidak, saya mendapat ralat ini dalam konsol.

2023/09/26 13:45:05 Broker: Invalid replication factor
exit status 1
Salin selepas log masuk

Bekas kafka dan Zookeeper saya sedang berjalan.

Saya menukar fail docker-compose.yml tetapi ia tidak membantu. Saya mendapati pengguna saya.Events() tiada tetapi saya tidak faham mengapa ini berlaku

Penyelesaian

Saya menyalin kod anda dan ia betul tetapi masalah dalam compose.yml hanya melaraskan ADVERTISED_LISTENERS

bukan ini:

KAFKA_ADVERTISED_LISTENERS:PLAINTEXT://kafka:9092,PLAINTEXT_HOST://localhost:29092
Salin selepas log masuk

Gunakan ini:

KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://broker:29092,PLAINTEXT_HOST://localhost:9092
Salin selepas log masuk

Atas ialah kandungan terperinci 'Faktor replikasi tidak sah' dalam pelanggan Convergence Kafka Go. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:stackoverflow.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan