Kafka是个什么东西?消息队列的特点?
消息列队的特点:
生产者消费者模式
先进先出(FIFO)顺序保证
可靠性保证
自己不丢数据
消费者不丢数据:“至少一次,严格一次”
kafka的架构:
producer:消息生产者
consumer:消息消费者
broker:kafka集群的server,构成集群的每个节点,负责处理消息读、写请求,存储消息
topic:消息队列/分类,如果让topic变成强有序的,就可以让每个topic里面有partition分区
partition:组成队列的分区,强有序的
zookeeper:kafka需要需要zk存储单元
kafka安装:(kafka最多配置6台,一般3台)
1,在windows环境下解压kafka_2.10-0.8.2.1.zip,然后把解压的文件直接整个上传到系统
2,修改config/server.properties (几个服务器节点都需要)
broker.id=2 #每个服务器节点ID不能一样
log.dirs=/kafka-logs #接收的数据写入的目录
zookeeper.connect=node2:4180,node3:4180,node4:4180
3,发现启动文件bin没有启动权限,给bin文件夹下所有都赋予权限:chmod +x -R ./bin
4,启动zookeeper集群: ./bin/kafka-server-start.sh –daemon config/server.properties &
5,启动kafka集群 ,启动之前先把kafka_2.10-0.8.2.1目录下的startkafka.sh赋予启动权限chmod 755 startkafka.sh
6,启动kafka(每个节点都执行):./startkafka.sh
测试:
//输入端--生产者
./bin/kafka-console-producer.sh --topic 20170419 --broker-list node2:9092,node3:9092,node4:9092
//接收端--消费者
./bin/kafka-console-consumer.sh --zookeeper node2:4180,node3:4180,node4:4180 --topic 20170419
生产者输入消息,消费者同步输出消息,成功。
创建topic为20170419 的消息队列
./bin/kafka-topics.sh --create --zookeeper node2:4180,node3:4180,node4:4180 --topic 20170419 --partitions 2 --replication-factor 2
查看集群中已有的topic消息队列:
./bin/kafka-topics.sh --list --zookeeper node2:4180,node3:4180,node4:4180
查看topic为20170419的队列信息
./bin/kafka-topics.sh --describe --zookeeper node2:4180,node3:4180,node4:4180 --topic 20170419