什么是中间件?
顾名思义,中间件处于操作系统软件与用户的应用软件的中间。
中间件在操作系统、网络和数据库之上, 应用软件的下层,总的作用是为处于自己上层的应用软件提供运行与开发的环境,帮助用户灵活、高效地开发和集成复杂的应用软件。
在众多关于中间件的定义中,比较普遍被接受的是 IDC 表述的:中间件是一种独立的系统软件或服务程序,分布式应用软件借助这种软件在不同的技术之间共享资源,中间件位于客户机服务器的操作系统之上,管理计算资源和网络通信。
1. 那什么是消息中间件?
从性能角度讲,传统的RPC调用多为同步调用,当发生IO阻塞时会造成CPU空转,造成性能损耗。另外从业务角度出发,很多业务处于主流程之外,天然适合异步去做,这就有了消息中间件的用武之地。消息中间件是抽象出来专门用于集群环境下多模块通信的中间件组件。
2. 为什么要使用消息中间件
举个例子:大家常在12306上面买车票。如果你的账号绑定了手机、邮箱之类的联系方式,那么你完成一次车票购买的时候,app上显示购买成功。过一会,你的手机/邮箱户收到对应的车次信息。
那我们代码逻辑顺序如何写?
- 购买车票——>调用接口发短信——>发邮件——>app显示购买成功;
- 购买车票——>app显示购买成功——>发短信——>发邮件;
那么方法2比方法1好在哪些方面?
用户感知和体验上、
异步交互、功能解耦、
提高整个系统的可扩展性和可用性
…
那么方法2逻辑上怎么实现?
买票完成后,告诉消息中间件该发短息、发邮件了,然后系统就可以继续忙别的事情了,让其他功能受到消息后异步的去完成其他的事情。
以上例子只是针对了异步和解耦的场景,还有其他的场景也可适用。
消息中间件有哪些?