这是我参与「第四届青训营 」笔记创作活动的第11天
中介者这种存在一直以来都是解耦的好手段,而消息队列则是实践中使用最广中介形式。大数据领域中由于其中频繁的数据交换,远超普通应用的数据量级,因此消息队列被广泛的使用。应用场景主要有三个:
一是传统消息队列,也就是削峰填谷之类的;
二是所谓的消息总线,这里对队列要求有弱化;
三则是流数据平台,一般这种会要求具有一些数据处理功能。
在大数据领域中的信息队列里,最值得讨论的就是Kafka了,其次则是怀揣着“下一代消息队列”,并且想要取代Kafka的pulsar了。
Kafka强就强在它提供的大吞吐量能力,主要和它对这部分的优化,比如pipeline批量流水线机制,避免大量小IO,当然这里对时间延迟有一定的放弃,虽然可以做一定的调整降低时间延迟,但是同样会降低吞吐量。
kafka本身的分布式架构和一般的基于zookeeper实现分布式一致性的系统没有太多的区别,不过目前有一些比较有意思的地方,一是kafka有了去除zookeeper依赖的想法,并且kafka 官方提供了kraft这个东西作为分布式一致性的backbone。另外则是云原生时代的追求,实现计算储存分离架构。不过这两者都还在实验阶段,还没有到正式发布的阶段。
号称下一代消息队列的plusar倒是不一样,它已经实现了计算和储存的分离,两者之间分了层,各自可以进行各自的优化,比如储存层可以自行实现冷热储存机制。计算层不关联数据,作为无状态的应用,也可以更简单的实现计算资源扩容之类的操作。