这两年,圈子里关于海量数据、复杂业务场景的探讨越来越多,一方面是居安思危,另一方面是,大家对成熟系统的追求一直在升级。也难怪,毕竟现在高级工程师的门槛都上升到系统层面了,谁都不想落下。
我的经验是,成熟系统的构建,最不能缺少的一环就是消息队列。消息队列的概念看似好懂,但落实到复杂问题的解决,则非常考验内功。比如:
- 如何评估一个消息队列是否适合当前业务?
- 消息队列的模式优选推还是拉?
- 如何确保消息不丢失?
- Kafka、RocketMQ、Pulsar 的原理有何区别?
其实,市场上流行的消息队列产品无非那几种。所以,精通消息队列的本质,就是掌握不同消息队列产品的特点。只有从根本上掌握了各个消息队列的优势、特性和适用场景,才能让你对系统完备程度的理解更上一层楼。
上面这张图出自国内领先的第三方支付企业拉卡拉。拉卡拉很多系统的业务逻辑和具体的消息系统之间存在耦合,在选型消息队列的过程中,拉卡拉着重比较了 Kafka、RocketMQ 和 Pulsar,最后决定使用 Pulsar。
简单来说,云原生的分布式消息流平台 Pulsar 在性能、兼容方面都有明显优势,大获全胜。Kafka 的计算与存储不分家,当 topic 数量较多时,它的存储机制必然会导致性能下降。而 Pulsar 采用计算与存储分离的架构,保持性能的同时,更利于长时间存储消息。
目前,Pulsar 已经被腾讯、智联招聘、涂鸦智能、中国移动、中国电信、360、达达集团(京东到家)、苏宁、平安证券、华为等各个领域的巨头广泛实践,有全面赶超 Kafka 的态势。像极了下一个风口,很适合深入学习和掌握。