kafka权威指南读书心得

kafka特点:

1解耦性:生产者和消费者分离,生产者完全不需要关注生产的消息有多少消费者消费,什么时候消费完,消费者也只需通过制定端口和topic来消费数据就OK了

2与其它消息订阅系统相比(例如rabbit mq),同一条消息可以被不同分组的多个消费者消费,互不影响

3消息序列化到磁盘,不怕丢失,可以设置一个过期时间log.retention.hours/minutes/ms,解决数据量过多的问题(新版本kafka需要管理工具来改变默认参数)

4扩展性:增加broker扩展kafka服务器性能,一个broker失效消息会自动转移到其它broker上

 

 

zookeeper依赖性:保存kafka元数据,路径为zookeeper.host:2181/kafkadir(kafkadir是为了zookeeper集群可以共享给其它应用程序)

zookeeper群组:一致性协议,选举机制。一般奇数台zookeeper机器,3个或5个(2n-1和2n个机器都只能承受n个机器失效,所以选2n-1),

但是不建议超过7个,否则一致性协议导致整个群组性能降低

(一致性协议:ZBA算法-原子消息广播算法,群组的机器要启动时或者崩溃后要选举leader,启动后要leader通过广播消息和follower保持状态同步)

zookeeper配置:

datadir=/var/lib/zookeerper

port=2181

server.1=bigdata-01:2888:3888

server.2=bigdata-02:2888:3888

server.3=bigdata-03:2888:3888

 

kafk分区数选择:

根据数据量和吞吐量进行选择,

消费者把数据写入数据库的上限是50M/s,所以如果消费速率需求是1T,那么需要20个分区

生产者的生产效率通常大于消费者,可以多考虑一些吞吐量

每个broker的分区数量也有一个上限,过多分区会占用较多内存

 

kafka broker配置:所有broker的id在集群中必须唯一,每个kafka broker的配置包括所有brokers和相同的zookeeper connect

port=9092

broker.id=1

zookeeper.connect=bigdata-01:2181/kafkadir;bigdata-02:2181/kafkadir;bigdata-03:2181/kafkadir

 

port=9092

broker.id=2

zookeeper.connect=bigdata-01:2181/kafkadir;bigdata-02:2181/kafkadir;bigdata-03:2181/kafkadir

 

port=9092

broker.id=3

zookeeper.connect=bigdata-01:2181/kafkadir;bigdata-02:2181/kafkadir;bigdata-03:2181/kafkadir

 

消费kafka的偏移量offset可以选择提交到zookeeper或者kafka集群服务器,一般考虑放在kafka服务器减少zookeeper压力,

zookeeper虽然技术上可以实现但一般也不建议共享给其它应用程序,因为kafka对zookeeper群组的延迟比较敏感

 

你可能感兴趣的:(bigdata)