Kafka系列(一)【消息队列、Kafka的基本概念、Kafka的工作机制、Kafka可满足的需求、Kafka的特性、Kafka的应用场景】

kafka系列 一

    • 一、消息队列
      • 1. 消息队列的来源
      • 2. 什么是消息队列
      • 3. 消息队列主要有哪些作用
    • 二、Kafka的基本概念
      • 代理、生产者、消费者、消费者组
      • 主题、分区、副本、记录
    • 三、了解 Kafka的工作机制-生产消息/消费消息
    • 四、Kafka可满足的需求
    • 五、Kafka的特性
    • 六、Kafka的场景

转自《Kafka并不难学!入门、进阶、商业实战》

一、消息队列

1. 消息队列的来源

在高并发的应用场景中,由于来不及同步处理请求,接收到的请求往往会发生阻塞。
例如,大量的插入、更新请求同时到达数据库,这会导致行或表被锁住,最后会因为请求堆积过多而触发“连接数过多的异常”(TooMany Connections)错误。
因此,在高并发的应用场景中需要一个缓冲机制,而消息队列则可以很好地充当这样一个角色。消息队列通过异步处理请求来缓解系统的压力。

2. 什么是消息队列

“消息队列”(Message Queue,MQ)从字面来理解,是一个队列,拥有先进先出(FirstInputFirst Output,FIFO)的特性。它主要用于不同进程或线程之间的通信,用来处理一系列的输入请求。
消息队列采用异步通信机制。即,消息的发送者和接收者无须同时与消息队列进行数据交互,消息会一直保存在队列中,直至被接收者读取。每一条消息记录都包含详细的数据说明,包括数据产生的时间、数据类型、特定的输入参数。

3. 消息队列主要有哪些作用

在实际的应用中,消息队列主要有以下作用。

  1. 应用解耦:多个应用可通过消息队列对相同的消息进行处理,应用之间相互独立,互不影响;
  2. 异步处理:相比于串行和并行处理,异步处理可以减少处理的时间;(不需要等待响应)
  3. 数据限流:流量高峰期,可通过消息队列来控制流量,避免流量过大而引起应用系统崩溃;
  4. 消息通信:实现点对点消息队列或聊天室等。

二、Kafka的基本概念

Kafka 是一个分布式实时数据流平台,可独立部署在单台服务器上,也可部署在多台服务器上构成集群。它提供了发布与订阅功能。用户可以发送数据到 Kafka 集群中,也可以从Kafka集群中读取数据。

代理、生产者、消费者、消费者组

  1. 代理 (Broker)

在Kafka集群中,一个Kafka进程(Kafka进程又称为 Kafka实例)被称为一个代理(Broker)节点。代理节点是消息队列中的一个常用概念。通常,在部署分布式 Kafka 集群时,一台服务器上部署一个Kafka 实例。

  1. 生产者 (Producer)

在Kafka 系统中,生产者通常被称为 Producer。
Producer 将消息记录发送到 Kafka 集群指定的主题(Topic)中进行存储,同时生产者(Producer)也能通过自定义算法决定将消息记录发送到哪个分区(Partition)。

  1. 消费者(Consumer)

消费者(Consumer)从 Kafka 集群指定的主题(Topic)中读取消息记录。在读取主题数据时,需要设置消费组名(Groupd)。如果不设置,则 Kafka 消费者会默认生成一个消费组名称。

  1. 消费者组(Consumer Group)

消费者程序在读取 Kafka 系统主题 (Topic)中的数据时,通常会使用多个线程来执行。一个消费者组可以包含一个或多个消费者程序,使用多分区和多线程模式可以极大提高读取数据的效率。

主题、分区、副本、记录

  1. 主题 (Topic)

Kafka 系统通过主题来区分不同业务类型的消息记录。
例如,用户登录数据存储在主题 A 中,用户充值记录存储在主题 B 中,则如果应用程序只订阅了主题A,而没有订阅主题 B,那该应用程序只能读取主题A 中的数据。

  1. 分区(Partition)

每一个主题(Topic)中可以有一个或者多个分区(Partition)。在 Kafka 系统的设计思想中,分区是基于物理层面上的,不同的分区对应着不同的数据文件。
Kafka 通过分区(Partition)来支持物理层面上的并发读写,以提高Kafka 集群的吞吐量
每个主题(Topic)下的各分区(Partition)中存储数据的具体流程在这里插入图片描述每个分区(Partition)内部的消息记录是有序的,每个消息都有一个连续的偏移量序号(Offset)
一个分区只对应一个代理节点 (Broker),一个代理节点可以管理多个分区。

  1. 副本(Replication)

在 Kafka 系统中,每个主题 (Topic)在创建时会要求指定它的副本数,默认是 1。通过副本(Replication)机制来保证 Kafka 分布式集群数据的高可用性。

  1. 记录(Record)

被实际写入到 Kafka 集群并且可以被消费者应用程序读取的数据,被称为记录(Record)。每条记录包含一个键(Key)、值 (Value)和时间戳(Timestamp)

三、了解 Kafka的工作机制-生产消息/消费消息

Kafka 作为一个消息队列系统,其核心机制就是生产消息和消费消息。
在Kafka 基本结构中,生产者(Producer)组件和消费者(Consumer)组件互不影响,但又是必须存在的。缺少生产者和消费者中的任意一方,整个Kafka 消息队列系统将是不完整的。

  • 生产者 (Producer)负责写入消息数据。将审计日志、服务日志、数据库、移动 App 日志,以及其他类型的日志主动推送到 Kafka 集群进行存储。

  • 消费者(Consumer)负责读取消息数据。例如,通过 Hadoop 的应用接口、Spark 的应用接口、Storm 的应用接口、ElasticSearch 的应用接口,以及其他自定义服务的应用接口,主动拉取 Kafka 集群中的消息数据

另外,Kafka 是一个分布式系统,用 Zookeeper 来管理、协调 Kafka集群的各个代理(Broker)节点。当 Kafka 集群中新添加了一个代理节点,或者某一台代理节点出现故障时,Zookeeper服务将会通知生产者应用程序和消费者应用程序去其他的正常代理节点读写。

四、Kafka可满足的需求

  1. 高吞吐量

日常生活中所使用的支付宝、微信、QQ 这类软件的用户量非常庞大,每秒产生的数据流量也非常巨大。面对这类场景,若要实时地聚合消息日志,必须具有高吞吐量才能支持高容量事件流。

  1. 高可用队列

分布式消息队列系统都具有异步处理机制。另外,分布式消息队列系统一般都拥有处理大量数据积压能力,以便支持其他离线系统的定期数据加载。

  1. 低延时

实时应用场景对时延的要求极为严格。耗时越少,则结果越理想。这意味着,设计出来的系统必须拥有低延迟处理能力。

  1. 分布式机制

系统还需具有支持分区、分布式、能实时处理消息等特点,并能在机器出现故障时保证数据不丢失。

五、Kafka的特性

  1. 异步生产数据

从Kafka 0.8.2起,生产者 (Producer)写数据时不再区分同步和异步,所有的操作请求均以异步的方式发送,这样大大地提高了客户端写数据的效率。
异步方式将数据批量的发送到 Kafka 不同的代理 (Broker)节点因此也减少了 Kafka 服务端的资源开销。这种方式在与 Kafka 系统进行网络通信时,能够有效地减少等待时间。

  1. 偏移量迁移
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

六、Kafka的场景

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

漏洞挖掘 | 任意密码重置 + 存储型XSS

本文由掌控安全学院 - 老板来一份烧鹅饭 投稿 还是老样子,打开谷歌镜像,搜索site:edu.cn指定域名,搭配关键字登陆,注册,忘记密码,等等,或者xxx系统比较容易挖出通杀。 逻辑漏洞挖掘思路 1.登陆…

大带宽服务器托管的特点和考虑因素

很多公司和企业对于使用大带宽服务器的需求和存储不一样,为了满足不同的用户需求,大带宽服务器托管是个不错的选择,小编为您整理发布大带宽服务器托管的特点和要考虑的因素。 大带宽服务器托管是一种服务器托管服务,其主要特点是…

【数据分享】1929-2023年全球站点的逐年平均降水量(Shp\Excel\免费获取)

气象数据是在各项研究中都经常使用的数据,气象指标包括气温、风速、降水、湿度等指标,说到常用的降水数据,最详细的降水数据是具体到气象监测站点的降水数据! 有关气象指标的监测站点数据,之前我们分享过1929-2023年全…

【图形学】投影和消隐简介

投影 正交投影 对于物体上任意一点的三维坐标P(x,y,z),投影后的三维坐标为 P ′ ( x ′ , y ′ , z ′ ) P^\prime(x^\prime,y^\prime,z^\prime) P′(x′,y′,z′),那么正交投影的方程为 { x ′ x y ′ y z ′ 0 \begin{cases} x^\primex\\y^\primey\\z^\prime0 \end{case…

2 月 7 日算法练习- 数据结构-并查集

并查集 并查集是一种图形数据结构,用于存储图中结点的连通关系。 每个结点有一个父亲,可以理解为“一只伸出去的手”,会指向另外一个点,初始时指向自己。 一个点的根节点是该点的父亲的父亲的的父亲,直到某个点的父亲…

【buuctf--来首歌吧】

用 Audacity 打开,左声道部分可以放大,可以按照长短转换成摩斯密码,放大后: ..... -... -.-. ----. ..--- ..... -.... ....- ----. -.-. -... ----- .---- ---.. ---.. ..-. ..... ..--- . -.... .---- --... -.. --... ----- -…

2024 年改变行业的人工智能主要趋势

1、导读 当我们迈入 2024 年时,了解人工智能趋势至关重要。它们不仅仅涉及技术进步;还涉及技术进步。它们意味着我们解决问题、做出决策和展望未来的方式发生了转变。本文旨在探索这些变革趋势,并强调人工智能如何不断突破可能性的界限&…

C++进阶(十二)lambda可变参数包装器

📘北尘_:个人主页 🌎个人专栏:《Linux操作系统》《经典算法试题 》《C》 《数据结构与算法》 ☀️走在路上,不忘来时的初心 文章目录 一、新的类功能1、默认成员函数2、类成员变量初始化3、 强制生成默认函数的关键字default:4、…

【软件设计师笔记】深入探究操作系统

【软件设计师笔记】计算机系统基础知识考点(传送门) 💖 【软件设计师笔记】程序语言设计考点(传送门) 💖 🐓 操作系统的作用 1.通过资源管理提高计算机系统的效率 2.改善人机界面向用户提供友好的工作环境 🐓 操作系统的特征 …

leetcode(滑动窗口)483.找到字符中所有字母异位词(C++详细解释)DAY4

文章目录 1.题目示例提示 2.解答思路3.实现代码结果 4.总结 1.题目 给定两个字符串 s 和 p,找到 s 中所有 p 的 异位词 的子串,返回这些子串的起始索引。不考虑答案输出的顺序。 异位词 指由相同字母重排列形成的字符串(包括相同的字符串&a…

03-抓包_封包_协议_APP_小程序_PC应用_WEB应用

抓包_封包_协议_APP_小程序_PC应用_WEB应用 一、参考工具二、演示案例:2.1、WEB应用站点操作数据抓包-浏览器审查查看元素网络监听2.2、APP&小程序&PC抓包HTTP/S数据-Charles&Fiddler&Burpsuite2.3、程序进程&网络接口&其他协议抓包-WireSh…

three.js 向量方向(归一化.normalize)

效果&#xff1a; <template><div><el-container><el-main><div class"box-card-left"><div id"threejs" style"border: 1px solid red"></div><div><p><el-button type"primary…

c#: 表达式树的简化

环境&#xff1a; .net 6 一、问题&#xff1f; 有下面的表达式&#xff1a; var nums new List<int> { 1, 2, 3 }; Expression<Func<int, bool>> exp i > i > nums.Max();我们知道&#xff0c;它其实就是&#xff1a;exp i > i > 3; 那么…

史上最全嵌入式(学习路线、应用开发、驱动开发、推荐书籍、软硬件基础)

废话不多说直接上思维导图&#xff01; 如果有觉得图片看不清楚的&#xff0c;有疑问的&#xff0c;可在评论区进行留言&#xff01; 群号&#xff1a; 228447240 嵌入式总括 嵌入式书籍推荐 嵌入式软件知识 嵌入式硬件知识 嵌入式应用开发 嵌入式驱动开发 嵌入式视频推荐: 韦…

5秒搭建PalWorld幻兽帕鲁游戏服务器,你信吗?

5秒搭建PalWorld幻兽帕鲁游戏服务器&#xff0c;你信吗&#xff1f;腾讯云推出幻兽帕鲁专属镜像系统&#xff0c;直接选择镜像&#xff0c;5秒搞定&#xff0c;全自动化部署。 幻兽帕鲁太火了&#xff0c;官方palworld服务器不稳定&#xff1f;不如自建服务器&#xff0c;基于…

双归同一运营商的 BGP 部署

一、拓朴如下&#xff1a; 要求&#xff1a; 1、AS100 只接收 AS200 和 300 的路由&#xff0c;不接收其它 AS 的明细路由&#xff1b; 2、对于 AS100 的业务流量出方向&#xff0c;所有到 AS200 和 300 的流量&#xff0c;优先选择 Line-1&#xff0c;而到 AS400 的流…

SpringBoot Security安全认证框架初始化流程认证流程之源码分析

SpringBoot Security安全认证框架初始化流程&认证流程之源码分析 以RuoYi-Vue前后端分离版本为例分析SpringBoot Security安全认证框架初始化流程&认证流程的源码分析 目录 SpringBoot Security安全认证框架初始化流程&认证流程之源码分析一、SpringBoot Security安…

5.electron之主进程起一个本地服务

如果可以实现记得点赞分享&#xff0c;谢谢老铁&#xff5e; Electron是一个使用 JavaScript、HTML 和 CSS 构建桌面应用程序的框架。 Electron 将 Chromium 和 Node.js 嵌入到了一个二进制文件中&#xff0c;因此它允许你仅需一个代码仓库&#xff0c;就可以撰写支持 Windows、…

基于SpringBoot和PostGIS的震中影响范围可视化实践

目录 前言 一、基础数据 1、地震基础信息 2、全国行政村 二、Java后台服务设计 1、实体类设计 2、Mapper类设计 3、控制器设计 三、前端展示 1、初始化图例 2、震中位置及影响范围标记 3、行政村点查询及标记 总结 前言 地震等自然灾害目前还是依然不能进行准确的预…

基于Springboot的足球社区管理系统(有报告)。Javaee项目,springboot项目。

演示视频&#xff1a; 基于Springboot的足球社区管理系统&#xff08;有报告&#xff09;。Javaee项目&#xff0c;springboot项目。 项目介绍&#xff1a; 采用M&#xff08;model&#xff09;V&#xff08;view&#xff09;C&#xff08;controller&#xff09;三层体系结构…