合作机构:阿里云 / 腾讯云 / 亚马逊云 / DreamHost / NameSilo / INWX / GODADDY / 百度统计
和 RabbitMQ 类似,Kafka(全称 Apache Kafka)是一个分布式发布-订阅消息系统。
自 Apache 2010 年开源这个顶级实用项目以来,至今已有十数年,Kafka 仍然是非常热门的一个消息中间件,在互联网应用里占据着举足轻重的地位。
甚至,技术圈一度将 Kafka 评为消息队列大数据领域中的最强王者!
Kafka 以其速度快(ms 级的顺序写入和零拷贝)、性能高(TB级的高吞吐量)、高可靠(有热扩展,副本容错机制能力)和高可用(依赖Zookeeper作分布式协调)等特点闻名于世,它非常适合消息、日志和大数据业务的存储和通信。
本文接下来将会从下载安装,配置修改,收发消息等理论和实践入手,带大家一起探索 kafka 的核心组件,以及业务中常见的数据消费问题。
由于 kafka 需要 JDK 环境来收发消息,并通过 ZooKeeper 协调服务,将 Producer,Consumer,Broker 等结合在一起,建立起生产者和消费者的订阅关系,实现负载均衡。
所以安装 kafka 之前,我们需要先:
网上安装教程很多,而本文主要探讨 kafka,所以就不再这里给出 JDK 和 zk 的详细安装步骤了。
安装 Kafka 时,主要有以下两种方式(更推荐使用 docker 安装):
# 拉取镜像,默认最新版本
docker pull bitnami/kafka
# 创建网络环境,保证zk和kafka在同一个网络中
docker network create kafka-network
# 运行zookeper
docker run -d --name zookeeper --network kafka-network bitnami/zookeeper:latest
#运行kafka,其中:环境变量KAFKA_CFG_ZOOKEEPER_CONNECT指定ZooKeeper的连接信息,KAFKA_CFG_ADVERTISED_LISTENERS是Kafka对外的访问地址
docker run -d --name kafka --network kafka-network \
-e KAFKA_CFG_ZOOKEEPER_CONNECT=zookeeper:2181 \
-e KAFKA_CFG_ADVERTISED_LISTENERS=PLAINTEXT://localhost:9092 \
-p 9092:9092 \
bitnami/kafka:latest
TOP