1、MQ有什么作用?
MQ(MessageQueue,消息队列)将消息以队列的形式存储起来,在不同的应⽤程序之间进行传递 。队列是一种先进先出的数据结构。
MQ主要有三个作用:
(1)异步
举例: 电商系统,订单支付完成后,一般有赠送用户积分和其他消息通知等。针对这些可以用MQ异步去处理,使主流程链路变短。
作用: 提高系统的响应速度和吞吐量。
(2)解耦
举例:电商系统,订单支付完成后,一般有优惠券扣除、库存扣减、物流系统发货等。
作用:
①服务之间进⾏解耦,才可以减少服务之间的影响。提⾼系统整体的稳定性以及可扩展性。
②可以实现数据分发。⽣产者发送⼀个消息后,可以由⼀个或者多个消费者进行消费,而且消费者的增加或者减少对⽣产者没有影响。
(3)削峰
举例:秒杀活动时,一般会瞬时流量很大,同时很多用户,可以把请求放进MQ,再慢慢消费。
作用:以稳定的系统资源应对突发的流量冲击。
2、三大主流MQ产品简介
在MQ⻓期发展过程中,诞⽣了很多MQ产品,但是有很多MQ产品已经逐渐被淘汰了。⽬前最常⽤的MQ产品包括Kafka、RabbitMQ和RocketMQ。
2.1、Kafka产品介绍
Kafka是⽬前最具影响⼒的开源MQ产品。
官⽹地址:https://kafka.apache.org/
。
Apache Kafka最初由LinkedIn开发并于2011年开源。它主要解决⼤规模数据的实时流式处理和数据管道问题。
Kafka是⼀个分布式的发布-订阅消息系统,可以快速地处理⾼吞吐量的数据流,并将数据实时地分发到多个消费者中。Kafka消息系统由多个broker(服务器)组成,这些broker可以在多个数据中心之间分布式部署,以提供⾼可⽤性和容错性。
优点:
吞吐量⾮常⼤,低延迟、性能⾮常好,技术生态完整,
具有可扩展性、持久性和容错性等。
缺点:会丢失数据,功能⽐较单⼀。
适用场景:
实时流处理、⽇志聚合、监控和数据分析等方面,
可以与其他⼤数据⼯具集成,如Hadoop、Spark和Storm等,构建⼀个完整的数据处理⽣态系统。
2.2、RabbitMQ产品介绍
RabbitMQ的历史可以追溯到2006年,开源、基于erlang语言开发,使用非常广泛。
官网地址:https://www.rabbitmq.com/
。
优点: 消息可靠性高,功能全面。
缺点:
吞吐量比较低,消息积累会影响性能,
erlang语言比较小众。
适用场景: 小规模场景,比如企业内部小规模服务调用。
2.3、RocketMQ产品介绍
RocketMQ是阿⾥巴巴开源的⼀个消息中间件,在阿⾥内部历经了双⼗⼀等很多⾼并发场景的考验,能够处理亿万级别的消息。2016年开源后捐赠给Apache,现在是Apache的⼀个顶级项⽬。
官⽹地址:http://rocketmq.apache.org
。
优点:
⾼吞吐、⾼性能、⾼可⽤,
功能全⾯,客户端协议丰富,
使⽤java语⾔开发,⽅便定制。
缺点: 服务加载⽐较慢,技术⽣态相对没有那么完整
适用场景:几乎全场景,尤其适合⾦融场景。
3、内容预告&我的公众号
接下来,将会分享MQ系列文章,会结合Java代码简单Demo,这样方便了解使用。后续单个技术点分享完会以项目方式分享。
敬请关注我的公众号:大象只为你,持续更新技术知识......
推荐站内搜索:最好用的开发软件、免费开源系统、渗透测试工具云盘下载、最新渗透测试资料、最新黑客工具下载……
还没有评论,来说两句吧...