Kafka消息队列

目录

 什么是消息队列

高可用性

高扩展性

高可用性

持久化和过期策略

consumer group 分组消费

ZooKeeper 


 

 什么是消息队列

普通版消息队列

说白了就是一个队列,生产者生产多少,放在消息队列中存储,而消费者想要多少拿多少,按序列号消费

缓存信息 

生产者与消费者解耦合

 那么Kafka如何改进普通版的消息队列

高可用性

随着生产者和消费者都变多,我们会发现它们会同时争抢同一个消息队列,抢不到的一方就得等待,这不纯纯浪费时间吗!
有解决方案吗?有!
首先是对消息进行分类,每一类是一个 topic,然后根据 topic 新增队列的数量,生产者将数据按 topic 投递到不同的队列中,消费者则根据需要订阅不同的 topic。

这就大大降低了 topic 队列的压力。

但单个 topic 的消息还是可能过多,我们可以将单个队列,拆成好几段,

每段就是一个 partition 分区,每个消费者负责一个 partition。

这就大大降低了争抢,提升了消息队列的性能。

高扩展性

随着 partition 变多,如果 partition 都在同一台机器上的话,就会导致单机 cpu 和内存过高,影响整体系统性能。

于是我们可以申请更多的机器,将 partition 分散部署在多台机器上,这每一台机器,

就代表一个 broker。我们可以通过增加 broker 缓解机器 cpu 过高带来的性能问题。

高可用性

如果其中一个 partition 所在的 broker 挂了,那 broker 里所有 partition 的消息就都没了。
有解决方案吗?

我们可以给 partition 多加几个副本,也就是 replicas,将它们分为 Leader 和 Follower。Leader 负责应付生产者和消费者的读写请求,而 Follower 只管同步 Leader 的消息。

持久化和过期策略

刚刚提到的是几个 broker 挂掉的情况,那搞大点,假设所有 broker 都挂了,那岂不是数据全丢了?
为了解决这个问题,我们不能光把数据放内存里,还要持久化到磁盘中,这样哪怕全部 broker 都挂了,数据也不会全丢,重启服务后,也能从磁盘里读出数据,继续工作。

但问题又来了,磁盘总是有限的,这一直往里写数据迟早有一天得炸。
所以我们还可以给数据加上保留策略,也就是所谓的 retention policy,比如

对磁盘设置容量大小,数据设置过期时间

consumer group 分组消费

在上面我们说的消息队列,只能依靠 offset(序号) 顺序消费,那么我们相从中间的某一个开始消费呢?

给消息队列加入消费者组(consumer group)的概念:

B 和 C 服务各自是一个独立的消费者组,不同消费者组维护自己的消费进度,互不打搅。 

ZooKeeper 

如果组件太多了,而且每个组件都有自己的数据和状态,所以还需要有个组件去统一维护这些组件的状态信息,于是我们引入 ZooKeeper 组件。

它会定期和 broker 通信,获取 整个 kafka 集群的状态,以此判断 某些 broker 是不是挂了,某些消费组消费到哪了。

参考 -- 小白debug-消息队列 kafka 是什么 

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

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

相关文章

VulnHub靶机入门篇--Kioptrix4

1.环境配置 下载地址: https://download.vulnhub.com/kioptrix/Kioptrix4_vmware.rar 下载完解压之后是一个vdmk文件,我们需要先创建一个新的虚拟机,将vdmk文件导入就行了 先移除原先硬盘,然后再进行添加,网络连接为…

EV代码签名证书具体申请流程

EV(扩展验证)代码签名证书是一种用于对代码进行数字签名的安全证书,它可以帮助用户验证软件发布者的身份,并确保软件未被篡改。对于Windows硬件开发者来说,这种证书尤其重要,因为它可以用来注册Windows硬件…

【Golang 面试 - 基础题】每日 5 题(八)

✍个人博客:Pandaconda-CSDN博客 📣专栏地址:http://t.csdnimg.cn/UWz06 📚专栏简介:在这个专栏中,我将会分享 Golang 面试中常见的面试题给大家~ ❤️如果有收获的话,欢迎点赞👍收藏…

【DP】01背包

算法-01背包 前置知识 DP 思路 01背包一般分为两种,不妨叫做价值01背包和判断01背包。 价值01背包 01背包问题是这样的一类问题:给定一个背包的容量 m m m 和 n n n 个物品,每个物品有重量 w w w 和价值 v v v,求不超过背…

unity 导出 资源 -- 的 Player Settings... Inspector ----配置文件

--------------------------- unity 导出 资源 -- 的 Player Settings... Inspector ----配置文件名称--------OK 配置 文件位置:E:\BL\client\ProjectSettings\ProjectSettings.asset 具体操作: 复制一个备份配置 ------.unity--File--Build-Setting…

六、2 写PWM代码(函数介绍、呼吸灯代码)

目录 一、1、步骤 2、函数介绍 3、外设引脚和GPIO引脚的复用关系(引脚定义表) 二、1、呼吸灯 步骤 (1)初始化通道 1)输出比较模式 2)输出比较极性 (2)配置GPIO &#xff08…

Zabbix 部署 - docker

考虑方便移植,多环境部署,整体采用 docker-compose 方式部署 docker-compose 总共4个服务,数据库 后台服务 前端服务 Agent version: 3.7 services:zabbix-mysql:container_name: zabbix-mysqlimage: mysql:5.7.40restart: alwaysenviro…

肆[4],VisionMaster全局触发测试说明

1,环境 VisionMaster4.3 2,实现功能 2.1,全局触发进行流程控制执行。 2.2,取像完成,立即运动到下一个位置,同步进行图片处理。 2.3,发送结果的同时,还需要显示图像处理的痕迹。 …

如何运行别人的vue项目

文章目录 如何运行别人的vue项目一、删除现有的node_modules二、npm换源三、清理缓存四、进行依赖安装五、运行服务器 如何运行别人的vue项目 一、删除现有的node_modules 二、npm换源 换成淘宝的镜像源 查看当前镜像源 npm config get registry更换淘宝镜像源 npm confi…

如何在VB中处理异常和错误

在Visual Basic (VB) 中,处理异常和错误是确保程序稳定性和健壮性的重要部分。VB提供了结构化的异常处理机制,允许开发者在代码执行过程中预测并响应可能出现的错误情况。以下是VB中处理异常和错误的基本方法: 1. 使用 Try...Catch...Finall…

H616设计时候存在的问题

1.存在大量孤铜的问题: 这种情况是绝对不允许的,但是GBA焊盘打大量的过孔会出现很多这样的孤铜: 解决办法: 像这种出现大量重复焊盘的,用导线连接起来,之后铺铜形成铜皮,再在这个小铜皮上面打…

全网首创!基于GaitSet的一种多人步态识别方法公示

有源代码V细聊,可商用/私用/毕设等:NzqDssm16 🍉1 绪论 经过相关研究确认,步态识别是足以达到应用级别的生物识别技术,在现代社会中自始至终都存在着广泛的应用前景。之所以迟迟没有普及,主要是实…

【Oracle 进阶之路】Oracle 简介

一、简述 Oracle Database,又名Oracle RDBMS,或简称Oracle。是甲骨文公司的一款关系数据库管理系统。它是在数据库领域一直处于领先地位的产品。可以说Oracle数据库系统是世界上流行的关系数据库管理系统,系统可移植性好、使用方便、功能强&…

华为ensp中链路聚合两种(lacp-static)模式配置方法

作者主页:点击! ENSP专栏:点击! 创作时间:2024年4月26日11点54分 链路聚合(Link Aggregation),又称为端口聚合(Port Trunking),是一种将多条物理…

【编程工具使用技巧】VS如何显示行号

💓 博客主页:倔强的石头的CSDN主页 📝Gitee主页:倔强的石头的gitee主页 ⏩ 文章专栏:《编程工具与技巧探索》 期待您的关注 目录 引言 一、VS编译器行号显示的基本步骤 1.打开VS与项目 2.进入选项设置 3.找到并…

【Linux】远程连接Linux虚拟机(MobaXterm)

【Linux】远程连接Linux虚拟机(MobaXterm) 零、原因 有时候我们在虚拟机中操作Linux不太方便,比如不能复制粘贴,不能传文件等等,我们在主机上使用远程连接软件远程连接Linux虚拟机后可以解决上面的问题。 壹、软件下…

成为git砖家(5): 理解 HEAD

文章目录 1. git rev-parse 命令2. 什么是 HEAD2.1 创建分支当并未切换, HEAD 不变2.2 切换分支,HEAD 改变2.3 再次切换分支, HEAD 再次改变 3. detached HEAD4. HEAD 表示分支、表示 detached HEAD 有什么区别?区别相同点 5. HEA…

现在有什么赛道可以干到退休?

最近,一则“90后无论男女都得65岁以后退休”的消息在多个网络平台流传,也不知道是真是假,好巧不巧今天刷热点的时候又看到一条这样的热点:现在有什么赛道可以干到退休? 点进去看了几条热评,第一条热评说的…

JavaScript UI 组件库DHTMLX Suite v8.4全新发布|图表等功能升级

DHTMLX UI 组件库允许您更快地构建跨平台、跨浏览器 Web 和移动应用程序。它包括一组丰富的即用式 HTML5 组件,这些组件可以轻松组合到单个应用程序界面中。 DHTMLX JS UI 组件可用于任何服务器端技术:PHP、Java、ASP.NET、Ruby、Grails、ColdFusion、P…

邮箱收不到验证码邮件,如何调整邮箱设置?

邮箱收不到验证码邮件的原因?邮箱被拦截的解决策略? 有时用户会遇到邮箱收不到验证码邮件的问题,这不仅影响用户体验,还可能带来安全隐患。AokSend将探讨为什么会出现邮箱收不到验证码邮件的问题,并提供调整邮箱设置的…