当前位置: 首页 > news >正文

Kafka 入门到起飞 - Kafka是怎么保证可靠性的呢

在这里插入图片描述

我们已经了解到,复习一下

  • 创建topic时,可以指定副本因子 repilication-factor = 3

    • 表示分区的副本数,包括Leader分区副本和follower分区副本
    • 不要超过broker的数量,尽量保证一个分区的副本均匀分散不同的broker上
    • 第一个副本通过轮询的方式分配broker,从broker列表中随机位置开始轮询(生成一个随机数,选定第一个broker,然后开始逐个轮询broker放副本)
    • 实现高可用
  • Leader 副本只有一个,负责读写,其他节点都是Follower副本,

  • Producer 只把消息发送到Leader分区,Follower副本负责从Leader同步数据

  • ISR 同步副本列表 (包含Leader)

    • 怎么样算同步呢
    • replica.lag.max.messages 默认4000条,Follower消息已经滞后Leader4000条,即踢出ISR,新版本已经取消该规则
    • replica.lag.max.ms 默认10000ms, 10s内Follower 还没有向Leader发送fetch请求,即踢出ISR
      • 新版本只通过该规则识别有效副本
      • 当Follower副本将Leader副本LEO之前的所有消息都同步时,认为该副本已经追赶上Leader副本
      • 更新该副本的lastCaughtUpTimeMs 最后拉取数据的时间戳
      • ReplicaManager 副本管理器 会启动一个定时任务
      • 定时任务定时监测 当前时间lastCaughtUpTimeMs 的差值 是否大于replica.lag.max.ms
      • 大于即说明当前副本失效,踢出ISR
    • 每条消息都带时间戳,生产者不带的话broker也会给消息生成时间戳,当查找消息时就是根据偏移了+时间戳
  • 为了保证可靠性,可以设置确认机制ack= all

    • Producer将消息发送给Leader
    • Leader会等到ISR中所有Follower同步数据发送ack
    • Leader 再commit,Leader再向Producer发送ack
    • 保证生产者发送的消息实际写入所有副本

什么情况会导致副本失效呢?

  • Follower副本进程卡住,一段时间内没有向Leader副本发起请求,比如Follower副本所在的broker内存满了,频繁发起Full GC,我们知道Full GC时会STW(stop the world ),啥也干不了了
  • Follower 副本进程同步过慢,网络或者IO开销过大或机器性能问题,导致Follower在一段时间内无法赶上Leader
  • 改变副本因子,比如增加一个副本,新增副本在同步Leader数据时,也会一直处于失效状态
  • Follower节点由于宕机下线了,后又上线,在追赶上Leader副本之前也处于失效状态
http://www.lryc.cn/news/125288.html

相关文章:

  • 数学建模(三)整数规划
  • 全面梳理Python下的NLP 库
  • 系统设计类题目汇总三
  • “深入解析JVM:探索Java虚拟机的内部工作原理“
  • VB+sql小型超市管理系统设计与实现
  • mysql面试
  • 3.1 Ansible 的使用和配置管理
  • 神经网络基础-神经网络补充概念-06-计算图
  • 【【STM32之GPIO】】
  • 【动画】p60动画蓝图、播放蒙太奇、打包
  • 去趋势化一个心电图信号、信号功率谱、低通IIR滤波器并平滑信号、对滤波器引起的延迟进行补偿研究(Matlab代码实现)
  • NTN(六) switchover
  • Ceph三个接口的创建
  • 接口测试和功能测试的区别
  • LeetCode 1572. 矩阵对角线元素的和
  • SQLSERVER 查询语句加with (NOLOCK) 报ORDER BY 报错 除非另外还指定了 TOP、OFFSET 或 FOR XML
  • 创建react native项目的笔记
  • Java自动化测试之Chrome网页爬取
  • boost下的asio异步高并发tcp服务器搭建
  • HCIP第五节------------------------------------------ospf
  • Golang下载安装
  • 工作时使用redis,kafka查阅的资料链接
  • 上传excel文件
  • leetcode 力扣刷题哈希表初尝试
  • Docker 本地镜像发布到私有仓库
  • 计算机网络和 Internet 的基本概念
  • 高并发数据抓取实战:使用HTTP爬虫ip提升抓取速度
  • CSS3 中新增了哪些常见的特性?
  • 简单认识excel篇章1
  • CentOS系统环境搭建(九)——centos系统下使用docker部署项目