消息队列的浅浅了解 | 青训营

55 阅读3分钟

什么是消息队列

消息队列是一种在应用程序之间传递消息的技术,它可以实现异步、解耦、削峰等功能,提高系统的性能和可扩展性。

目前常见的消息队列

  • Kafka:分布式的、分区的、多副本的日志提交服务,在高吞吐场景下发挥较为出色
  • RocketMQ:低延迟、强一致、高性能、高可靠、万亿级容量和灵活的可扩展性,在一些实时场景中运用较广
  • Pulsar:是下一代云原生分布式消息流平台,集消息、存储、轻量化函数式计算为一体采用存算分离的架构设计
  • BMQ:和Pulsar架构类似,存算分离,初期定位是承接高吞吐的离线业务场景,逐步替换掉对应的Kafka集群

消息队列的应用场景

  • 异步处理:消息队列可以将一些耗时而不需要即时返回结果的操作,作为消息放入队列中,由另一个线程或进程异步处理,从而减少请求响应时间,提高系统响应性能。。
  • 应用解耦:消息队列可以减少应用之间的直接依赖,降低耦合度,使得应用之间只需要关注消息的格式和内容,而不需要了解对方的实现细节。。
  • 流量削峰:消息队列可以作为一个缓冲区,暂存大量的请求,避免短时间内高并发流量压垮应用。。
  • 日志处理:消息队列可以将应用产生的大量日志数据通过队列传输到专门的日志处理系统中,从而提高日志的收集、存储、分析和展示效率。。
  • 消息通信:消息队列可以实现不同应用之间的消息通信,支持点对点和发布订阅两种模式。

消息队列的实现方式

  • 关系型数据库:例如MySQL,可以使用表来存储消息,利用事务和锁来保证消息的可靠性和顺序性。这种方式的优点是简单易用,可以利用数据库的特性进行查询、备份、恢复等操作;缺点是性能较低,不适合高并发场景。
  • NoSQL数据库:例如Redis,可以使用List、ZSet、Pub/Sub或Stream等数据结构来实现消息队列。这种方式的优点是性能较高,支持多种模式和功能;缺点是需要额外的机制来保证消息的可靠性和持久性。
  • 专用框架:例如RabbitMQ、RocketMQ、ActiveMQ、Kafka等,这些都是专门为消息队列设计的中间件,具有高性能、高可靠、高可扩展等特点。这种方式的优点是功能强大,支持多种协议和模式;缺点是需要额外的部署和维护成本。

小结

消息队列原来如此重要,这是我通过课程和网上收集资料做的一个小小的总结,也算对消息队列有了个浅浅的了解。