当前位置: 首页 > 后端技术 > Java

消息队列的常见使用场景

时间:2023-04-02 09:35:37 Java

本文已收录在Github仓库,其中包括计算机基础、Java基础、多线程、JVM、数据库、Redis、Spring、Mybatis、SpringMVC、SpringBoot、分布式、微服务、设计模式核心架构、校招和社招分享等知识点,欢迎star~Github地址:https://github.com/Tyson0314/...分布式系统,主要解决应用耦合、异步消息传递、流量削减等问题,实现高性能、高可用、可扩展、最终一致性的架构。常用的消息队列有RocketMQ、RabbitMQ、Kafka、ZeroMQ、MetaMQ。下面介绍消息队列在实际应用中的常见使用场景。五种场景:异步处理、应用解耦、流量削波、日志处理、消息通信。场景一:异步处理场景描述:用户注册后,需要发送注册邮件和注册短信。传统的方法有两种:1.串口方式;2.并行模式(1)串行模式:注册信息写入数据库成功后,发送注册邮件,然后发送注册短信。以上三个任务全部完成后,返回给客户端(2)并行模式:将注册信息成功写入数据库后,发送注册邮件,同时发送注册短信。以上三项工作完成后,返回给客户端。与串行的区别在于并行方式可以提高处理时间。假设三个业务节点各使用50毫秒,不考虑网络等其他开销,串行时间为150毫秒,并行时间可能为100毫秒。毫秒。因为单位时间内CPU处理的请求数是一定的,假设1秒内CPU的吞吐量是100次。那么在串口模式下CPU可以在1秒内处理7个请求(1000/150)。并行处理的请求量是10倍(1000/100)总结:如上案例所述,传统系统的性能(并发量、吞吐量、响应时间)会出现瓶颈。如何解决这个问题呢?消息队列的引入将不需要业务逻辑,将异步处理。修改后的架构如下:根据上面的约定,用户的响应时间相当于注册信息写入数据库的时间,为50毫秒。注册邮箱,发送短信写入消息队列后,直接返回,所以写入消息队列的速度很快,基本可以忽略不计,所以用户的响应时间可能是50毫秒。因此,架构变更后,系统的吞吐量提升至每秒20QPS。比串行高3倍,比并行快2倍场景2:应用解耦场景描述:用户下单后,订单系统需要通知库存系统。传统上,订单系统调用库存系统的接口。传统模式的缺点如下图所示:如果无法访问库存系统,订单将无法减少库存,从而导致订单失败。如何通过订单系统与库存系统的耦合来解决上述问题呢?引入应用消息队列后的解决方案,如下图所示:订单系统:用户下单后,订单系统完成持久化过程,将消息写入消息队列,成功返回用户的订单。/push方法获取订单信息,库存系统根据订单信息进行库存操作。如果:下单时库存系统无法正常使用。不影响正常下单,因为下单后,订单系统写入消息队列,不再关心后续其他操作。实现订单系统和库存系统的应用解耦场景三:流量削减流量削减在消息队列中也是比较常见的场景。一般用于秒杀或群抢活动。结果,流量激增,应用程序挂起。为了解决这个问题,一般需要在应用的前端添加一个消息队列。可以控制活动的人数可以缓解短时间内高流量的请求使应用程序用户不堪重负。服务器收到后,先写入消息队列。如果消息队列长度超过最大数,则直接丢弃用户请求或跳转到秒杀业务的错误页面。根据消息队列中的请求信息,进行后续处理场景四:日志处理日志处理是指在日志处理中使用消息队列,如Kafka的应用,解决海量日志传输问题.架构简化如下。日志采集客户端负责采集日志数据并定时写入Kafka队列。Kafka消息队列负责接收、存储和转发日志数据。日志处理应用:在kafka队列中订阅消费日志数据。应用案例(一),Kafka:接收用户日志的消息队列(二),Logstash:日志分析,统一成JSON输出到Elasticsearch(三),Elasticsearch:实时日志分析服务的核心技术,一个无模式的,实时的时间数据存储服务,通过索引组织数据,具有强大的搜索和统计功能(4)、Kibana:基于Elasticsearch的数据可视化组件,超强的数据可视化能力是很多公司选择ELKstack的重要原因场景5:消息通信消息通信是指消息队列一般都内置了高效的通信机制,因此也可以用于纯消息通信。比如实现点对点的消息队列,或者聊天室这样的点对点通信:客户端A和客户端B使用同一个队列进行消息通信。聊天室通信:客户端A、客户端B、客户端N订阅同一个主题发布和接收消息。实现类似聊天室的效果。以上其实就是消息队列的两种消息模式,点对点或者发布订阅模式。该模型是供参考的示意图。本文转载自:https://www.cnblogs.com/ruiat...最后给大家分享一个Github仓库,里面有大斌编译的300多本经典计算机书籍PDF,包括C语言、C++、Java、Python、前端、数据库、操作系统、计算机网络、数据结构与算法、机器学习、编程生活等等,都可以star一下,下次找书直接上搜.仓库持续更新中~Github地址:https://github。com/泰森0314/…