kafka应用之路
1、在技术选型上,为什么要使用kafka,不使用rocketmq?
kafka是分布式日志存储系统.
1)kafka更容易大数据系统结合,例如我们用到的storm。
2)kafka比较热门,文档比较全
3)能够做到真正的保证数据不会丢失,不会重复,即使在节点down掉的情况下。
2、介绍kafka
3、kafka安装
4、kafka使用(kafka的实践)
二、需要注意的问题:
1、kafka的consumer数量不能超过partition的数量;另外如果有同一个groupid的consumer去消费消息,这个groupid的消息就会被消费掉从而读不到消息。
2、kafka可以持久化一段时间的数据,通过下面的参数设置。可以设置基于时间的,也可以设置基于文件大小的
3、Kafka读取特定消息的时间复杂度为O(1),即与文件大小无关,所以删除过期文件与提高Kafka性能无关。
4、Kafka会为每一个Consumer Group保留一些metadata信息——当前消费的消息的position,也即offset。这个offset由Consumer控制。正常情况下Consumer会在消费完一条消息后递增该offset。当然,Consumer也可将offset设成一个较小的值,重新消费一些消息。因为offet由Consumer控制,所以Kafka broker是无状态的,它不需要标记哪些消息被哪些消费过,也不需要通过broker去保证同一个Consumer Group只有一个Consumer能消费某一条消息,因此也就不需要锁机制,这也为Kafka的高吞吐率提供了有力保障。
5、kafka使用默认的副本因子是1,也就是没有副本,因为:
在kafka的开发者看来副本似乎是一个附加的东西,没有大量的使用,这有很大的缺点:slave不活跃,吞吐量受到严重影响,它需要的精确的手动配置等
三、遇到的问题
1、无法发送或者消费消息