在这篇文章中,我们将一起学习Apache Kafka的架构,ZooKeeper扮演的角色等等。

目标

在这个文章中,我们将学习Kafka基础知识、Kafka交付语义和配置,以实现不同的语义、激发Kafka集成和优化。在本系列的第1部分中,让我们理解Kafka的基本原理。在本系列的第2部分中,我们将进一步了解Kafka Producer及其配置的更多信息。

问题陈述

许多源和目标系统需要集成。通常,许多系统的集成涉及复杂的问题,比如处理许多协议、消息格式等。

消息系统处理高容量流。

用例

流处理

跟踪用户活动,日志聚合等

去耦系统

什么是Kafka?

Kafka是一个可水平扩展,容错,快速的消息传递系统。它是一个pub-sub模型,各种生产者和消费者可以在其中进行书写和阅读。它将源系统和目标系统分离。一些关键功能是:

扩展到数百个节点。

每秒可以处理数百万条消息。

实时处理(~10ms)。

关键术语

主题,分区和偏移

主题是特定的数据流。它与NoSQL数据库中的表非常相似。与NoSQL数据库中的表一样,该主题被拆分为分区,使主题能够分布在各个节点上。与表中的主键一样,主题具有每个分区的偏移量。您可以使用其主题,分区和偏移量唯一标识消息。

分区

分区使主题可以在群集中分布。分区是水平可伸缩性的并行度单位。一个主题可以跨节点进行多个分区扩展。

消息根据分区键分配给分区; 如果没有分区键,则随机分配该分区。使用正确的密钥来避免热点非常重要。

分区中的每个消息都被分配一个称为偏移量的增量ID。每个分区的偏移量是唯一的,消息只在分区内排序。写入分区的消息是不可变的。

Kafka架构图

ZooKeeper

ZooKeeper是一种用于管理分布式系统的集中式服务。它为其管理的分布式系统提供分层键值存储,配置,同步和名称注册服务。ZooKeeper充当集合层(将事物联系在一起)并确保Kafka集群的高可用性。Kafka节点也称为代理。重要的是要理解Kafka在没有ZooKeeper的情况下无法工作。

从ZooKeeper节点列表中,其中一个节点被选为领导者,其余节点跟随领导者。在ZooKeeper节点发生故障的情况下,其中一个关注者被选为领导者。强烈建议使用多个节点以实现高可用性,不建议使用超过7个节点。

ZooKeeper存储元数据和Kafka集群的当前状态。例如,主题名称,分区数量,复制,请愿的领导者详细信息以及消费者组详细信息等详细信息存储在ZooKeeper中。您可以将ZooKeeper视为项目经理,他负责管理项目中的资源并记住项目的状态。

关键事项:

管理经纪人名单。

当经纪人破产时选举经纪人领导。

发送有关新代理、新主题、已删除主题、丢失代理等的通知。

从Kafka0.10开始,消费者偏移不存储在ZooKeeper中,只有集群的元数据存储在ZooKeepr中。

ZooKeepr中的领导者处理所有写入和跟随者ZooKeepr只处理读取。

Broker

一个broker是由ZooKeeper管理的单个Kafka节点。一组brokers组成了Kafka集群。在Kaka中创建的主题基于分区,复制和其他因素分布在broker中。当broker节点基于ZooKeeper中存储的状态失败时,它会自动重新平衡群集,如果领导分区丢失,则其中一个跟随者请求被选为领导者。

您可以将broker视为负责分配任务的团队负责人。如果团队负责人不可用,那么经理负

责将任务分配给其他团队成员。

复制

复制正在另一个代理中提供分区的副本。复制使Kafka具有容错能力。当主题的分区在

多个代理中可用时,代理中的一个分区被选为领导者,而分区的其余复制是跟随者。

复制使Kafka即使在代理关闭时也具有容错能力。例如,主题B分区0存储在代理0和代理1中。生产者和消费者都只由领导者提供服务。在代理失败的情况下,来自另一个代理的分区被选为领导者,并且它开始为生产者和消费者群体提供服务。与领导同步的副本分区标记为ISR(同步副本)。

IT团队和Kafka集群类比

下图描绘了IT团队和Kafka集群的类比。

摘要

以下是Kafka核心组件的摘要。

ZooKeeper管理Kafka经纪人及其元数据。

代理是可水平扩展的Kafka节点,包含主题和复制。

主题是具有一个或多个分区的消息流。

分区包含每个分区具有唯一偏移量的消息。

复制使Kafka能够使用跟随分区进行容错。

看了这篇文章,您有什么收获吗?

长按二维码 ▲

订阅「架构师小秘圈」公众号

如有启发,帮我点个在看,谢谢↓

Kafka技术架构那些事儿相关推荐

  1. 5分钟带你了解Kafka的技术架构 | 技术头条

    戳蓝字"CSDN云计算"关注我们哦! 技术头条:干货.简洁.多维全面.更多云计算精华知识尽在眼前,get要点.solve难题,统统不在话下! 大家都知道 Kafka 是一个非常牛逼 ...

  2. 菜鸟实时数仓技术架构演进

    分享嘉宾:贾元乔 菜鸟 高级数据技术专家 内容来源:Flink Forward ASIA 出品平台:DataFunTalk 导读:在开源盛世的今天,实时数仓的建设已经有了较为成熟的方案,技术选型上也都 ...

  3. apache kafka技术分享系列(目录索引)--转载

    原文地址:http://blog.csdn.net/lizhitao/article/details/39499283 kafka开发与管理: 1)apache kafka消息服务 2)kafak安装 ...

  4. 今日头条技术架构到底有多牛?

    链接:https://blog.csdn.net/mucaoyx/article/details/84498468   今日头条创立于2012年3月,到目前仅4年时间.从十几个工程师开始研发,到上百人 ...

  5. 创业互联网公司如何搭建自己的技术架构

    适用范围 本文主要针对中小型互联网公司,特别适用于手机APP或者pc的后台架构,基本可以支撑5万日活.本文会对可能用到的相关技术进行技术选型的说明,以及技术的架构介绍. 技术指标 说一下一些技术指标的 ...

  6. 《大型网站技术架构》读书笔记之六:永无止境之网站的伸缩性架构

    首先,所谓网站的伸缩性,指不需要改变网站的软硬件设计,仅仅通过改变部署的服务器数量就可以扩大或者缩小网站的服务处理能力.在整个互联网行业的发展渐进演化中,最重要的技术就是服务器集群,通过不断地向集群中 ...

  7. 《大型网站技术架构》读书笔记四:瞬时响应之网站的高性能架构

    来源:http://www.cnblogs.com/edisonchou/p/3809839.html 此篇已收录至<大型网站技术架构>读书笔记系列目录贴,点击访问该目录可获取更多内容. ...

  8. Google大数据技术架构探秘

    Google是大数据时代的奠基者,其大数据技术架构一直是互联网公司争相学习和 研究的重点,也是行业大数据技术架构的标杆和示范. 1.谷歌的数据中心 谷歌已经建立了世界上最快.最强大.最高质量的数据中心 ...

  9. Kafka设计解析(六)- Kafka高性能架构之道

    原创文章,转载请务必将下面这段话置于文章开头处. 本文转发自技术世界,原文链接 http://www.jasongj.com/kafka/high_throughput/ 摘要 上一篇文章<Ka ...

最新文章

  1. 面向对象的5条基本设计原则----拜读大作后
  2. MFC控件的绘制与响应顺序——ZOrder
  3. vue使用sweetalert2弹窗插件
  4. 微信AI从识物到通用图像搜索的探索揭秘
  5. hash算法_到底什么是Hash?Hash算法的原理和实际应用讲解
  6. mysql修改语句_序言:MySQL与Navicat安装Tips
  7. 【Matlab】滤波器常用命令
  8. kayui进行添加_layui实现点击按钮添加一行的方法
  9. java mathrandom函数_java Math数学工具及Random随机函数
  10. mri计算机系统,MRI设备
  11. 创建list集合_Java 9新增的不可变集合
  12. 让计算机教育因云而变,阿里云正式发布云原生人才培养合作计划
  13. css颜色渐变 移动,CSS颜色渐变
  14. java sec_java.security文件
  15. C# int与byte之间转换的方法
  16. 计算机CPU核的位数,如何查cpu位数
  17. C. Alternating Sum(数论——等比数列公式与变换)
  18. js实现——鼠标单击事件-onclick和双击事件-ondblclick
  19. 分享电脑日常使用的小技巧
  20. java 软件开发面试宝典

热门文章

  1. 基础二维计算几何板子[预备知识]
  2. centos python2.7升级到3.7_centos系统升级python 2.7.3
  3. AcWing 397. 逃不掉的路(边双连通分量缩点成树 + 树链剖分乱搞)
  4. linux查看机器所有寄存器,linux系统下操作硬件寄存器
  5. c++ mqtt客户端_MQTT安全性设计详解
  6. html语言区别大小写吗,用HTML语言制作静态网页基础问题1.标注是否区分大小写?2.下 爱问知识人...
  7. linux备份svn仓库脚本,Centos详细搭建svn以及备份脚本
  8. spring boot + redis 实现网站限流和接口防刷功能
  9. Linux 文件系统常用命令:cat命令
  10. 服务应该去版本化,不管是微服务还是SOA