我们使用消息中间件核心就是为了 解耦,异步,削峰平谷。我知道有4种,虽然之前项目都是用的kafka。
1、ActiveMq:较早的开源中间件,单机吞吐量万级,有性能瓶颈,适合吞吐量小的项目架构。
2、RocketMq:阿里开源的中间件。
优点:分布式架构,单机吞吐量十万级,支持高可用,高并发,每年双十一就可了解他的高可用了,那么大吞吐量都能支撑。
缺点:虽然开源,但是阿里有一套API没有开源,里面包含更好的一些优化,比如上游系统应用和下游mq解耦等,如果你新项目要实现,你需要修改大量代码。
3、RabbitMq:市面上很常见的中间件,轻量级的有路由器功能的中间件。
producer->路由器->队列->consumer,从而一对一还是广播,或者延时,死信队列等。
优点:前人踩过的坑很多,然后社区就比较丰富了,还有使用时候管理界面也是比较丰富。他的最大优点就是时效性高,因为RabbitMq是认为队列就是一个管道,所以不能在管道中停留太久。
缺点:性能有瓶颈,适合吞吐量小的架构。同样因为他认为是一个管道,所以他的消息堆积太多就会降低性能。
4、apache kafka。
优点:最大有点就是吞吐量高,他本身是为大数据准备的。单机吞吐量TPS 百万级/秒,也是分布式架构,高并发,高可用,一段数据多个结点存储,少量机器宕机,不影响数据的使用。
缺点: