go 操作kafka包 sarama 使用(一)
截止当前时间,github上golang操作kafka的包主要有两个:
- Shopify/sarama starts 5.7k
- confluentinc/confluent-kafka-go starts 2k
saram 使用纯go语言编写, confluent-kafka-go 这是包装了c的api
相关术语:
-
Broker
Kafka集群包含一个或多个服务器,这种服务器被称为broker
-
Topic
每条发布到Kafka集群的消息都有一个类别,这个类别被称为Topic。(物理上不同Topic的消息分开存储,逻辑上一个Topic的消息虽然保存于一个或多个broker上但用户只需指定消息的Topic即可生产或消费数据而不必关心数据存于何处)
-
Partition
Partition是物理上的概念,每个Topic包含一个或多个Partition.
-
Producer
负责发布消息到Kafka broker
-
Consumer
消息消费者,向Kafka broker读取消息的客户端。
-
Consumer Group
每个Consumer属于一个特定的Consumer Group(可为每个Consumer指定group name,若不指定group name则属于默认的group)。
环境:
go version | sarama version |
---|---|
go1.13.5 linux/amd64 | github.com/Shopify/sarama v1.26.1 |
a、 搭建zookeeper集群:
https://blog.csdn.net/luslin1711/article/details/105701958
b、搭建kafka集群
使用docker-compose
version: '3'
services:
broker1:
image: wurstmeister/kafka
restart: always
container_name: broker1
network_mode: host
environment:
KAFKA_BROKER_ID: 1
KAFKA_ZOOKEEPER_CONNECT: 127.0.0.1:2181,127