热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

消息中间件使用场景

消息中间件谈谈开发中应用消息中间件的场景?或适用的场景?适合场景:不需要实时性的可以达到什么效果:1,

消息中间件


谈谈开发中应用消息中间件的场景?或适用的场景?

适合场景:不需要实时性的

可以达到什么效果:


  • 1,解耦
  • 2,异步化
  • 3,限流消峰

案例

1,商品管理(静态页面+搜索页面)

在这里插入图片描述以上是同步的方式

消耗的时间: T1+T2+T3

处于耦合状态:某个系统有问题,会有影响,或者新增一个系统,也会影响到我们的代码

并不符合我们说的设计原则:OCP原则,开闭原则

解耦:
在这里插入图片描述时间:T1+t1

处于解耦的状态

2,基础服务,都已经采用异步的方式来为其他系统提供服务(短信,邮件,积分等等)

在这里插入图片描述
在这里插入图片描述
3,限流削峰

就是前后两个交互的系统处理的速度不匹配,为了保护处理慢的系统,从而引入消息中间件,来实现削峰限流处理
方案一:异步写的方案,保护数据库,缓解瞬间写的压力
在这里插入图片描述
方案二:再比如秒杀系统,会产生很多的订单信息,此时也可以通过MQ来保护订单系统。

限流好处:节省服务器成本

在这里插入图片描述


如何保证消息的可达或不丢失?

1,背景:

网络是不可靠的

像我们上面所描述的各种场景,一旦消息出现丢失,将会造成各种问题。比如邮件没有发送,短信没有收到等等。

2,解决方案:

确认机制+补偿发送

这个问题需要分为多个节点来考虑

在这里插入图片描述

这里面的每个环节出问题都有可能造成消息的不可达,所以,我们需要保证针对每个环节设计解决方案

1,消息要发送到MQ服务器

解决的方式有两种:

方式一:事物的方式(了解即可,性能不佳)

方式二:异步confirm模式,推荐,客户端通过设置cnfirm监听器,获取MQ服务器的异步响应。

如果消息成功传递到MQ服务器,则服务器会传递回ACK=true,否则ACK=false

在这里插入图片描述在这里插入图片描述

2, return机制,保证消息到了MQ服务器之后,是否能正确路由到交换机或者队列,这个是在正常情况下是不会发生的,所以一般在开发中我们会忽略掉这个设置

3,消息队列做持久化

消息成功传递到MQ服务器之后,还需要对消息队列做持久化,否则一旦消息服务器宕机,那么未处理的消息将会丢失

4,消费端的手工确认模式开启,只有消费端手工确认之后,才表示这个消息已经被正确处理了

这个环节是确保消息真的被消费端正确处理了,如果没有被正确处理,那么消息还是需要重新处理的。

1,有可能MQ服务器没有收到消费端发送的确认消息,会重复处理,所以要保证接口的幂等性,

2,为了避免重复处理不成功,造成阻塞,所以,我们引入有固定次数的重试机制 (失败的情况)

当然为了避免消息重复处理依然失败的情况,我们一般设置为重复处理三次,如果三次还是有问题,

则应该讲错误信息记录到日志中,然后人工介入处理。避免堵塞到后面的消息处理。


什么是延迟队列?

作用:

需要延迟处理的消息,我们将使用延迟队列来达到这个效果

背景:

比如订单超时未支付,我们需要取消订单,解锁库存。

实现方案:

方案一:采用定时任务

通过定时任务扫描订单表,判断订单的下单时间跟当前时间的时间差,如果超过指定时间,比如30分钟,则取消订单。但是这个方案存在问题,就是频繁扫描订单表,会给数据库带来较大的压力

一秒一次 30*60=1800次

方案二:采用消息队列提供的延迟队列,跟数据库的交互只需要一次
消息超过了有效期,没有人处理,就称为死信

在这里插入图片描述


推荐阅读
  • 2012年9月12日优酷土豆校园招聘笔试题目解析与备考指南
    2012年9月12日,优酷土豆校园招聘笔试题目解析与备考指南。在选择题部分,有一道题目涉及中国人的血型分布情况,具体为A型30%、B型20%、O型40%、AB型10%。若需确保在随机选取的样本中,至少有一人为B型血的概率不低于90%,则需要选取的最少人数是多少?该问题不仅考察了概率统计的基本知识,还要求考生具备一定的逻辑推理能力。 ... [详细]
  • PHP 各版本对比:标准版与最新顶级版的详细分析 ... [详细]
  • 第二章:Kafka基础入门与核心概念解析
    本章节主要介绍了Kafka的基本概念及其核心特性。Kafka是一种分布式消息发布和订阅系统,以其卓越的性能和高吞吐量而著称。最初,Kafka被设计用于LinkedIn的活动流和运营数据处理,旨在高效地管理和传输大规模的数据流。这些数据主要包括用户活动记录、系统日志和其他实时信息。通过深入解析Kafka的设计原理和应用场景,读者将能够更好地理解其在现代大数据架构中的重要地位。 ... [详细]
  • 掌握PHP框架开发与应用的核心知识点:构建高效PHP框架所需的技术与能力综述
    掌握PHP框架开发与应用的核心知识点对于构建高效PHP框架至关重要。本文综述了开发PHP框架所需的关键技术和能力,包括但不限于对PHP语言的深入理解、设计模式的应用、数据库操作、安全性措施以及性能优化等方面。对于初学者而言,熟悉主流框架如Laravel、Symfony等的实际应用场景,有助于更好地理解和掌握自定义框架开发的精髓。 ... [详细]
  • 修复一个 Bug 竟耗时两天?真的有那么复杂吗?
    修复一个 Bug 竟然耗费了两天时间?这背后究竟隐藏着怎样的复杂性?本文将深入探讨这个看似简单的 Bug 为何会如此棘手,从代码层面剖析问题根源,并分享解决过程中遇到的技术挑战和心得。 ... [详细]
  • 本文详细介绍了HDFS的基础知识及其数据读写机制。首先,文章阐述了HDFS的架构,包括其核心组件及其角色和功能。特别地,对NameNode进行了深入解析,指出其主要负责在内存中存储元数据、目录结构以及文件块的映射关系,并通过持久化方案确保数据的可靠性和高可用性。此外,还探讨了DataNode的角色及其在数据存储和读取过程中的关键作用。 ... [详细]
  • 西北工业大学作为陕西省三所985和211高校之一,虽然在农业和林业领域不如某些顶尖院校,但在航空航天领域的实力尤为突出。该校的计算机科学专业在科研和教学方面也具有显著优势,是考研的理想选择。 ... [详细]
  • 从0到1搭建大数据平台
    从0到1搭建大数据平台 ... [详细]
  • 秒建一个后台管理系统?用这5个开源免费的Java项目就够了
    秒建一个后台管理系统?用这5个开源免费的Java项目就够了 ... [详细]
  • 深入解析Struts、Spring与Hibernate三大框架的面试要点与技巧 ... [详细]
  • 性能测试中的关键监控指标与深入分析
    在软件性能测试中,关键监控指标的选取至关重要。主要目的包括:1. 评估系统的当前性能,确保其符合预期的性能标准;2. 发现软件性能瓶颈,定位潜在问题;3. 优化系统性能,提高用户体验。通过综合分析这些指标,可以全面了解系统的运行状态,为后续的性能改进提供科学依据。 ... [详细]
  • B站服务器故障影响豆瓣评分?别担心,阿里巴巴架构师分享预防策略与技术方案
    13日晚上,在视频观看高峰时段,B站出现了服务器故障,引发网友在各大平台上的广泛吐槽。这一事件导致了连锁反应,大量用户纷纷涌入A站、豆瓣和晋江等平台,给这些网站带来了突如其来的流量压力。为了防止类似问题的发生,阿里巴巴架构师分享了一系列预防策略和技术方案,包括负载均衡、弹性伸缩和容灾备份等措施,以确保系统的稳定性和可靠性。 ... [详细]
  • 本文详细介绍了如何安全地手动卸载Exchange Server 2003,以确保系统的稳定性和数据的完整性。根据微软官方支持文档(https://support.microsoft.com/kb833396/zh-cn),在进行卸载操作前,需要特别注意备份重要数据,并遵循一系列严格的步骤,以避免对现有网络环境造成不利影响。此外,文章还提供了详细的故障排除指南,帮助管理员在遇到问题时能够迅速解决,确保整个卸载过程顺利进行。 ... [详细]
  • 深入解析Spring Boot启动过程中Netty异步架构的工作原理与应用
    深入解析Spring Boot启动过程中Netty异步架构的工作原理与应用 ... [详细]
  • 本文推荐了六款高效的Java Web应用开发工具,并详细介绍了它们的实用功能。其中,分布式敏捷开发系统架构“zheng”项目,基于Spring、Spring MVC和MyBatis技术栈,提供了完整的分布式敏捷开发解决方案,支持快速构建高性能的企业级应用。此外,该工具还集成了多种中间件和服务,进一步提升了开发效率和系统的可维护性。 ... [详细]
author-avatar
手机用户2602923361
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有