介绍
kafka在设计之初的时候 开发人员们在除了消息中间件以外,还想吧kafka设计为一个能够存储数据的系统,有点像常见的非关系型数据库,比如说NoSql等。除此之外 还希望kafka能支持持续变化,不断增长的数据流, <b>可以发布和订阅数据流</b>,还可以对于这些数据进行保存<br>也就是说kafka的本质 是一个数据存储平台,流平台 , 只是他在做消息发布,消息消费的时候我们可以把他当做消息中间件来用。<br>而且kafka在设计之初就是采用分布式架构设计的, 基于集群的方式工作,且<b>可以自由伸缩</b>,所以 kafka构建集群 非常简单<br>
概念
Broker(服务器)
AMQP里协议的概念一样,就是消息中间件所在的服务器
Topic(主题)
每条发布到Kafka集群的消息都有<b>一个类别,这个类别被称为Topic</b>。<br>(物理上不同Topic的消息 分开存储,逻辑上一个Topic的消息虽然保存于一个或多个broker上,<br>但用户只需指定消息的Topic即可生产或消 费数据而不必关心数据存于何处)<br>
Partition(分区)
物理概览。存放数据!一个topic可对应多个分区。
Producer(生产者)
往kafka发送数据的服务端
Consumer(消费者)
消费kafka数据的服务端
Consumer Group(消费者组)
每个Consumer属于一个特定的Consumer Group<br>(可为每个Consumer 指定group name,若不指定group name则属于默认的group)。<br>
数据隔离
offset(偏移量)
kafka用来标记消息被消费的标识。也可以理解为:每个消息都带有的标识(数字、递增)<br>
消息丢失;重复消费
重置offset时,需要暂停消费
系统概念
AR
所有的副本(Assigned Repllicas)
ISR
同步的副本(In-Sync Replicas)