消息队列的持久化、分发策略、高可用和高可靠

news2024/12/23 17:08:44

原文:消息队列

一、什么是消息的持久化?

简单来说就是将数据存入磁盘,而不是存在内存中随服务器重启断开而消失,使数据能够永久保存。
在这里插入图片描述
常见的持久化方式
在这里插入图片描述

二、消息队列的分发策略

MQ消息队列有如下几个角色
1:生产者
2:存储消息
3:消费者
那么生产者生成消息以后,MQ进行存储,消费者是如何获取消息的呢?一般获取数据的方式无外乎推(push)或者拉(pull)两种方式,典型的git就有推拉机制,我们发送的http请求就是一种典型的拉取数据库数据返回的过程。而消息队列MQ是一种推送的过程,而这些推机制会适用到很多的业务场景也有很多对应推机制策略。
消息分发:
在这里插入图片描述

比如我在APP上下了一个订单,我们的系统和服务很多,我们如何得知这个消息被那个系统或者那些服务或者系统进行消费,那这个时候就需要一个分发的策略。
这就需要消费策略。或者称之为消费的方法论。

失败重试:
在这里插入图片描述

在发送消息的过程中可能会出现异常,或者网络的抖动,故障等等因为造成消息的无法消费,
比如用户在下订单,消费MQ接受,订单系统出现故障,导致用户支付失败,
那么这个时候就需要消息中间件就必须支持消息重试机制策略。
也就是支持:出现问题和故障的情况下,消息不丢失还可以进行重发。

不同消息中间件支持的分发策略:
在这里插入图片描述

三、什么是高可用

所谓高可用:是指产品在规定的条件和规定的时刻或时间内处于可执行规定功能状态的能力。(就是承载能力,承载力越高,可用性越高)
当业务量增加时,请求也过大,一台消息中间件服务器的会触及硬件(CPU,内存,磁盘)的极限,一台消息服务器你已经无法满足业务的需求,所以消息中间件必须支持集群部署。来达到高可用的目的。

消息高可用各种集群的底层逻辑:
1:要么消息共享,
2:要么消息同步
3:要么元数据共享

3.1 Master-slave主从共享数据的部署方式

在这里插入图片描述

解说:生产者将消息发送到Master节点,Master节点负责写入,所有的从节点都连接这个消息队列共享这块数据区域,所有的消息在一块。
Master挂掉,slave节点也可以继续服务。从而形成高可用

缺点:一旦Master节点挂掉,那么生产者就无法写入消息了,这种模式常在小项目中用到
3.2 Master- slave主从同步部署方式

在这里插入图片描述

解释:这种模式写入消息同样在Master主节点上,但是主节点会同步数据到slave节点形成副本,和zookeeper或者redis主从机制很类同。消息被保存在不同节点里。
这样可以达到负载均衡的效果,如果消费者有多个,消费者就可以去不同的节点就行消费。在后续的rabbtmq中会有使用。

缺点:1、消息的拷贝和同步会占用很大的带宽和网络资源,最好是主从节点都部署在同一个机房(局域网)内,加快网速与保证带宽
2、同样的master节点挂了,无法写入
3.3 多主集群同步部署模式

在这里插入图片描述

解释:多写多读,和上面的区别不是特别的大,但是它的写入可以往任意节点去写入。
3.4 多主集群转发部署模式

在这里插入图片描述

解释:如果你插入的数据是broker-1中,元数据信息会存储数据的相关描述和记录存放的位置(队列)。
它会对描述信息也就是元数据信息就行同步,如果消费者在broker-2中进行消费,
发现自己节点没有对应的消息,可以从对应的元数据信息中去查询,然后返回对应的消息信息,
场景:比如买火车票或者黄牛买演唱会门票,比如第一个黄牛有顾客说要买的演唱会门票,但是没有但是他会去联系其他的黄牛询问,如果有就返回。
优点:占用资源较少,比较可靠
3.5 Master-slave与Breoker-cluster组合的方案

在这里插入图片描述

解释:实现多主多从的热备机制来完成消息的高可用以及数据的热备机制,在生产规模达到一定的阶段的时候,这种使用的频率比较高。

四、什么是高可靠机制

所谓高可靠是指:是指系统可以无故障低持续运行,比如一个系统突然崩溃,报错,异常等等并不影响线上业务的正常运行,出错的几率极低,就称之为:高可靠。就是一种“容错性”
在高并发的业务场景中,如果不能保证系统的高可靠,那造成的隐患和损失是非常严重的。
如何保证中间件消息的可靠性呢?可以从两个方面考虑:
1:消息的传输:通过协议来保证系统间数据解析的正确性。
2:消息的存储可靠:通过持久化来保证消息的可靠性。

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

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

相关文章

CNCC技术论坛|分布式数据库HTAP的探索与实践

本文转载自微信公众号“中国计算机学会” 编者按 12月8-10日,中国计算机协会即将全线上举办CNCC2022,大会覆盖118个计算行业、人工智能、云计算、教育、安全等30个热门专业领域的技术论坛,700余位专家将着力探讨计算技术与未来宏观发展趋势&a…

多通道LMMSE图像超分辨复原方法研究-附Matlab代码

⭕⭕ 目 录 ⭕⭕✳️ 一、引言✳️ 二、多通道LMMSE复原算法✳️ 三、实验验证✳️ 四、参考文献✳️ 五、Matlab程序获取与验证✳️ 一、引言 数字图像处理又称为计算机图像处理,是指运用计算机处理平台及相关理论知识,将图像信号转化为数字信号&#…

G120变频器输入输出端子功能定义配置方法及示例

G120变频器输入输出端子功能定义配置方法及示例 1. 数字量输入功能(适用机型:CU240B-2(DP)/CU240E-2(DP/PN)/CU250S-2(DP/PN)) CU240B-2提供4路数字量输入,CU240E-2提供6路数字量输入,CU250S-2提供11路数字量输入和4路可作为输入/输出的数字量端子。在有必要时,也可以将模…

Splunk UBA 导入IDS - firesight 数据

1: 先看一下Splunk IDS 文档: Splunk UBA category to Splunk CIM field mapping reference - Splunk Documentation 里面清楚的记录着哪些是必须字段: 2: 下面开始配这些字段SPL: 发现就是报如下的错: 3: 最后把tag 的字段增加:attack_ids 就可以了,真是奇怪: index…

leecode#查找重复的电子邮箱#从不订购的客户#颠倒二进制数#位1的个数

题目描述: 编写一个 SQL 查询,查找 Person 表中所有重复的电子邮箱。 分析: 所有电子邮箱都是小写字母 重复的电子邮箱存在多次。要计算每封电子邮件的存在次数,我们可以使用以下代码 代码: select Email from (s…

操作系统内存分配(隔离,分段和分页)

内存分配问题 进程的总体目标是希望每个进程从逻辑上来看都可以独占计算机的资源。操作系统的多任务功能使得CPU能够在多个进程之间很好地共享,从进程的角度看好像是它独占了CPU而不用考虑与其他进程分享CPU的事情。操作系统的I/O抽象模型也很好地实现了IO设备的共…

【增长的本质】-

关于作者 塞萨尔伊达尔戈,出生在智利,现在是美国麻省理工学院媒体实验室宏观联系研究团队的主管。他是一位著名的跨界物理学家,最擅长的就是利用物理概念来分析和解释经济、文化领域的大问题。他还长期致力于研究促进经济增长和繁荣的因素&a…

2022最新xcode打包IPA(完整详细图文)​

本文详细讲述iOS的App开发后如何进行证书的创建和项目中如何配置证书及上传到苹果App管理后台后如何新增与更新版本。​ 前期准备:​ ① Mac OS电脑​ ② 一款开发完毕的App​ ③ 99美元的开发者证书一个(此证书提供App上传到App Store),苹果的另外一个299美元一年的证书打…

F28069的cpu定时器

工程搭建参考:https://blog.csdn.net/feisy/article/details/126380289 F28069有三个32位的CPU定时器:0,1,2。0,1可用,如果程序未使用DIS/BIOS,定时器2也可用。 CPU定时器相关的有5个信号,四个输入信号&…

jenkins调用metersphere自动化接口

metersphere自动化测试场景,可以用过jenkins job配至界面化传参数,传递给metersphere动态执行脚本。 1.下载metersphere jenkins插件 Releases metersphere/jenkins-plugin GitHub 2.jenkins安装metersphere插件 Jenkins 的插件管理页面&#xff0c…

谷歌翻译不能用了

最近发现谷歌翻译不能使用了,对于英语不好的我是个问题呀。 解决办法: 网上说要执行 win r 然后 进行ipConfig 结果我试了,没有一点用。 来先试试这个吧,直接就成功了。 看 图 找到 C:\Windows\System32\drivers\etc\hosts文件 …

【爬虫】力扣每日一题每天自动邮件提醒!!!

使用python实现了一个力扣每日一题每天自动邮件提醒的小爬虫,小但实用!!! 文章目录A.需求来源与分析B.技术角度分析C.具体分析步骤1.接口协议分析2.发邮件3.写crontab放服务器上定时跑D.成品1.源代码2.效果3.使用说明免责申明A.需…

面试官:你先回去等通知吧!这个 Java 岗位我还有机会吗?

面试官:看你简历写的不错,先简单自我介绍下? 我:大佬好!我是小程,工作时长两年半,目前负责在公司打杂,啊不,负责维护公司的两个项目… 面试官:hmmm&#xf…

[激光原理与应用-37]:《光电检测技术-4》- 光学测量基础 - 噪声与光学中的常见电路

目录 第1章 噪声 1.1 什么是噪声 1.2 分类 第2章 电子电路的常见噪声 2.1 通过放电产生的噪声 2.2 因为辐射干扰而产生的噪声 2.3 特定器件固有的噪声源 2.4 电子电路中噪声监测办法 第3章 光学电路常见噪声 3.1 常见噪声 3.2 噪声处理 第4章 光学电路中常见的电路…

双指针题目

比较含退格的字符串 给定 s 和 t 两个字符串,当它们分别被输入到空白的文本编辑器后,如果两者相等,返回 true 。# 代表退格字符。 class Solution {public boolean backspaceCompare(String S, String T) {int S_Len S.length(), T_Len T.…

[附源码]计算机毕业设计数字乡村基础治理系统Springboot程序

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

NFV网络云落地过程中若干问题分析

Labs 导读NFV技术从诞生起,从根本上来说就是为了解决运营商网络演进中部署成本高,迭代更新慢,架构僵化等痛点问题。同时,在引入NFV技术前,旧有产业链相对单一,核心成员主要包括设备制造商、芯片制造商等&am…

[Mysql]数据库约束

文章目录前言1. 数据库约束1.1 not null1.2 unique1.3 primary key,主键约束1.4 default,设置默认值1.5 foreign key 外键约束前言 数据库约束,在实际应用中,由于某些特定的要求,例如学生的学号不能为空,学生表中的班级id,在班级表中要能存在…

python足球作画

努力是为了不平庸~ 学习的最大理由是想摆脱平庸,早一天就多一份人生的精彩;迟一天就多一天平庸的困扰。 足球(Football[英]、 Soccer[美])是一项以脚为主,控制和支配球,两支球队按照一定规则在同一块长方形…

HTML如何制作公司网站首页(web前端期末大作业)

🎉精彩专栏推荐 💭文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 💂 作者主页: 【主页——🚀获取更多优质源码】 🎓 web前端期末大作业: 【📚毕设项目精品实战案例 (10…