第一次被问到“消息中间件如何选型”这个问题,大概是在2018年。当时的我对于消息中间件的认知仅停留在使用层面,不知所以然,自然也就回答不上来。
为了避免小伙伴们遇到同样的问题,在此分享一下我对这个问题的见解,欢迎大家交流。
众所周知,目前市面上成熟的消息中间件均能达到系统解耦、流量削峰、异步处理等效果。虽然这些中间件在功能上有所重叠,但是在设计和实现上都有各自的优势。具体使用哪个中间件还是要根据实际的情况来选择。
在选型时我认为需要从以下几点出发:
所以简单来说,消息中间件的选型目的主要是在满足业务需求的同时,还要保证系统的稳定不受其影响,并且力求最低的开发运维成本。
这里以RabbitMQ、Kafka、RocketMQ为选型竞品,结合选型的目的,通过各中间件的架构模型了解下一下各竞品的特征及优势,以便对“消息中间件如何选型”这个问题进行回答。
(默认各位看官对消息中间件有基本的了解)
通过一个案例进行选型说明,案例如下:
一个使用Java语言开发的电商平台,需要实时收集订单信息、用户行为数据以及日志数据,并进行实时分析和处理。同时,还需要保证数据的一致性和可靠性,并支持高可用性和扩展性。
结合RabbitMQ、Kafka、RocketMQ的特征及优势,这个案例可以考虑RocketMQ和Kafka的组合方案,原因如下:
当面试官问“消息中间件如何选型”这个问题时,本质上是考察你对消息中间件的掌握程度以及你在团队中处于什么角色。所以,选型的前提是你要对需求和选型的竞品有足够的了解。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。