最近在作测试平台的开发过程当中,须要用到消息队列,在简单调研后选取了主流的kafka作为咱们平台的消息中间件,如下是对kafka的学习笔记。html
consumer group:消费者组,每一个consumer归属于一个groupjava
消息在同一个consumer group下的consumer间,实行负载均衡
消息在不一样consumer group下的consumer间,实行广播python
offset:偏移量,每条消息的惟一标识。apache
kafka中的每一条数据都有一对key和value,存放在磁盘上。通常不会被永久保留,而是在到达必定的数量或者时间后对最先写入的数据进行删除。bootstrap
Log compaction确保kafka将始终保留单个topic partition的数据日志中每一个key值的最后一个已知值。它给出在应用程序崩溃或系统故障后恢复状态,或者在操做维护期间从新启动应用程序后从新加载缓存这些场景的解决方法。
api
一个消息能够被多个consumer group消费,但只能被同一个group下的一个consumer消费。好处是能够同时提供离线和实时处理(离线和实时分属两个group,各自消费,互不影响)。缓存
kafka搭建: http://www.orchome.com/6服务器
kafka启动命令:架构
bin/kafka-server-start.sh config/server.properties &
建立topic:负载均衡
bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic test
查看topic:
bin/kafka-topics.sh --list --zookeeper localhost:2181
生产消息:
bin/kafka-console-producer.sh --broker-list localhost:9092 --topic test This is a message This is another message
消费消息:
#从头开始消费消息 bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test --from-beginning #从客户端启动后消费新到达的消息: bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test #指定消费者组,从该消费者组上次的偏移量开始消费 bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test --consumer.config config/consumer.properties
查看topic的分区、副本信息
bin/kafka-topics.sh --describe --zookeeper localhost:2181 --topic
kafka架构:
segment中,index和log文件的对应关系