您的位置:首页 > 其它

kafka基础概念及安装使用

2018-01-23 22:40 337 查看

kafka基础概念及安装使用

概念

kafka是一款开源、轻量级、分布式、可分区、具有复制备份replicated、基于zookeeper协调管理的分布式流平台的消息系统

主题(topic), kafka将一组消息抽象归纳为一个主题,一个主题是消息的一个分类;生产者将消息发送到特定主题,消费者订阅主题或主题某些分区进行消费

消息: 通信的基本单位,由一个固定长度的消息头+可变长度消息体组成

分区(partition):kafka将一组消息归纳为一个主题,每个主题又被分为一个或多个分区,每个分区由一系列有序、不可变消息组成,是一个有序队列,可修改,分区数理论越多吞吐量越大

副本(replica):一个分区可以有一个至多个副本,一个leader副本(负责处理客户端读写请求),其它为follow副本(负责同步数据),每个副本逻辑上抽象为一个日志(log)对象;分区副本和日志对象是一一对应

topic kafka对消息保存时根据Topic进行归类

kafka只能保证一个分区内消息的有序性,不能保证夸分区顺序性。每条消息追加到相应分区,是顺序写磁盘,效率高

偏移量:发布到分区的消息会被追加到日志文件,每条消息在日志文件中的位置对于一个按序递增偏移量,偏移量是一个分区下严格有序的逻辑值,并按序消费,不允许随机读写

日志段:一个日志被华为多个日志段,日志对象分片的最小单位

代理(broker):一个kafka实例,对应一个集群不用的唯一标识id

生产者(producer)将消息发送给代理

消费者和消费组,每个消费者都属于一个特定消费组,group.id配置消费组id,不指定消费组则为默认消费组,client.id表示消费者id;消费者和消费组用来实现广播和单播(同一个主题的一条消息,只能被同一个消费组下的一个消费者消费,不同消费组消费者可同时消费该消息)

每一个group中的每一个consumer实例只会消费某一个或多个特定分区的数据,一个分区同一个时刻也只能被某一个特定的consumer消费,这样导致一个consumer group里面consumer无法均衡,举个例子:如果一个group中消费者少于分区数量,那么会有消费者会消费同同topic多个分区,如果多于,会有部分消费者无法消费topic下任何消息。如果任何一个消费者离开,会触发从新平衡,从新分配



安装(utuntu16)

zookeeper

docker pull wurstmeister/zookeeper


kafka

docker pull wurstmeister/kafka


使用

运行zk容器

docker run -d --name zookeeper -p 2181:2181 --volume /home/data:/home/data -t wurstmeister/zookeeper


运行kafka容器

docker run -d --name kafka -p 9092:9092 \
--link zookeeper \
--env KAFKA_ZOOKEEPER_CONNECT=zookeeper:2181 \
--env KAFKA_ADVERTISED_HOST_NAME=kafka所在宿主机的IP \
--env KAFKA_ADVERTISED_PORT=9092 \
--volume /home/data:/home/data \
wurstmeister/kafka

docker run -d --name kafka -p 9092:9092 --link zookeeper --env KAFKA_ZOOKEEPER_CONNECT=zookeeper:2181 --env KAFKA_ADVERTISED_HOST_NAME=192.168.237.129 --env KAFKA_ADVERTISED_PORT=9092 --volume /home/data:/home/data -t wurstmeister/kafka




- 进入kafka终端

docker exec -it ${CONTAINER ID} /bin/bash
docker exec -it 544d7ed3d793 /bin/bash


测试启动生产者

cd /opt/kafka_2.12-1.0.0
bin/kafka-topics.sh --create --zookeeper zookeeper:2181 --replication-factor 1 --partitions 1 --topic test


查看当前的 topic 列表

bin/kafka-topics.sh --list --zookeeper zookeeper:2181


运行一个消息生产者

bin/kafka-console-producer.sh --broker-list localhost:9092 --topic test


运行一个消息消费者

bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test --from-beginning


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  kafka