(一)消息中间件的前言

一、前言

中间件技术一般用于分布式项目中,因为从单体项目演变为分布式项目就会产生沟通协同的问题,这样就会采用中间件技术去解决和屏蔽系统之间的复杂性和让我们的项目之间变得更加灵活,因为这些中间件都遵守一些由TCP/IP或者UDP协议演变的协议,所以中间件又可以支持多种语言,这就是中间件的作用。

什么是消息中间件

早期的单体项目

在这里插入图片描述
演变成分布式架构

在这里插入图片描述
特点

通俗一点:就是一个请求由服务器端的多个服务(服务或者系统)协同处理完成,原来是一个JVM完成,现在是多个。

和单体架构不同的是,单体架构是一个 清求发起jvm调度线程(确切的是tomcat线程池)分配线程Thread来处理请求直
到释放,而分布式是系统是: -个请求 是由多个系统共同来协同完成,jvm和环境都可能是独立。如果生活中的比喻的
话,单体架构就想建设一个小房 子很快就能够搞定,如果你要建设一个鸟巢或者 大型的建筑,你就必须是各个环节的协
同和分布,这样目的也是项目发展都后期的时候要去部署和思考的问题。我们也不能看出来: 分布式架构系统存在的特
点和问题如下:

在这里插入图片描述

基于消息中间件的分布式架构

在这里插入图片描述
从上图可以看出,消息的中间件是
1.利用可靠的消息传递机制进行系统和系统之间的直接通讯 。
2.通过提供消息传递和消息的排队机制,他可以在分布式系统环境下扩展进程间的通讯。

消息中间件应用的场景

  • 跨系统的数据传递
  • 高并发的流量削峰
  • 数据的分发和异步处理
  • 大数据分析和传递
  • 分布式事务

串行和异步执行的图解

在这里插入图片描述

消息中间件的本质和设计

MQ消息队列:负责数据的接受、传递和存储,所以性能要高于普通的服务和技术。

消息中间件的核心组成部分

  • 消息的协议
  • 消息的持久化机制
  • 消息的分发策略
  • 消息的高可能、高可靠
  • 消息的容错机制

二、MQ介绍

2.1、概述

主要是消息队列的简称,顾名思义就是队列中存放着上下游的消息,就是一种跨线程的通信机制,主要的作用就是 上下游的逻辑解耦以及物理解耦

2.2、作用

  • 削峰填谷
    当很多的用户同时访问一个系统时,我们为了防止一下巨量的访问次数同时砸到这个系统上时,就将这些用户先进行MQ的访问,然后由MQ来进行缓冲,分散时间段,减少系统压力,不会造成用户访问失效,缺点就是如果没弄好会造成用户等待时间过长。

  • 应用解耦
    也就是将应用系统之间进行解耦,防止如果相关联的系统之间,如果一个系统崩了,其他系统也崩了,如果使用了MQ就可以防止这种问题,如下图所示
    在这里插入图片描述

  • 异步处理

    也就是服务之间的异步处理,假设A服务调用B服务时,B服务需要很长的时间才能运行完,这个时候A服务是不知道需要多长时间的,所以只能对B进行查询然后返回回调信息,这是不可控的时间,为解决这个问题就可以在两者之间使用MQ,B完成后就可以向MQ发送完成的消息信号,A有信号时接收就行,解决在B运行期间,A不需要傻傻等待,可以异步去做自己的事情。
    在这里插入图片描述

2.3、各类MQ使用场景

  • Kafka
    适合产生大量数据的互联网服务的数据收集业务。大型公司建议可以选用,如果有日志采集功能,
    肯定是首选 kafka 了
  • RocketMQ
    天生为金融互联网领域而生,对于可靠性要求很高的场景,尤其是电商里面的订单扣款,以及业务削
    峰,在大量交易涌入时,后端可能无法及时处理的情况。
  • RabbitMQ
    结合 erlang 语言本身的并发优势,性能好时效性微秒级,社区活跃度也比较高,管理界面用起来十分
    方便,如果你的数据量没有那么大,中小型公司优先选择功能比较完备的 RabbitMQ。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值