学习笔记-Kafka

Kafka
  一种分布式,基于发布/订阅消息系统,数据单位message,目标成为一个队列平台,不仅支持离线,还要支持在线
Kafka把数据往磁盘上写,但是在磁盘上存它的读写速度比内存快,这个依赖于预读和后写功能,但是这个预读和后写必须是按照顺序的方式,若没有顺序的方式优化的话,不存在什么预读和后写。
特点:
消息持久化(能落到磁盘)通过o(1)的磁盘数据结构提供数据的持久化
  1. 高吞吐量
  2. 分布式:扩展能力强
  3. 多客户端支持
  4. 实时性

基本组件
  1. Broker 每一台机器叫一个Broker
  2. Producer 日志消息的生产者,用来写数据
  3. Consumer 消息的消费者,用来读数据
  4. Topic 不同消费者制定Topic中去读,不同生产者往不同的Topic中写,一个Topic是由一个或多个Partition实现的
  5. Partition 在Topic基础上做了进一步区分分层,以文件夹的形式存在

Zookeeper 存储只kafka的Broker 和Consumer 的信息, 因为Broker和Consumer 之间存在一个负载均衡,依赖于Zookeeper,出现个别节点不稳定,会体现rebalance机制,但是Producer 和Broker不存在负载均衡

producer和Broker之间是一个push模式
consumer和Broker之间是一个pull模式

topic 分成多个partition的原因增加吞吐量

kafka 把更多的主导权交给了消费者(client 来保存各自的offset),kafka会保留该消息的所有信息,默认是7天,无论消费者是否消化消息,都会持久化一段时间

producer 有两种模式(producer.type=sync(同步),async(异步)):
  1. 同步模式 :实时
  2. 异步模式:达到一定条件(时间,数据量)

Consumer 和一个partition读数据,其它的Consumer是不允许再读数据的
Consumer Group 一个Consumer之间是不允许有重复的

partition 中对应多个segment ,segment 是partition内部的落地文件,要知道消息的消息号,使用二分法找到对应的segmentFile

kafka的交付保证:
at least once 策略:消息至少发送一次,如果消息未能接受成功,会出现重发的可能,保证消息不丢失,默认采用该策略,即在消费者端的处理顺序是获得消息—》处理消息—》保存位置。这可能导致一旦客户端挂掉,新的客户端接管时处理前面客户端已处理过的消息。
三种保证策略:
  1. At most once 消息可能会丢,但绝不会重复传输
  2. At least one。消息绝不会丢,但可能会重复传输
  3. Exactly once 每条消息肯定会被传输一次且仅传输一次

副本管理
  1. kafka将日志复制到指定服务器上(日志就是数据)
  2. 副本的单元是partition,正常情况下,每个分区有一个leader和0到多个follower,数据写的话只能写在leader上,读也是,针对partition 副本管理,如果一共有f+1个broker,允许挂掉f个
  3. ISR:kafka在zk动态维护了一个set(里面表示所有副本,都是跟上了leader的节奏),下面两种情况ISR需要删除
    1. 消息延迟
    2. 数据落后太多
kafka用两个条件保证活着
  1. Zookeeper注册的session还在且可以维护
  2. 如果是follower则能紧跟随leader,且不能落后太远

kafka使用in sync (ISR)来代替或者,如果follower卡住或者落后太远,则leader将移除同步列表中的in syn,至于落后多远由replica.lag.max.messages配置,如果设为4,表明follower不能落后于leader超过3个消息,否则从ISR中删除,判定为挂掉


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值