将生产者和消费者解耦
Kafka是一款基于发布与订阅的消息系统。文件系统或数据库提交日志用来提供所有事务的持久记录,通过重放这些日志可以重建系统的状态。具备数据故障保护和性能伸缩能力。
Kafka的数据单元被称为消息,可以把消息看作数据库里的一条记录。消息由字节数组组成。每个消息有一个元数据,键,也是字节数组。
批次就是一组消息,这些消息属于同一个主题和分区。消息分批次传输可以减少网络开销。
消息通过主题分类,主题好比数据库的表,主题可以被分为好几个分区,一个分区就是一个提交日志,消息以追加的方式写入分区,根据先进先出顺序读取。
一个主题的数据看作一个流,流是一组生产者移动到消费者的数据
生产者在默认情况下,吧消息均衡地分布到主题的所有分区上,不关心被写到哪个分区。通过消息键和分区器实现分布到具体分区。
消费者读取信息,订阅一个或多个主题。通过检查消息的偏移量来区分已经读取过的消息。偏移量是另一种元数据,它是一个不断递增的整数值。一个分区只能被一个消费者使用。
一个独立的服务器broker,接收来自生产者的信息,为信息设置偏移量,并提交信息到磁盘保护。为消费者提供服务,对读取分区做出相应,返回信息。
每个集群都有一个broker充当集群控制器的角色。控制器负责管理工作,把分区分配给broker和监控broker。一个分区从属于一个broker,一个分区可以分配给多个broker,也就是消息冗余。
Kafka需要安装Java和Zookeeper,Kafka使用Zookeeper保存元数据,消费者通过Zookeeper读取元数据分区偏移量,然后在broker读取数据。
原文:https://www.cnblogs.com/chenshaowei/p/12513688.html