kafka概念及基本原理

Kafka作为一个高效的消息中间件,提供解耦、冗余存储、流处理等功能。其高吞吐、低延迟特性源于数据先写入操作系统页缓存再持久化到磁盘。系统包括producer、broker、consumer和zk集群,消息存储按topic和partition组织,保证分区内的消息顺序性。副本机制用于容灾,ISR保证一定程度的消息同步。生产者发送消息涉及拦截器、序列化、分区器和RecordAccumulator。消费者通过消费者组消费消息,支持分区再均衡。KafkaProducer线程安全,而kafkaConsumer非线程安全。
摘要由CSDN通过智能技术生成

kafka:

作用:
1.消息系统: 系统解耦,冗余存储, 流量削峰, 缓冲,异步通信,扩展性,可恢复性
2.存储系统 将消息持久化到磁盘
3.流式处理平台

高吞吐,低延时

kafka本质上每次写入操作其实都是把数据写入到操作系统的页缓存中, 然后操作系统将页缓存中的数据刷回到磁盘中

在这里插入图片描述

producer 生产者, broker 相当于kafka服务进程, consumer 消费者, zk集群

过程:

Producer -生产者发送消息到broker–> broker(将消息存储到磁盘) —> consumer(订阅,消费消息)

broker服务代理节点

主题topic/分区partion 主题可以有多个分区, 一个分区只属于单个主题
同一toptic下的分区,消息内容是不同的,分区在存储层上可以看做是一个追加的log文件。 会有一个特定的偏移量offset, offset在分区中是唯一的,不能跨分区使用,kafka能够保证在分区层面,消息的顺序性,不能保证toptic的顺序性。 消息被发送到broker之前,会根据分区规则选择存储到对应哪个分区

分区: 分区引入了多副本,提升容灾能力。 同一分区的不同副本保存的是同样的消息,副本是 一主多从的, leader负责读写操作,follower副本只负责与leader同步, 当leader出现故障的时候,follower会发起选举新的leader。可以实现故障自动转移,当某个broker失效的时候仍然能够提供服务

因为副本的follower同步leader,因此跟leader之间会存在一定程度的消息滞后,不同步。 保持一定程度同步的follower 组成了一个组ISR, 只有在ISR中才能参与leader的选举, 否则不能参与。 但是由于一定的消息同步延迟,因此在leader挂掉,消息没有被follower及时同步完成时,发起leader选举后的新leader可能存在一定的消息丢失。 OSR是滞后过多的副本, AR所有副本

在创建分区或者分区上线需执行leader选举。按照AR集合中的顺序查找,第一个存活的副本,并且这个副本在ISR中,一个愤怒的AR集合在分配的时候已经制定,不发生重分配,则副本顺序保持不变,分区的ISR顺序可能发生变化

如果由于网络波动等原因,一个节点时而同步,时而滞后,可能发生频繁的isr的变动

kafka使用ISR, 是因为, 如果同步复制,则对性能消耗过大,如果异步复制,则可能丢失消息,使用ISR,在异步情况下,保证消息的滞后性不超过一定数量,这样做一个平衡

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值