Kafka 简介 + 学习笔记

消息队列

先说明消息队列是什么:
[图片]

  • 亚马逊:
    消息队列是一种异步的服务间通信方式,适用于微服务架构。消息在被处理和删除之前一直存储在队列上。每条消息仅可被一位用户处理一次。消息队列可被用于分离重量级处理、缓冲或批处理工作以及缓解高峰期工作负载。

  • 我的理解:
    消息队列是一种进程/线程之间的通信方式,它是异步的、服务间解耦的、削峰填谷的,它是“永远在线”技术的基础。

  • 常用的消息队列有:
    Kafka、RabbitMQ、RocketMQ、ActiviMQ

Kafka是什么

概要

Apache Kafka 是一个开源流处理软件平台,由 LinkedIn 开发并捐赠给 Apache 软件基金会,用 Scala 和 Java 编写。 该项目旨在提供一个统一、高吞吐量、低延迟的平台来处理实时数据源。

它具有以下几个特性:

  • 实时捕获数据
  • 可持久存储(但一般会设置过期)
  • 实时或者回顾性地处理数据

系统架构

图片引用了CSDN@Data跳动的博客:https://blog.csdn.net/weixin_43958974/article/details/122591425,大家有兴趣可以看看他对kafka的理解。
[图片]

常用概念:

  • Broker
  • Controller
  • Partitions
  • Consumer
  • Producer
  • Topic
  • Zookeeper (3.0之后逐步要淘汰)

Broker

Broker是单个 Kafka server,Kafka 集群中的一台服务器就是一个 broker。
Broker从生产者接收消息,为其分配偏移量Offset,并将消息提交到磁盘存储。
偏移量是一个唯一的整数值,Kafka 在生成每条消息时都会递增并添加到该消息中。 偏移量对于在发生故障或中断时保持数据一致性至关重要,因为消费者在发生故障后使用偏移量返回到最后消费的消息。
Broker会向消费者提供已存到磁盘的信息。
[图片]

Controller

Kafka Broker 通过直接或间接共享信息形成集群。 在 Kafka 集群中,一个Broker充当Controller。 Controller负责管理分区和副本的状态,并执行管理任务,例如重新分配分区和注册处理程序以获取有关更改的通知。

尽管 Controller 服务运行在 Kafka 集群中的每个 Broker 上,但在任何时间点只能有一个 Broker 处于活动状态(当选)。 Broker Controller会在 Kafka 服务器启动时创建并启动。

Producer\Consumer

生产者是将事件发布(写入)到 Kafka 的客户端应用程序,而消费者是订阅(读取和处理)这些事件的客户端应用程序。
在 Kafka 中,生产者和消费者彼此完全解耦且互不可知,这是实现 Kafka 闻名的高可扩展性的关键设计元素。
[图片]

Topic

事件被组织并持久化存储在Topic中,Topic类似于文件系统中的文件夹,事件是该文件夹中的文件(占磁盘)。
Kafka中的Topic始终是多生产者、多订阅者:一个主题可以有零个、一个或多个向其写入事件的生产者,以及零个、一个或多个订阅这些事件的消费者。
主题中的事件可以根据需要随时读取——与传统消息传递系统不同,事件在使用后不会被删除。(保留事件的事件是可配置的)。
Kafka 的性能在数据大小方面实际上是恒定的,因此长时间存储数据是完全可以的。但要考虑磁盘的容量。
[图片]

Partition

Topic是存在多个Partition上的:这意味着一个Topic分布在不同broker的多个“桶”上。这种数据的分布式放置对于可扩展性非常重要,因为它允许client同时从多个代理读取数据或向多个broker写入数据。
同一分区内是顺序的:当新事件发布到主题时,它实际上会附加到主题的分区之一。 具有相同事件键(例如,客户或车辆 ID)的事件被写入同一分区,并且 Kafka 保证给定主题分区的任何消费者将始终按照与写入的顺序完全相同的顺序读取该分区的事件。
[图片]

副本

为了使您的数据具有容错性和高可用性,每个主题都可以复制,甚至可以跨地理区域或数据中心进行复制,因此始终有多个代理拥有数据副本,以防出现问题时,您希望 对经纪人进行维护等等。 常见的生产设置是复制因子为 3,即始终存在数据的三个副本。 此复制是在主题分区级别执行的。

Lag

消息堆积的数量

Zookeeper(逐步淘汰)

Zookeeper 存储 Kafka 代理的元数据。 它充当代理和消费者之间的联络人,使分布式进程能够通过称为 znode 的数据寄存器的公共集中式命名空间相互通信。

随着 Apache Kafka 3.0及后续版本 的推出,Zookeeper 正在被删除。 许多用户抱怨必须管理单独的系统以及 Zookeeper 造成的单点故障。 展望未来,Kafka 代理本质上将承担 Zookeeper 的功能,将元数据存储在本地文件中。 控制器接管注册代理并从集群中删除失败的代理,并且在启动时代理仅从控制器读取已更改的内容,而不是完整状态。 这使得 Kafka 能够以更少的 CPU 消耗支持更多的分区。

合理地选择主题和分区

分区数量=消费者的线程数量
如果是自己单机测试的话,最优解是设置为机器CPU的核数

保证消息的顺序传递和容错性

同一partition内的消息是有序的,不同partition的消息是无序的。
MA中如果要保证同一个任务的数据是顺序传递的,会把同一个任务的消息分到同一个分区中。

Kafka高级工具

TODO: 探索Kafka生态系统中的相关工具和组件,如Kafka Connect和Kafka Streams,分享它们的作用和使用方式,以及如何将Kafka与其他技术进行集成

故障处理

常用kafka的命令:开源 kafka 使用指南

  • 查看kafka状态
  • 通过Grafanna监控,查看堆积情况(lag)
  • 手动启动一个消费者线程,通过查看消费的日志,来判断消费是否正常:适用于机器日志因时间过长被清理的情况。
  • 常用命令:https://blog.csdn.net/asd136912/article/details/103735037

进一步学习的资料:

kafka官网:https://kafka.apache.org/34/documentation.html
配置持久化时间:(默认为7天)https://blog.csdn.net/neweastsun/article/details/127109802

参考资料:

https://aws.amazon.com/message-queue/?nc1=h_ls
https://blog.csdn.net/neweastsun/article/details/127109802
https://www.upsolver.com/blog/apache-kafka-architecture-what-you-need-to-know

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/53125.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

vue权限管理——按钮控制

1.按钮根据后端返回数据决定展示与否 根据right中的数据对应增删改查按钮 const menuList [{id: 1, path:/uploadSpec,authName: "上传spec", icon: User, children:[], rights:[view,add,edit,delete]},{id: 2, path:/showSpec, authName: "Spec预览",…

edge浏览器进行qq截图过保爆决过程

edge浏览器进行qq截图过保解决过程 参考:电脑截屏曝光特别高怎么解决? - 知乎 问题展示 饱和度过高,刺眼 1. 在chrome地址栏输入chrome://flags/ 2. 在页面的搜索栏搜索force color profile 3. 在选项中选择所对应的颜色管理。&#xff08…

简单着色器编写(中下)

这篇我们来介绍另一部分函数。 static unsigned int CreateShader(const std::string& vertexShader, const std::string& fragmentShader) {unsigned int program glCreateProgram();unsigned int vs CompileShader(GL_VERTEX_SHADER,vertexShader);unsigned int f…

数据库为什么使用B+树而不是B树做索引

🏆作者简介,黑夜开发者,CSDN领军人物,全栈领域优质创作者✌,CSDN博客专家,阿里云社区专家博主,2023年6月CSDN上海赛道top4。 🏆数年电商行业从业经验,历任核心研发工程师…

34、springboot切换内嵌Web服务器(Tomcat服务器)与 生成SSL证书来把项目访路径从 HTTP 配置成 HTTPS

知识点1:springboot切换内嵌Web服务器(Tomcat服务器) 知识点2:生成SSL证书来把项目访路径从 HTTP 配置成 HTTPS ★ Spring Boot默认的Web服务器(Tomcat) ▲ 基于Servlet的应用(使用Spring MV…

使用VSCode SSH实现公网远程连接本地服务器开发的详细教程

文章目录 前言1、安装OpenSSH2、vscode配置ssh3. 局域网测试连接远程服务器4. 公网远程连接4.1 ubuntu安装cpolar内网穿透4.2 创建隧道映射4.3 测试公网远程连接 5. 配置固定TCP端口地址5.1 保留一个固定TCP端口地址5.2 配置固定TCP端口地址5.3 测试固定公网地址远程 前言 远程…

把Android手机变成电脑摄像头

一、使用 DroidCam 使用 DroidCam,你可以将手机作为电脑摄像头和麦克风。一则省钱,二则可以在紧急情况下使用,比如要在电脑端参加一个紧急会议,但电脑却没有摄像头和麦克风。 DroidCam 的安卓端分为免费的 DroidCam 版和收费的 …

【每日一题】1267. 统计参与通信的服务器

【每日一题】1267. 统计参与通信的服务器 1267. 统计参与通信的服务器题目描述解题思路 1267. 统计参与通信的服务器 题目描述 这里有一幅服务器分布图,服务器的位置标识在 m * n 的整数矩阵网格 grid 中,1 表示单元格上有服务器,0 表示没有…

python进行数据分析:数据预处理

六大数据类型 见python基本功 import numpy as np import pandas as pd数据预处理 缺失值处理 float_data pd.Series([1.2, -3.5, np.nan, 0]) float_data0 1.2 1 -3.5 2 NaN 3 0.0 dtype: float64查看缺失值 float_data.isna()0 False 1 …

Kotllin实现ArrayList的基本功能

前言 上次面试时,手写ArrayList竟然翻车,忘了里面的扩容与缩容的条件,再次实现一次,加深印象 源码讲了什么 实现了List列表和RandomAccess随机访问接口List具有增删改查功能,RandomAccess支持下标访问内部是一个扩容…

java使用ExcelExportUtil.exportBigExcel导出大文件(非分页)

网上看到很多使用这个方法处理的时候,大多使用的分页进行查询,但是当遇到特殊的产品需求,比如A类型数据,多条记录就显示多行,B类型的要求存在多条记录时,就进行汇总后只显示一条,这就导致无法使…

Oracle给表空间添加容量

假如给SYSTEM表空间添加 查看文件位置和容量:Select * FROM DBA_DATA_FILES; FILE_NAME就是要修改的文件 查看每一个表空间的容量,单位MB: SELECT t.tablespace_name, round(SUM(bytes / (1024 * 1024)), 0) ts_size FROM dba_tablespaces…

大数据扫盲(2): 数据分析BI与ETL的紧密关系——ETL是成功BI的先决条件

着业务的发展每个企业都将产生越来越多的数据,然后这些数据本身并不能直接带来洞察力并产生业务价值。为了释放数据的潜力,数据分析BI(商业智能)成为了现代企业不可或缺的一部分。然而,在数据分析的背后,有…

详解多目标跟踪(MOT)算法中的Kalman滤波

Kalman滤波算法的原理可以参考: 卡尔曼滤波理解 以sort算法为例, 算法中使用到了卡尔曼滤波。 其作用是:通过t-1帧的结果, 通过卡尔曼滤波的predict过程得到目标在t帧的先验估计, 同时在t帧通过检测模型得到检测结果&…

【Linux网络】TCP UDP socket HTTP webSocket之间的区别

目录 一、OSI & TCP/IP模型 二、几者之间的关系 三、HTTP 四、Socket 五、WebSocket 5.1、WebSocket 优点 一、OSI & TCP/IP模型 首先我们要了解OSI七层模型,和预支对应的TCP/IP 四层的模型。 用下面的图可以看出,TCP UDP 工作在传输层&…

前端面试:【新技术与趋势】WebAssembly、Serverless、GraphQL

在不断演进的技术领域中,WebAssembly、Serverless和GraphQL都是备受关注的新技术和趋势。它们改变了软件开发、部署和数据传输的方式,为开发者提供了更多的选择和灵活性。 1. WebAssembly(Wasm): 简介: Web…

Word导出创建Adobe PDF其中emf图片公式马赛克化及文字缺失

软件版本 Word 2021 Visio 2019 Adobe Acrobat Pro 2020 问题描述 公式马赛克化,是指在Word中使用MathType编辑的公式,然后在Visio中使用图片(增强型图元文件)形式得到的粘贴对象,效果如下 文字缺失,是指Word导出→创建Adobe P…

一文学会lua脚本

文章目录 0.前言背景应用 1. 学习大纲1. 学习基本语法:2. 理解函数和模块:3. 深入数据结构:4. 高级特性和技巧:5. 实践项目: 2. Lua脚本2.1 学习基本语法2.2 理解函数和模块2.3 深入数据结构2.4 高级特性和技巧 3. 高级…

Hbase分布式安装

一、环境准备 启动zookeeper 启动hdfs 二、安装 上传安装包 1、解压 tar -zxf hbase-2.2.2-bin.tar.gz -C /opt/installs/2、更名 mv hbase-2.2.2/ hbase3、配置环境变量 [roothadoop11 conf]# vim /etc/profile export HBASE_HOME/opt/installs/hbase export PATH$PATH:$…

如何使用Linux文件系统?

为了让你更好地理解Linux文件系统,我要告诉你一些非常非常重要的知识点,确保你能够顺利地在这个庞大的世界中游走。 首先,你需要了解Linux中的基本概念。这个系统不像你的手机或者电脑,它是一个“文本”驱动的操作系统。这里的所…