传统的消息队列的概念
Java中关于消息队列是有规范在的—JMS(Java Message Service)规范,概念如下图:

KafKa有哪些自己的特性呢?
分区和集群
- 将数据流分成多个分区,每个分区可以独立地进行读写操作。每个Topic由多个分区组成,这些分区可以分布在集群中的不同Broker上。
以发布订阅的模式为例,消息的生产和消费都是面向Topic的,既然Topic是分成多个分区的,每个分区又能独立的进行读写操作,所以在生产和消费的时候能够实现多实例并发操作,减轻单个实例的负载。
- 多个Broker协作组成了集群。
Controller选举过程
(抢占----上线----唯一----监听等待):
- 第一次启动Kafka集群时,会同时启动多个Broker节点,每一个Broker节点就会连接ZooKeeper,并尝试创建一个临时节点 /controller(抢占)
- 因为ZooKeeper中一个节点不允许重复创建,所以多个Broker节点,最终只能有一个Broker节点可以创建成功,那么这个创建成功的Broker节点就会自动作为Kafka集群控制器节点,用于管理整个Kafka集群。
- 没有选举成功的其他Slave节点会创建Node监听器,用于监听 /controller节点的状态变化。
- 一旦Controller节点出现故障或挂掉了,那么对应的ZooKeeper客户端连接就会中断。ZooKeeper中的 /controller 节点就会自动被删除,而其他的那些Slave节点因为

最低0.47元/天 解锁文章
1226

被折叠的 条评论
为什么被折叠?



