Kafka 架构
Broker : 作为一个后台服务。
Producer和Consumer作为SDK,将SDK引入工程当中,从外部拿数据,通过Producer的sdk发送给broker,通过Consumer的SDK将数据拿到程序当中。
如何刷新整个集群的元信息(Producer如何维护缓存的整个集群Broker的元信息)?
Producer在向某个Broker发送消息失败之后,会主动触发刷新Broker元信息
Producer会周期性地刷新Broker缓存的信息
Consumer如何发现Broker?Consumer如何选择连接到Broker
会涉及到Topic和Partition
Topic&Partition
Topic
逻辑概念,同一个Topic的消息可分布在一个或多个节点(Broker)上
一个Topic包含一个或者多个Partition
每条消息都属于且仅属于一个Topic
Producer发布数据时,必须指定该消息发布到哪一个Topic
Consumer订阅消息时,也必须指定订阅哪个Topic的消息
Partition
物理概念,一个Partition只分布于一个Broker上(不考虑备份)
一个Partition物理上对应一个文件夹
一个Partition包含多个Segment(Segment对用户透明,用户无需感知)
一个Segment对应一个文件
Segment由一个个不可变记录组成
记录只会被append到Segment中,不会被单独删除或者修改
清除过期日志时,直接删除一个或多个Segment
默认kafka会将数据保存168小时。
Sync Producer(同步Producer)
低延迟
低吞吐率
无数据丢失
Aync Producer(异步Producer)
高延迟
高吞吐率
可能会有数据丢失