为什么要使用消息中间件
具体的说,中间件屏蔽了底层操作系统的复杂性,使程序开发人员面对一个简单而统一的开发环境,减少程序设计的复杂性,将注意力集中在自己的业务上,不必再为程序在不同系统软件上的移植而重复工作,从而大大减少了技术上的负担,中间件带给应用新系统的,不只是开发的简便,开发周期的缩短,也减少了系统的维护、运行和管理的工作量,还减少了计算机总体费用的投入
中间件特点
为解决分布异构问题,人们提出了中间件(middleware)的概念,中间件是位于平台(硬件和操作系统)和应用之间的通用服务,如下图所示,这些服务具有标准的程序接口和协议,针对不同的操作系统和硬件平台,它们可以有符合接口和协议规范的多种实现
也许很难给中间件一个严格的定义,但中间件应具有如下的一些特点:
- 满足大量应用的需要
- 运行于多种硬件和OS平台
- 支持分布计算,提供跨网络,硬件和OS平台的透明性的应用或服务的交互
- 支持标准的协议
- 支持标准的接口
由于标准接口对于可移植性和标准协议对于互操作性的重要性,中间件已成为许多标准化工作的主要部分,对于应用软件开发,中间件远比操作系统和网络服务更为重要,中间件提供的程序接口定义了一个相对稳定的高层应用环境,不管底层的计算硬件和系统软件怎样更新换代,只要将中间件升级更新,并保持中间件对外的接口定义不变,应用软件几乎不需任何修改,从而保护了企业在应用软件开发和维护中的重大投资。
消息中间件应用场景
假设有一个数据要进行迁移或者并发过多时,比如有10w的并发请求下订单,我们可以在这些订单入库之前,把订单请求堆积到消息队列中,让它稳健可靠的入库和执行
- 跨系统数据传递
- 高并发的流量削峰
- 数据的分发和异步处理
- 大数据分析与传递
- 分布式事务
Java、go、php 等语言都遵循了TCP/IP协议,使用中间件技术第一个需解决的问题就是互通性:平台+通讯,通过遵循某种协议和规范,才能跟底层操作系统硬件(cpu,内存,硬盘)打交道。
✧ 解析:MySQL支持的是TCP/IP协议,遵循该协议后可以把数据写入到硬盘中——持久化功能
☛ 项目系统由单体架构演变成多体架构
首先解决的事就是选择什么样的中间件技术去解决沟通,如mysql、RabbitMQ等。