这里我们来了解一下中间件MQ中的RabbitMQ。
一:什么是中间件
有的童鞋可能会问:什么是中间件呢?你还别说,我真去百度了一下,百度上是这么说的:
中间件(Middleware)是处于操作系统和应用程序之间的软件,也有人认为它应该属于操作系统中的一部分。人们在使用中间件时,往往是一组中间件集成在一起,构成一个平台(包括开发平台和运行平台),但在这组中间件中必须要有一个通信中间件,即中间件=平台+通信,这个定义也限定了只有用于分布式系统中才能称为中间件,同时还可以把它与支撑软件和实用软件区分开来。
二:中间件特点
中间件具有如下的一些特点:
1) 满足大量应用的需要
2) 运行于多种硬件和OS平台
3) 支持分布计算,提供跨网络、硬件和OS平台的透明性的应用或服务的交互
4) 支持标准的协议
5) 支持标准的接口
三:所有中间件
未来我们可能会学习如下的中间件:
1) 消息中间件 ActiveMQ
2) 消息中间件 RabbitMQ
3) 消息中间件 Kafaka
4) 消息中间件 RocketMQ
5) 消息中间件应用场景说明
6) 负载均衡中间件(Nginx/Lvs)
7) 缓存中间件(Memcache/Redis)
8) 数据库中间件(ShardingJdbc/Mycat)
当然,我们要学习的中间件是RabbitMQ。
四:为什么要使用RabbitMQ
目前在我所在的公司开发中,使用的是单体架构的模式进行架构,
而这种架构的典型的特点:就是把所有的业务和模块,源代码,静态资源文件等都放在一个一工程中,如果其中的一个模块升级或者迭代发生一个很小变动都会重新编译和重新部署项目。 这种的架构存在的问题就是:
1:耦合度太高
2:运维的成本过高
3:不易维护
4:服务器的成本高
5:以及升级架构的复杂度也会增大
如下图所示:
这样就有了后续的分布式架构,如下:
那么,什么是分布式架构呢?
通俗一点:分布式架构就是一个请求由服务器端的多个服务(服务或者系统)协同处理完成
分布式架构有以下优点:
1:服务系统的独立,占用的服务器资源减少和占用的硬件成本减少,确切的说是:可以合理的分配服务资源,不造成服务器资源的浪费
2:系统的独立维护和部署,耦合度降低,可插拔性。
3:系统的架构和技术栈的选择可以变的灵活(而不是单纯的选择java)
4:弹性的部署,不会造成平台因部署造成的瘫痪和停服的状态。
分布式架构有以下缺点:
1:学习成本高,技术栈过多
2:运维成本和服务器成本增高
3:人员的成本也会增高
4:项目的负载度也会上升
5:面临的错误和容错性也会成倍增加
6:占用的服务器端口和通讯的选择的成本高
7:安全性的考虑和因素逼迫可能选择RMI/MQ相关的服务器端通讯。
分布式架构之间大多都会使用中间件MQ进行通讯。如下图所示:
在生产环境中,一般情况下,我们都是部署中间件MQ的集群才满足我们的高可用机制要求。
有的同学就要问了,什么是高可用机制呢?
所谓高可用:是指产品在规定的条件和规定的时刻或时间内处于可执行规定功能状态的能力。
当业务量增加时,请求也过大,一台消息中间件服务器的会触及硬件(CPU,内存,磁盘)的极限,一台消息服务器你已经无法满足业务的需求,所以消息中间件必须支持集群部署。来达到高可用的目的。
目前我接触到的业务可能是还用不上高可用机制,这个作为了解。
有好的建议,请在下方输入你的评论。