kafka的分布式原理解读
kafka是apache的一个优秀的开源消息系统,如果您已经是kafka方面的高手,那么这篇博客可能并不适合您。本篇博客简单介绍一下kafka的分布式原理,作为kafka的入门。
首先,还是介绍一下kafka。在kafka的官网上,对kafka的定义叫做A distributed publish-subscribe messaging system。听起来有些高大上了哈,叫做“一个分布式发布-订阅消息传递系统”,其中的publish-subscribe是发布和订阅的意思。所以准确的来说,kafka是一个消息订阅和发布的系统。这个不是我说的,我也没有这么专业和权威,是看一本叫做“kafka系列文档”的PDF里面说的,里面讲得不错,有兴趣的可以看看。
首先,还是介绍一下kafka。在kafka的官网上,对kafka的定义叫做A distributed publish-subscribe messaging system。听起来有些高大上了哈,叫做“一个分布式发布-订阅消息传递系统”,其中的publish-subscribe是发布和订阅的意思。所以准确的来说,kafka是一个消息订阅和发布的系统。这个不是我说的,我也没有这么专业和权威,是看一本叫做“kafka系列文档”的PDF里面说的,里面讲得不错,有兴趣的可以看看。
回头咱们继续说kafka,kafka作为一个分布式发布-订阅消息传递系统,它的模式特别像设计模式中的观察者模式(虽然我没有请教相关大牛来验证我刚刚说的正确与否,暂且认为我说的是对的),又有点像PV操作。还是回到kafka的发布-订阅模式上来说,有人将消息发布比作生产者,消息订阅比作消费者,中间需要一个交互中心,我们称为存储阵列,或者官方一些我们称为代理(broker),这样我们就能勾画出这样一幅场景:
生产者将数据生产出来,push到broker进行存储,消费者需要消费就从broker拿数据进行对数据的处理。这样一个协作的过程,其实只是众多数据存储消费中的一个小小的分支,正常而言producer是将数据生产出来就不断的往broker进行push,而从数据流向而言,consumer要消费数据时,是主动去broker进行pull的,而不是broker主动pull数据给consumer,这点是需要特别注意的。
下图是kafka官方给出的图:
对kafka分布式原理的解读就到这里,具体我们公司没有用kafka,因为圈子里总时不时的会出现讨论kafka的话题,所以我就想着研究看看kafka到底是什么。现在看看又把kafka和MQ找齐了,但是二者具体的区别我现在还没有研究,也没有理解那么深刻,所以不方便说什么。不过打听来的而已,说kafka的重量级的,大数据量达到了的确会有很高的处理效率,不过听好前提,是数据量大的情况下处理效率很高。相反数据量达不到相应的级别,很可能会造成不必要的负担的。kafka就先说到这里,以后有相关的研究在更新博客。
