confluent-5.0.0搭建kafka集群环境(三实例)

本文介绍了如何在环境中准备并使用confluent-5.0.0来搭建一个包含zookeeper、kafka和schema-registry组件的Kafka集群。详细步骤包括解压部署包、配置各个组件(如zookeeper的日志打印配置和kafka的数据目录初始化)、启动服务以及通过kafka-manager和schema-registry-ui进行可视化管理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

环境准备

服务器:

服务器 部署组件
dragonlicat zookeeper kafka schema-registry
dragonlicat02 zookeeper kafka schema-registry
dragonlicat03 zookeeper kafka schema-registry

部署软件包:confluent-oss-5.0.0-2.11.tar.gz
kafka可视化界面:kafka-manager-2.0.0.2【CMAK-2.0.0.2
schema可视化界面:schema-registry-ui 【schema-registry-ui
部署目录: /appdata/
zookeeper数据目录:/appdata/confluent-data/zookeeper-data
kafka 数据目录:/appdata/confluent-data/kafka-data

部署配置

解压部署包

#dragonlicat dragonlicat02 dragonlica03
tar -zxf confluent-oss-5.0.0-2.11.tar.gz -C /appdata
cd /appdata/confluent-5.0.0
ls -lrt

总用量 12
drwxr-xr-x  2 root root 4096 4月   4 22:48 bin
drwxr-xr-x 17 root root 4096 4月   4 22:48 etc
drwxr-xr-x  3 root root   21 4月   4 22:48 lib
-rw-r--r--  1 root root  871 4月   4 22:48 README
drwxr-xr-x  2 root root   21 4月   4 22:48 sbin
drwxr-xr-x  6 root root   71 4月   4 22:48 share
drwxr-xr-x  2 root root  313 4月   4 22:48 src

配置文件明细

  • zookeeper 配置文件目录:confluent-5.0.0/etc/kafka/zookeeper.properties
  • kafka 配置文件目录:confluent-5.0.0/etc/kafka/server.properties
  • zookeeper kafka 日志配置文件:confluent-5.0.0/etc/kafka/log4j.properties
  • schema-registry配置文件目录:confluent-5.0.0/etc/schema-registry/schema-registry.properties
  • schema-registry 日志配置文件目录:confluent-5.0.0/etc/schema-registry/log4j.properties

zookeeper组件配置

zookeeper配置文件
#dragonlicat dragonlicat02 dragonlica03
# The number of milliseconds of each tick
tickTime=2000
# The number of ticks that the initial
# synchronization phase can take
initLimit=10
# The number of ticks that can pass between
# sending a request and getting an acknowledgement
syncLimit=5
# the directory where the snapshot is stored.
# do not use /tmp for storage, /tmp here is just
# example sakes.
dataDir=/appdata/confluent-data/zookeeper-data
# the port at which the clients will connect
clientPort
### 如何在Go语言中使用 Confluent-Kafka-Go 库 #### 安装Confluent-Kafka-Go库 为了能够顺利地使用`confluent-kafka-go`库,首先需要确保已经安装了该库以及其依赖项。可以通过以下命令来安装这个包: ```bash go get github.com/confluentinc/confluent-kafka-go/kafka ``` 需要注意的是,由于此客户端依赖于C++版本的librdkafka库,因此还需要单独安装它。对于不同的操作系统有不同的安装方法[^2]。 #### 创建Kafka生产者实例并发送消息 下面是一个简单的例子展示怎样创建一个Kafka生产者的实例并向指定主题发布一条消息: ```go package main import ( "fmt" "log" "github.com/confluentinc/confluent-kafka-go/kafka" ) func main() { p, err := kafka.NewProducer(&kafka.ConfigMap{ "bootstrap.servers": "localhost:9092", }) if err != nil { log.Fatalf("Failed to create producer: %s", err) } defer p.Close() go func() { for e := range p.Events() { switch ev := e.(type) { case *kafka.Message: if ev.TopicPartition.Error != nil { fmt.Printf("Delivery failed: %v\n", ev.TopicPartition) } else { fmt.Printf("Delivered message to %v\n", ev.TopicPartition) } default: fmt.Println(ev) } } }() topic := "test-topic" value := []byte("Hello from confluent-kafka-go!") err = p.Produce(&kafka.Message{ TopicPartition: kafka.TopicPartition{Topic: &topic, Partition: kafka.PartitionAny}, Value: value, }, nil) if err != nil { log.Printf("Produce error: %v", err) } p.Flush(15 * 1000) } ``` 这段代码展示了如何配置连接到本地Kafka集群(`localhost:9092`)的一个生产者,并向名为`test-topic`的主题发送了一条字符串形式的消息。此外还设置了事件监听器用于处理消息传递的结果反馈。 #### 构建Kafka消费者接收数据 这里给出一段用来订阅特定主题并将接收到的数据打印出来的消费端程序片段: ```go package main import ( "context" "fmt" "os" "os/signal" "time" "github.com/confluentinc/confluent-kafka-go/kafka" ) func main() { consumer, err := kafka.NewConsumer(&kafka.ConfigMap{ "bootstrap.servers": "localhost:9092", "group.id": "myGroup", "auto.offset.reset": "earliest", }) if err != nil { panic(err) } topics := []string{"test-topic"} consumer.SubscribeTopics(topics, nil) ctx, cancel := context.WithCancel(context.Background()) signals := make(chan os.Signal, 1) signal.Notify(signals, os.Interrupt) go func() { sig := <-signals fmt.Printf("\nCaught signal %v: terminating...\n", sig) cancel() }() run := true for run { select { case <-ctx.Done(): run = false default: ev := consumer.Poll(100) if ev == nil { continue } switch e := ev.(type) { case *kafka.Message: fmt.Printf("Consumed message on topic-partition %v/%d at offset %v:\n%s\n", e.TopicPartition.Topic, e.TopicPartition.Partition, e.TopicPartition.Offset, string(e.Value)) case kafka.AssignedPartitions: fmt.Fprintf(os.Stdout, "Assigned Partitions: %+v\n", e.Partitions) case kafka.RevokedPartitions: fmt.Fprintf(os.Stdout, "Revoked Partitions: %+v\n", e.Partitions) case kafka.Error: fmt.Fprintf(os.Stderr, "Error: %v\n", e) default: fmt.Printf("Ignored %v\n", e) } } time.Sleep(time.Second / 3) } consumer.Close() } ``` 上述脚本实现了基本的功能——启动后会持续轮询来自所关注主题的新消息直到捕获到中断信号为止;期间任何到达的信息都会被立即显示出来。同时支持动态调整分配给当前消费者的分区列表变化情况的通知机制。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值