当前位置:首页 > 科技  > 软件

应对流量高峰的利器——消息中间件

来源: 责编: 时间:2023-10-16 17:08:02 464观看
导读一、引言大家好,我是小❤。周末和朋友一起自驾去海边玩,去过杨梅坑的应该都知道,从杨梅坑到鹿嘴山庄需要坐快艇过去。不愧是深圳游玩景点上稳居 TOP5 的地方,下午四五点的时候排队坐艇的人还是非常多,买好票后我们被叫到一

一、引言

大家好,我是小❤。ErN28资讯网——每日最新资讯28at.com

周末和朋友一起自驾去海边玩,去过杨梅坑的应该都知道,从杨梅坑到鹿嘴山庄需要坐快艇过去。ErN28资讯网——每日最新资讯28at.com

ErN28资讯网——每日最新资讯28at.com

不愧是深圳游玩景点上稳居 TOP5 的地方,下午四五点的时候排队坐艇的人还是非常多,买好票后我们被叫到一个岸边阶梯上等待上船,现场略微有些混乱。ErN28资讯网——每日最新资讯28at.com

人流量有点大,到站载客的船却不是很多。ErN28资讯网——每日最新资讯28at.com

就在我为维持秩序的工作人员捏一般汗时,我看到他们来来回回点了好几拨人,让这些人有序上船。ErN28资讯网——每日最新资讯28at.com

不多会儿,便有一个瘦黑的中年人来叫我们,说一条船只能装 10 个人,就点了我们前面的 10 个人,让其他人原地不动,点到的 10 个人可以上船。ErN28资讯网——每日最新资讯28at.com

果然,软件设计都来源于生活,此情此景,不就是系统设计里面经典的数据消费问题嘛!ErN28资讯网——每日最新资讯28at.com

二、消息中间件

当数据量(乘客)过多,系统(载客的快艇)来不及立刻消费时,会把数据先放到一个消费队列里(岸边阶梯)等待,起到一个流量削峰的作用。ErN28资讯网——每日最新资讯28at.com

在分布式系统里面,实现消费队列的一种主要方式就是采用消息中间件。ErN28资讯网——每日最新资讯28at.com

什么是消息中间件

消息中间件(Message Broker)是一种在分布式系统中用于传递消息、通知和事件的基础架构组件。ErN28资讯网——每日最新资讯28at.com

ErN28资讯网——每日最新资讯28at.com

它允许不同组件、应用程序或系统之间异步地交换数据和信息,以实现削峰、解耦和可扩展的通信。ErN28资讯网——每日最新资讯28at.com

消息中间件的基本原理包括以下几个关键概念:ErN28资讯网——每日最新资讯28at.com

  • 消息生产者(Producer): 这是消息的发送方,通常是一个应用程序或组件,它将消息发送到消息中间件。
  • 消息消费者(Consumer): 这是消息的接收方,通常也是一个应用程序或组件,它从消息中间件中接收和处理消息。
  • 消息队列(Message Queue): 这是消息中间件的核心组件,它是一个存储消息的队列,消息生产者将消息放入队列,消息消费者从队列中获取消息。消息队列通常采用先进先出(FIFO)的原则。
  • 消息主题(Topic): 除了消息队列,消息中间件还支持消息主题,它允许发布-订阅模式的消息通信。消息发布者将消息发布到主题,而订阅者可以订阅特定主题以接收相关消息。

消息中间件的优点包括:ErN28资讯网——每日最新资讯28at.com

  • 解耦性: 消息中间件允许生产者和消费者独立操作,它们不需要直接知道对方的存在。这种解耦性使系统更加灵活和可维护。
  • 可扩展性: 通过增加消息中间件的容量,可以轻松应对更多的消息流量和消费者。
  • 异步通信: 消息中间件允许异步通信,生产者可以继续工作而不必等待消息被处理,从而提高系统的性能和响应速度。
  • 消息持久性: 消息通常会被持久化,即使消息中间件或消费者出现故障,消息也不会丢失。

消息中间件有许多不同的实现和协议,其中一些流行的消息中间件包括 ActiveMQ、RocketMQ、RabbitMQ、Kafka 等。ErN28资讯网——每日最新资讯28at.com

ErN28资讯网——每日最新资讯28at.com

它们在不同的使用场景和需求下有不同的特点和优势。ErN28资讯网——每日最新资讯28at.com

消息中间件在各种应用中广泛使用,包括微服务架构、大数据处理、实时数据分析、日志收集、事件驱动架构等。ErN28资讯网——每日最新资讯28at.com

接下来我们分别介绍常见的消息中间件以及它们的优缺点和适用场景,帮助大家在应用开发中作出明智的选择。ErN28资讯网——每日最新资讯28at.com

三、ActiveMQ

特点:ErN28资讯网——每日最新资讯28at.com

  • ActiveMQ 是一个基于 Java 的开源消息中间件,实现了 JMS(Java Message Service)规范。
  • 支持多种消息传递模型,包括点对点和发布-订阅。
  • 提供高可用性和负载均衡,支持主从复制,可用于构建高可用性系统。
  • 适用于 Java 应用程序,但也有一些支持其他编程语言的客户端。

优点:ErN28资讯网——每日最新资讯28at.com

  • 简单易用,适合快速开发和原型构建。
  • 集成了 Spring 框架,可以轻松与 Spring 应用集成。
  • 适用于中小型系统和企业内部通信。

缺点:ErN28资讯网——每日最新资讯28at.com

  • 性能相对较低,不适合高吞吐量和延迟要求较高的场景。
  • 不支持大规模的消息流,不适合大数据和实时分析应用。

适用场景: ActiveMQ 适用于需要简单的消息传递和中小型系统的内部通信。它在企业内部通信和轻量级应用中表现良好,但不适合高性能、高吞吐量和大规模数据处理。ErN28资讯网——每日最新资讯28at.com

总的来说,ActiveMQ 国内互联网公司落地较少,多是传统企业在使用。ErN28资讯网——每日最新资讯28at.com

四、RocketMQ

特点:ErN28资讯网——每日最新资讯28at.com

  • RocketMQ 是阿里巴巴早些年开源的 MQ 框架,基于 Java 语言写的,后来捐给了Apache,是一款快速、可靠、可扩展的分布式消息中间件。
  • 支持发布-订阅和点对点消息传递模型。
  • 具有高性能、低延迟的特点,适用于大规模的消息传递。
  • 支持丰富的客户端语言,包括 Java、C++、Python、Go 等。

优点:ErN28资讯网——每日最新资讯28at.com

  • 高性能和低延迟,适用于高吞吐量的大规模应用。
  • 支持多种消息传递模型,适用于不同的业务场景。
  • 具有强大的监控和管理工具。

缺点:ErN28资讯网——每日最新资讯28at.com

  • 部署和配置相对复杂,需要一些专业知识。
  • 社区相对较小,相比一些其他消息中间件,文档和生态系统相对不够成熟。

适用场景: RocketMQ 适用于需要高性能、低延迟、可扩展性的大规模应用,如电商平台、金融系统、物联网应用等。ErN28资讯网——每日最新资讯28at.com

五、RabbitMQ

特点:ErN28资讯网——每日最新资讯28at.com

  • RabbitMQ 是一款开源的消息中间件,实现了 AMQP(高级消息队列协议)规范。
  • 支持广泛的消息传递模型,包括点对点、发布-订阅和 RPC。
  • 提供可靠性消息传递,支持事务和消息确认。
  • 有多种客户端库,支持多种编程语言。

优点:ErN28资讯网——每日最新资讯28at.com

  • 成熟的技术,稳定性高,广泛用于企业级应用。
  • 提供高可用性和负载均衡机制。
  • 支持多种编程语言,适用于跨语言的应用。

缺点:ErN28资讯网——每日最新资讯28at.com

  • 性能相对较低,不适合高吞吐量的大规模应用。
  • 部署和配置复杂,需要一些学习成本。
  • 自身是 erlang 语言开发,源码比较难分析,需要扎实的 erlang 语言功底。

适用场景: RabbitMQ 适用于企业级应用,需要可靠性和事务支持的场景,但对性能要求不是特别高的应用。ErN28资讯网——每日最新资讯28at.com

六、Kafka

特点:ErN28资讯网——每日最新资讯28at.com

  • Kafka 是一款高吞吐量、低延迟的分布式消息中间件,适用于大规模数据处理和实时流处理。
  • 主要用于发布-订阅模型,将消息以日志形式存储。
  • 具有高度可伸缩性和可用性,适合构建大规模的实时数据流应用。
  • 支持多种客户端,包括 Java、Python、Go 等。

优点:缺点:适用场景:ErN28资讯网——每日最新资讯28at.com

  • Kafka 适用于需要高吞吐量、低延迟和大规模数据处理的应用,如日志收集、实时数据分析、事件驱动架构等。
  • 部署和配置复杂,需要专业知识。
  • 不适合小规模应用,相对复杂度高。
  • 高吞吐量和低延迟,适用于大规模数据处理和实时流处理。
  • 可伸缩性强,支持构建大规模数据管道。
  • 数据持久化和数据复制,确保数据的可靠性。

七、技术选型

RabbitMQ 和 Kafka其中,RabbitMQ 和 Kafka 是最常用的两种消息中间件,它们两者的主要区别有:ErN28资讯网——每日最新资讯28at.com

  • 性能:消息中间件的性能主要衡量吞吐量,Kafka 单机 QPS 能达到百万级别,RabbitMQ 单机 QPS 万级别,kafka 更高;
  • 数据可靠性:kafka 和 rabbitMQ 都具备多副本机制,数据可靠性都比较高;
  • 消费模式:Kafka 由客户端主动拉取,RabbitMQ 支持主动拉取和服务器推送两种模式。所以 RabbitMQ 的消息实时性更高,且对于消费者来说更简单;而 kafka 可以由消费者根据自身情况去拉取消息,吞吐量更高;
  • 幂等性:kafka 支持单个生产者,单分区单会话的幂等性,而 RabbitMQ 不支持;
  • 其它特性:RabbitMQ 支持优先级队列,延迟队列,死信队列(存储无法被消费的消息队列)等等。

如何选择合适的消息中间件在应用开发中,选择适合的消息中间件取决于具体需求:ErN28资讯网——每日最新资讯28at.com

  • 如果你的应用是一个中小型系统,对性能要求不高,而更关注简单的使用和快速开发,那么 ActiveMQ 可能是不错的选择。
  • 如果你需要处理大规模消息传递,追求高性能和低延迟,那么 RocketMQ 或 Kafka 可能更适合,具体选择取决于你的应用类型和需求。
  • 如果你的应用是企业级应用,需要可靠性和事务支持,但对性能要求不高,那么 RabbitMQ 可能是一个不错的选择。
  • 最终的选择还取决于你的技术栈、团队的经验以及具体的业务需求。建议在选择消息中间件之前仔细评估你的应用需求,并根据具体情况进行选择。

当然,无论选择哪种消息中间件,都需要深入了解其特点和使用方式,以确保它能够满足应用需求,以构建高效、可靠的分布式系统。ErN28资讯网——每日最新资讯28at.com

八、结语

不管用哪种消息中间件,我们在日常生活中都可以常常见到消费队列的妙用。ErN28资讯网——每日最新资讯28at.com

有了这些缓冲方式,我们的日常出行和消费秩序才能够很好地得到保障。ErN28资讯网——每日最新资讯28at.com

最终,我们在鹿嘴山庄赏玩了一会,去了《美人鱼》的拍摄基地,然后准备乘坐观光车回杨梅坑。ErN28资讯网——每日最新资讯28at.com

ErN28资讯网——每日最新资讯28at.com

这时,天色已经变黑,但排队的人数还是很多。看过文章后,想必大家已经知道此时我们需要用到什么方式来解决高峰流量的问题了,你学废了吗?ErN28资讯网——每日最新资讯28at.com

本文链接:http://www.28at.com/showinfo-26-13369-0.html应对流量高峰的利器——消息中间件

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。邮件:2376512515@qq.com

上一篇: 六个IntelliJ IDEA插件,助你编程如虎添翼

下一篇: 面试中如何答好:线程

标签:
  • 热门焦点
  • 官方承诺:K60至尊版将会首批升级MIUI 15

    全新的MIUI 15今天也有了消息,在官宣了K60至尊版将会搭载天玑9200+处理器和独显芯片X7的同时,Redmi给出了官方承诺,K60至尊重大更新首批升级,会首批推送MIUI 15。也就是说虽然
  • 5月安卓手机好评榜:魅族20 Pro夺冠

    性能榜和性价比榜之后,我们来看最后的安卓手机好评榜,数据来源安兔兔评测,收集时间2023年5月1日至5月31日,仅限国内市场。第一名:魅族20 Pro好评率:97.50%不得不感慨魅族老品牌还
  • 三万字盘点 Spring 九大核心基础功能

    大家好,我是三友~~今天来跟大家聊一聊Spring的9大核心基础功能。话不多说,先上目录:图片友情提示,本文过长,建议收藏,嘿嘿嘿!一、资源管理资源管理是Spring的一个核心的基础功能,不
  • 一文搞定Java NIO,以及各种奇葩流

    大家好,我是哪吒。很多朋友问我,如何才能学好IO流,对各种流的概念,云里雾里的,不求甚解。用到的时候,现百度,功能虽然实现了,但是为什么用这个?不知道。更别说效率问题了~下次再遇到,
  • 使用AIGC工具提升安全工作效率

    在日常工作中,安全人员可能会涉及各种各样的安全任务,包括但不限于:开发某些安全工具的插件,满足自己特定的安全需求;自定义github搜索工具,快速查找所需的安全资料、漏洞poc、exp
  • ESG的面子与里子

    来源 | 光子星球撰文 | 吴坤谚编辑 | 吴先之三伏大幕拉起,各地高温预警不绝,但处于厄尔尼诺大“烤”之下的除了众生,还有各大企业发布的ESG报告。ESG是“环境保
  • 华为和江淮汽车合作开发百万元问界MPV?双方回应来了

    8月1日消息,郭明錤今天在社交平台发文称,华为正在和江淮汽车合作,开发售价在100万元的问界MPV,预计在2024年第2季度量产,销量目标为上市首年交付5万辆。
  • 苹果公司要求三星和LG Display生产「无边框」OLED iPhone显示屏

    据 The Elec 报道,苹果已要求其供应商为未来的 iPhone 型号开发「无边框」OLED 显示面板。苹果显然已要求三星和 LG Display 开发新的 OLED 显示面
  • AI艺术欣赏体验会在上海梅赛德斯奔驰中心音乐俱乐部上演

    光影交错的镜像世界,虚实幻化的视觉奇观,虚拟偶像与真人共同主持,这些场景都出现在2019世界人工智能大会的舞台上。8月29日至31日,“AI艺术欣赏体验会”在上海
Top