初识Kafka

162 阅读2分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第26天,点击查看活动详情

前言

因为最新做的项目有用到Kafka,所以打算系统的学下,作为开篇,先用了解下为啥要学kafka,再使用docker简单的搭建一个玩下。

为啥要学kafka

和其他MQ一样,kafka主要用于系统间解耦合、削峰填谷、流量控制等,除此之外还具备流处理能力。

简单搭建

  1. 拉取镜像(不指定版本就是最新的)
docker pull wurstmeister/zookeeper
docker pull wurstmeister/kafka
  1. 启动zookeeper
docker run --platform linux/amd64  -d --name zookeeper -p2181:2181 wurstmeister/zookeeper

笔者使用的是mac m1所以指定了--platform linux/amd64

可以使用docker run --help查看

  • -d:--detach Run container in background and print - container ID
  • -p:--publish list Publish a container's port(s) to the host,绑定容器端口到宿主端口
  • --name: string Assign a name to the container,指定容器的名字
  1. 启动kafka
docker run -d --name kafka -p 9092:9092 -e KAFKA_BROKER_ID=0 -e KAFKA_ZOOKEEPER_CONNECT=docker.for.mac.host.internal:2181/kafka -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://docker.for.mac.host.internal:9092 -e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 wurstmeister/kafka
  • -e, --env list Set environment variables,设置环境变量。
    • KAFKA_BROKER_ID=0 指定kafka的BROKER_ID

    • KAFKA_ZOOKEEPER_CONNECT={host-ip}:{zookeeper-port}/kafka 配置zookeeper管理kafka的路径

    • KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://{host-ip}:9002 把kafka的地址端口注册给zookeeper,供客户端使用的服务地址

    • KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 kafka的服务监听地址

  1. 运行生产者
➜  ~ docker exec -it kafka bash
root@f63b515995b2:/# cd /opt/kafka_2.13-2.8.1/bin/
root@f63b515995b2:/opt/kafka_2.13-2.8.1/bin# ./kafka-console-producer.sh --broker-list localhost:9092 --topic first-topic
# 输入hello发送消息
>hello
  1. 启动消费者
➜  ~ docker exec -it kafka bash
root@f63b515995b2:/# cd /opt/kafka_2.13-2.8.1/bin/
root@f63b515995b2:/opt/kafka_2.13-2.8.1/bin# ./kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic first-topic --from-beginning
hello

可以看到接收到了"hello"。

参考

MacOS docker安装kafka