docker安装kafaka

Apache Kafka 是一款开源的消息引擎系统

kafka的优点:
1.支持多个生产者和消费者
2.支持broker的横向拓展
3.副本集机制,实现数据冗余,保证数据不丢失
4.通过topic将数据进行分类
5.通过分批发送压缩数据的方式,减少数据传输开销,提高吞高量
6.支持多种模式的消息
7.基于磁盘实现数据的持久化
8.高性能的处理信息,在大数据的情况下,可以保证亚秒级的消息延迟
9.一个消费者可以支持多种topic的消息
10.对CPU和内存的消耗比较小
11.对网络开销也比较小
12.支持跨数据中心的数据复制
13.支持镜像集群

kafka的缺点:
1.由于是批量发送,所以数据达不到真正的实时
2.对于mqtt协议不支持
3.不支持物联网传感数据直接接入
4.只能支持统一分区内消息有序,无法实现全局消息有序
5.监控不完善,需要安装插件
6.需要配合zookeeper进行元数据管理
7.会丢失数据,并且不支持事务
8.可能会重复消费数据,消息会乱序,可用保证一个固定的partition内部的消息是有序的,但是一个topic有多个partition的话,就不能保证有序了,需要zookeeper的支持,topic一般需要人工创建,部署和维护一般都比mq高

1、下载镜像

docker pull wurstmeister/zookeeper
docker pull wurstmeister/kafka

2、先启动zookeeper

#单机方式
docker run -d --name zookeeper -p 2181:2181 -t wurstmeister/zookeeper

3、启动kafka

docker run  -d --name kafka -p 9092:9092 -e KAFKA_BROKER_ID=0 \
-e KAFKA_ZOOKEEPER_CONNECT=101.35.79.173:2181 \
-e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://101.35.79.173:9092 \
-e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 -t wurstmeister/kafka

注:101.35.79.173需要改为本机公网IP

4、创建一个topic

进入容器
docker exec -it  kafka /bin/bash
cd /opt/kafka_2.13-2.8.1/bin

#单机方式:创建一个主题
kafka-topics.sh  \
--create --zookeeper 101.35.79.173:2181  \
--replication-factor 1 --partitions 1 --topic mykafka

#添加消息
kafka-console-producer.sh --broker-list localhost:9092 --topic mykafka

#运行一个生产者
kafka-console-consumer.sh  \
--bootstrap-server localhost:9092 --topic mykafka --from-beginning