基于Kafka的订阅推送
Posted Nathon的学习笔记
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了基于Kafka的订阅推送相关的知识,希望对你有一定的参考价值。
Kafka作为一个高吞吐量的分布式发布订阅消息系统,可以很高的处理网站中的动作流式数据.个人觉得也类似于一种消息的中间件,可以广泛用于实时消息的处理.
来看看它的构造,kafka是根据Topic进行分类,发送消息方为producer,接受方为consumer,所以它也类似于一种生产者-消费者模型.每个kafka集群可以有多个实例组成,每一个实例也就是所谓的broker。
谈到集群,就不得不说zookeeper了,可以说kafka是依赖于zookeeper的,它是通过zookeeper来实现集群的高可用性和元数据的管理。
可以看下,这里集群有3个节点,我在其中一个节点上创建了一个topic,每个topic有2个分区,topic的副本数量为2(用于集群的高可用和容错机制)。集群上的描述如下:
(2号节点作为生产者)
(3号节点作为消费者)
在正常的生产中,少不了这种场景,就是某个节点挂掉了,那么网络间的通信或者数据传递怎么办?来看看,kafka利用zookeeper来作为容错的机制。
例如,这里2号节点宕掉了(这里直接把该节点的kafka应用进程2876给kill掉);
再来看下,集群中的描述,存活的节点只有1号和3号broker,跟之前的个数不一样.
换言之,当集群中某个broker挂了,zookeeper会选择新的broker提供服务,这里partition 0的2号broker挂掉了,kafka有优先副本的机制,选取了3号节点作为该分区的leader进行服务,达到了leader分配的负载均衡作用。
以上是关于基于Kafka的订阅推送的主要内容,如果未能解决你的问题,请参考以下文章
使用 kafka 作为消息代理为桌面/移动/Web 应用程序创建实时推送通知系统