kafka
一. 简单认识kafka
消息队列的通信模式:
1.点对点模式:一个生产者生产的消息由一个消费者进行消费
点对点模式的优点,消费者主导消费速度,消费者拉取消息的频率可以由自己控制,但是消息队列是否有消息需要额外的线程去监控。
2.发布订阅模式:一个生产者或者多个生产者产生的消息能够被多个消费者同时消费。
发布订阅模型中,机器性能往往不一样,所以处理消息的能力也不一样,但是这种不同,消息队列感知不到,所以消费速度取决于推送的速度。
3.其他通讯模式:
多点广播-将消息发送到多个目标站点
集群通讯-集群类似于一个域(Domain),集群内部的队列管理器之间通讯时,不需要两两之间建立消息通道,而是采用cluster通道与其他成员进行通讯。
kafka由Linkedin公司开发,分布式,多分区、多副本,基于zookeeper的分布式消息流平台,也是一款开源的基于发布订阅模式的消息引擎系统。能够支撑海量数据的数据传递。在离线和实时的消息处理业务系统中,Kafka都有广泛的应用。Kafka将消息持久化到磁盘中,并对消息创建了备份保证了数据的安全。Kafka在保证了较高的处理速度的同时,又能保证数据处理的低延迟和数据的零丢失。http://kafka.apachecn.org/documentation.html
kafka特性:
高吞吐、低延迟、高伸缩、可扩展、持久性、可靠性、容错性、高并发
消息Message
kafka数据单元称为message,消息记录。
批次
一批消息,kafka分批写入消息
主题topic
一类消息,对消息进行分类,类似数据库中的表。
分区partition
主题可以被分为若干个分区,类似横向分表,同一个主题可以不在一台机器上。topic中的数据分割为一个或多个分区,每个主题至少一个分区,类似一个进程至少一个线程。每个分区中的数据使用多个文件进行存储。不同分区的数据是相对独立的,同一分区中的数据是有序存储的。如果有严格保证消费顺序关联性的场景,则将分区数设为1.
broker
一个独立的kafka服务器就被称为broker,broker接受来自生产者的消息,为消息设置偏移量,并提交消息到磁盘保存。
broker cluster
borker是集群的组成部分,分布式系统多采用选举raft算法。每个集群有一个broker当控制器。
副本replica
kakfa中消息的备份叫做副本replica(replication),副本的数量是可以配置的,kafka定义了两类副本:领导者副本(leader replica)和追随者副本(follower replica),所有写请求都通过Leader路由,数据变更会广播给所有follower,follower与leader保持数据同步。同样有选举制度。
这里与一般分布式集群主从系统有一个更新,在一般的ack=(0,1,all)同步机制之上,提出了一个ISR,OSR机制,刚开始所有副本都是ISR级别,但是在一定时间内,你同步不上就会被踢出一批队到OSR,之后若再次跟上leader进度则再给ISR权限。leader只会等ISR不会等OSR。
消费者和消费者群组 consumer group
生产者与消费者的关系就如同餐厅中的厨师和顾客之间的关系一样,一个厨师对应多个顾客,也就是一个生产者对应多个消费者,消费者群组(Consumer Group)指的就是由一个或多个消费者组成的群体。
偏移量 consumer offset
kafka存储分区的数据标识,分区文件顺序binary存储,offset记录数据对于第一条数据的磁盘相对位置。
重平衡rebalance
消费者组内某个消费者实例挂掉后,其他消费者实例自动重新分配订阅主题分区的过程。Rebalance 是 Kafka 消费者端实现高可用的重要手段。
kafka生产路线Ack
0==>就生产者无脑上传,不等回信。
1==>等leader回信。leader故障就凉凉。
-1(all)==>全等。
fka生产路线Ack
0==>就生产者无脑上传,不等回信。
1==>等leader回信。leader故障就凉凉。
-1(all)==>全等。