kafka消息与同步机制


如上图所示:Producer根据指定的partition方法(默认round-robin、hash等),将消息发布到指定topic的partition里面;kafka集群接收到Producer发过来的消息后,将其持久化到硬盘,并保留消息指定时长(可配置),而不关注消息是否被消费;Consumer从kafka集群pull数据,并控制获取消息的offset。
下面讨论以下Kafka如何确保消息在producer和consumer之间的传输。producer与consumer有可能的delivery guarantee:

  • At most once 消息可能会丢,但绝不会重复传输
  • At least one 消息绝不会丢,但可能会重复传输
  • Exactly once 每条消息肯定会被传输一次且仅传输一次,很多时候这是用户所想要的

Continue reading "kafka消息与同步机制"

Kafka几个重要的配置总结

注意:配置基于Kafka 0.8.2.1

broker配置

#非负整数,用于唯一标识broker
broker.id 0

#kafka持久化数据存储的路径,可以指定多个,以逗号分隔
log.dirs /tmp/kafka-logs

#broker接收连接请求的端口
port 9092

#指定zk连接字符串,[hostname:port]以逗号分隔
zookeeper.connect

#单条消息最大大小控制,消费端的最大拉取大小需要略大于该值
message.max.bytes 1000000

#接收网络请求的线程数
num.network.threads 3

#用于执行请求的I/O线程数
num.io.threads 8

Continue reading "Kafka几个重要的配置总结"