数据队列---kafka-1

kafka是一个分布式消息队列

kafka对消息保存时根据Topic进行归类,

发送消息者称为Productor,消息接受者称为Consumer,kafka集群有多个kafka实例

每个实例(server)称为broker.

kafka依赖于zookeeper集群(保存信息,系统的可用性),zookeeper所在结点要开网络监控

数据队列---kafka-1_第1张图片

 为什么需要消息队列

解耦

冗余

kafka架构

数据队列---kafka-1_第2张图片

相关概念

zookeepr保存的是

节点状态信息,消费者当前消费消息的状态信息(决定谁是Leader,判断消费到哪里了)

broker是结点(相当于进程、服务)实现负载均衡

生产者发送消息

给指定topic(有很多分区Partition,分区分主从关系,分区是最小单元)

分区有:Leader 负责通信     Follower 同步Leader数据的作用   一个Leader崩了,其中一个Follower变为Leader 高可用

kafka冗余机制()

同一分区消息是有序的,不同分区消息不一定有序

消费者消费消息的最小单元是最小分区,通过分区来消费的

消费者组消费消息:

同一时间只能是一个Consumer消费者消费消息一个组里Consumer消费者消费消息是不会重复的(一个分区对不同组进行消费是可以重复的),Consumer消费者与一个分区建立关系后就要消费完

消费者者消费多个分区时不一定有序(如何保证有序:1. 指定分区号  2.指定分区规则,使有序的在同一分区,也就是对key处理)

kafka可以说是半持久化存储的(消息是流失的,数据处理系统,不是数据库)kafka默认保存7天,保存在内存中也就是磁盘里

分布式模型:

在同一个kafka集群中:拥有同一个Topic——却有不同分区,不同的数据——不同的分区 (kafka中基本所有角色都是可分布式

 

 

 

你可能感兴趣的:(消息队列Mq,kafka,队列,消息队列)