Kafka架构介绍|青训营笔记

简介: 本文主要讲解了kafka作为分布式消息队列的整体架构,主要从:1.zookeeper;2.broker;3.controller选举;4.coorinator进行介绍

课程资料

课程链接:https://live.juejin.cn/4354/yc_Kafka/preload

学员手册:https://juejin.cn/post/7126813033602482190/#heading-54

课程TTP:https://bytedance.feishu.cn/file/boxcn9G9NlIy8VPrcpqmYYNlDsb

完整手册:https://bytedance.feishu.cn/docx/doxcnECGEFkCKYqbxaDipK1qrVf

一、消息队列概述

消息队列

image-20220809133811754

应用场景

  • MQ消息通道:异步解耦、削峰填谷、发布订阅、高可用

image-20220809134009898

  • EventBridge数据总线

    • 事件源:将云服务、自定义应用、SaaS应用等应用程序产生的事件消息发布到事件集
    • 事件集:存储接收到的事件消息,根据事件规则将消息路由到事件目标
    • 事件目标:消费事件消息

image-20220809134204933

  • Data Platfrom 数据流平台

    • 提供批/流数据处理能力
    • 各类组件提供各类Connect
    • 提供Streaming/Function能力
    • 根据数据schema灵活的进行数据预处理能力

image-20220809134656063

二、Kafka详解

Kafka架构介绍

image-20220809135033681

Zookeeper

image-20220809135151135

  • 选举机制:Paxos机制
  • 提供一致性:写入强一致性、读取会话一致性
  • 提供可用性:一半以上节点存活即可读写
  • 提供功能:watch机制、持久/临时节点能力

Borker

image-20220809135357743

  • 若干个Broker节点组成Kafka集群
  • Broker作为消息的接受模块,使用React网络模型进行消息数据的接受
  • Broker作为消息的持久化模块,进行消息的副本复制以及持久化
  • Broker作为高可用模块,通过副本间的Failover进行高可用保证

Controller选举

image-20220809135720105

  • Broker启动会尝试去zk中注册controller节点
  • 注册上controller节点的broker即为controller
  • 其余broker会watch controller节点,节点出现异常进行重新注册

Controller的作用

image-20220809135937217

  • Broker重启/宕机时,负责副本的Failover操作
  • Topic创建/删除时,负责Topic meta信息广播
  • 集群扩缩容时,进行状态控制
  • Partition/Replica 状态机维护

Coordinator

image-20220809140216861

  • 负责topic-partition与consumer的负载均衡
  • 根据不同的场景提供不同的分配策略

Kafka高可用

kafka副本ISR机制

image-20220809140623406

  • AR:已经分配的所有副本
  • OSR:很久没有同步数据的副本
  • ISR:一直在同步数据的副本

kafka写入Ack机制

  • Ack=1:leader副本写入成功,priducer即认为写成功
  • Ack=0:producer发送后即为成功
  • Ack=-1:ISR中所有的副本都成功,producer才认为写成功

kafka副本同步

image-20220809141011783

  • LEO:日志最末尾的数据
  • HW:ISR中最小的LEO作为HW,HW的消息为Consumer可见的消息

kafka副本选举

image-20220809141136153

  • Clean选举:优先选取lsr中的副本为leader,如果lsr中无可用副本,则partition不可用
  • Unclean选举:优先选取lsr中的副本为leader,如果lsr中无可用副本,则选择其他存活副本
相关文章
|
1月前
|
网络协议 Java 应用服务中间件
框架源码私享笔记(01)Tomcat核心架构功能 | 配置详解
本文首先分享了《活出意义来》一书序言中的感悟,强调成功如同幸福,不是刻意追求就能得到,而是全心投入时的副产品。接着探讨了Tomcat的核心功能与架构解析,包括网络连接器(Connector)和Servlet容器(Container),并介绍了其处理HTTP请求的工作流程。文章还详细解释了Tomcat的server.xml配置文件,涵盖了从顶级容器Server到子组件Connector、Engine、Host、Context等的配置参数及作用,帮助读者理解Tomcat的内部机制和配置方法。
|
5月前
|
前端开发 测试技术 数据处理
Kotlin教程笔记 - MVP与MVVM架构设计的对比
Kotlin教程笔记 - MVP与MVVM架构设计的对比
168 4
|
5月前
|
前端开发 JavaScript 测试技术
Kotlin教程笔记 - 适合构建中大型项目的架构模式全面对比
Kotlin教程笔记 - 适合构建中大型项目的架构模式全面对比
82 3
|
5月前
|
存储 前端开发 Java
Kotlin教程笔记 - MVVM架构怎样避免内存泄漏
Kotlin教程笔记 - MVVM架构怎样避免内存泄漏
59 2
|
3月前
|
Java 网络安全 开发工具
Git进阶笔记系列(01)Git核心架构原理 | 常用命令实战集合
通过本文,读者可以深入了解Git的核心概念和实际操作技巧,提升版本管理能力。
|
5月前
|
消息中间件 缓存 架构师
关于 Kafka 高性能架构,这篇说得最全面,建议收藏!
Kafka 是一个高吞吐量、高性能的消息中间件,关于 Kafka 高性能背后的实现,是大厂面试高频问题。本篇全面详解 Kafka 高性能背后的实现。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
关于 Kafka 高性能架构,这篇说得最全面,建议收藏!
|
5月前
|
XML 前端开发 Android开发
Kotlin教程笔记(80) - MVVM架构设计
Kotlin教程笔记(80) - MVVM架构设计
|
5月前
|
XML 前端开发 Android开发
Kotlin教程笔记(80) - MVVM架构设计
Kotlin教程笔记(80) - MVVM架构设计
|
5月前
|
消息中间件 存储 负载均衡
【赵渝强老师】Kafka的体系架构
Kafka消息系统是一个分布式系统,包含生产者、消费者、Broker和ZooKeeper。生产者将消息发送到Broker,消费者从Broker中拉取消息并处理。主题按分区存储,每个分区有唯一的偏移量地址,确保消息顺序。Kafka支持负载均衡和容错。视频讲解和术语表进一步帮助理解。
|
4月前
|
弹性计算 API 持续交付
后端服务架构的微服务化转型
本文旨在探讨后端服务从单体架构向微服务架构转型的过程,分析微服务架构的优势和面临的挑战。文章首先介绍单体架构的局限性,然后详细阐述微服务架构的核心概念及其在现代软件开发中的应用。通过对比两种架构,指出微服务化转型的必要性和实施策略。最后,讨论了微服务架构实施过程中可能遇到的问题及解决方案。