1.简介:
kafka于2010年12月发布的开源消息系统
一种分布式。基于发布订阅的消息系统
2.特点:
1.数据的持久化:通过O(1)的磁盘数据结构提供数据的持久化
2.高吞吐量:每秒百万级消息读写
3.分布式:扩展能力强
4.多客户端支持:java,php,python,c++
5.实时性:生产者生产的messgae立即被消费者可见
3.基本组件
broker 代表一个kafka节点
producer kafka消息的生产者,用来写数据
consumer kafka消息的消费者,用来读数据
topic: 对于消息的一个分组,例如小说分为都市类,玄幻类,修仙类,每一类相当于 一个topic,topic里的 每一篇小说相当于一条消息message,consumer(消费者)
可以针对自己感兴趣的topic进行订阅。
message:kafka数据的基本单位
Partition: 分区,相当于topic的物理实现一个topic分布在多个partition,partition分布在多个broker上
4.producer:
生产者可以发布消息到他指定的topic中,并指定在topic那些消息分配到那些分区
生产者直接把消息给对应分区的broker,不需要任何路由层
批处理发送,当消息累积到一定数量或等待一定时间后进行发送(可以配置)
两种模式(producer.type=sync(同步),async(异步))
1。同步:实时发送
2。异步:(达到一定条件才会发送,时间 数量)
consumer
如果一个consumer正在读一个partition,不允许其他consumer读数据
单个partition会维护消息的offset(偏移量),consumer需要自己维护offset
kafka是无状态的,体现在kafka不会维护consumer消费消息的offset