今天了解了一下消息中间件,对现在比较流行且用的广泛的消息中间件进行分析总结。
1.rabbitmq
2.kafka
3.nsq
4.redis
主要针对以上四款进行说明,其它不说明是因为网上已经很多博客进行了分析和比较,以及说明了为什么不实用的原因。
首先对其适用的场景进行说明:
rabbitmq: 数据可靠性高,适用于业务数据较多的场景,例如:订单的处理,用户注册处理。
kafka:数据高吞吐,适用于日志收集,大数据分析等场景
nsq:高吞吐,go语言开发,对消息的完整性支持稍微弱一线,文档资料较少,出发适用go语言做为开发语言否则不建议使用
redis:作为nosql,可作为轻量级的消息中间件,开发量会大一点,需要自行实现可靠性,生产消费唯一性等。不过对小数据的消息队列支持性能完爆rabbitmq。可用于已经使用了redis 的项目做为中间件的使用。
对于中间件的使用原因:
1.对复杂系统的解藕,方便不同系统或者不同部门自建的配合开发
2.对不确定的高并发进行消峰。一面突然而来的高流量对系统或者数据库造成影响。
3.异步处理。对于逻辑处理时间较长的部分进行异步。
中间件不建议采用的原因:
1.项目复杂度不高的项目不建议采用,因为中间件可能会提高项目的复杂度
2.项目流量不是很大的项目不建议采用。
3.项目逻辑复杂度不高的不建议采用
4.项目初期不建议采用。因为可能会牵扯大量的精力和不确定性,造成项目的不稳定
5.项目很稳定的不建议采用。因为本身很稳定,引入中间件,如果中间件挂了,之前的都废了。
以上可根据项目情况和项目日后规划综合考虑进行选用,如果有说的不对的地方希望大家谅解。