标签:
简单说kafka是一个高吞吐的分部式消息系统,并且提供了持久化。
kafka的架构
• producer:消息生存者
• consumer:消息消费者
• broker:kafka集群的server,负责处理消息读、写请求,存储消息
• topic:消息队列/分类
• Queue里面有生产者消费者模型
• broker就是代理,在kafka cluster这一层这里,其实里面是有很多个broker
• topic就相当于queue
• 图里没有画其实还有zookeeper,这个架构里面有些元信息是存在zookeeper上面的,整个集群的管理也和zookeeper有很大的关系
kafka的消息存储和生产消费模型
• 一个topic分成多个partition
• 每个partition内部消息强有序,其中的每个消息都有一个序号叫offset
• 一个partition只对应一个broker,一个broker可以管多个partition
• 消息不经过内存缓冲,直接写入文件
• 根据时间策略删除,而不是消费完就删除
• producer自己决定往哪个partition写消息,可以是轮询的负载均衡,或者是基于hash的partition策略
有两个重要特点:(1)利用了磁盘连续读写性能远远高于随机读写的特点;(2)并发,将一个topic拆分多个partition(kafka读写的单位是partition).
1.进入kafka2.10目录后,查看启动目录cat startkafka.sh
2.更改配置文件conf/server.properties,修改broker.id(每台唯一)及更改zookeeper的主机名,端口号不用变,修改执行权限:chmod +x ./bin/*
3.启动kafda:bash startkafka.sh
4.使用过程
创建topic 20160118
./bin/kafka-topics.sh --create --zookeeper node1:2181,node2:2181,node3:2181 --replication-factor 2 --partitions 2 --topic 20160118
./bin/kafka-topics.sh --zookeeper node1:2181,node2:2181,node3:2181 --describe --topic 20160118
查看tocpic的目录
./bin/kafka-topics.sh --list --zookeeper node1:2181,node2:2181,node3:2181(结果为20160118)
查看tocpic的具体信息
./bin/kafka-topics.sh --describe --zookeeper node1:2181,node2:2181,node4:2181
结果为:
Topic:20160118 PartitionCount:2 ReplicationFactor:2 Configs:
Topic: 20160118 Partition: 0 Leader: 2 Replicas: 2,0 Isr: 2,0
Topic: 20160118 Partition: 1 Leader: 0 Replicas: 0,1 Isr: 0,1
查看日志目录:ll /kafka-logs/
发送信息: bin/kafka-console-producer.sh --broker-list node1:9092,node2:9092,node3:9092 --topic 20160118
接收信息: bin/kafka-console-consumer.sh --zookeeper node1:2181,node2:2181,node3:2181 --topic 20160118
接收所有信息(包括之前发送的及未打开此命令时发送的消息):
bin/kafka-console-consumer.sh --zookeeper node1:2181,node2:2181,node3:2181 --topic 20160118 --from-beginning
标签:
原文地址:http://www.cnblogs.com/Mandylover/p/5143284.html