赞
踩
Kafka是一个分布式消息中间件,支持分区的、多副本的、多订阅者的、基于zookeeper协调的分布式消息系统。
通俗来说: kafka就是一个存储系统,存储的数据形式为“消息”;
它的主要作用类似于蓄水池,起到一个缓冲作用;
(1)解耦
传统模式:
传统模式的缺点:
中间件模式:
中间件模式的的优点:
(2)异步
传统模式:
传统模式的缺点:
中间件模式:
中间件模式的的优点:
(3)削峰
传统模式
传统模式的缺点:
中间件模式:
中间件模式的的优点:
消息生产者,就是向kafka broker 发消息的客户端。
consumer :消息消费者,从kafka broker 取消息的客户端。
consumer group:单个或多个consumer可以组成一个consumer group;这是 kafka 用来实现消息的广播(发给所有的 consumer)和单播(发给任意一个 consumer)的手段。一个 topic 可以有多个Consumer Group。
数据的逻辑分类;可以理解为数据库中“表”的概念;
(1)partition:topic中数据的具体管理单元;(可以理解为hbase中表的“region”概念)
一个topic 可以划分为多个partition,分布到多个 broker上管理;
每个partition由一个kafka broker服务器管理;
partition 中的每条消息都会被分配一个递增的id(offset);
每个 partition 是一个有序的队列,kafka 只保证按一个 partition 中的消息的顺序,不保证一个 topic 的整体(多个 partition 间)的顺序。
每个partition都可以有多个副本;
分区对于 kafka 集群的好处是:实现topic数据的负载均衡。分区对于消费者来说,可以提高并发度,提高效率。
(2)broker
一台 kafka 服务器就是一个 broker。
一个kafka集群由多个 broker 组成。
一个 broker 可以容纳多个 topic的多个partition。
(3)offset
消息在底层存储中的索引位置,kafka底层的存储文件就是以文件中第一条消息的offset来命名的,通过offset可以快速定位到消息的具体存储位置;
partition replica中的一个角色,producer和consumer只跟leader交互(负责读写)。
partition的副本,保障partition的高可用(replica副本数目不能大于kafka broker节点的数目,否则报错。)
每个partition的所有副本中,必包括一个leader副本,其他的就是follower副本
partition replica中的一个角色,从leader中拉取复制数据(只负责备份)。
如果leader所在节点宕机,follower中会选举出新的leader;
每一条数据都有一个offset,是数据在该partition中的唯一标识(其实就是消息的索引号)。
各个consumer会保存其消费到的offset位置,这样下次可以从该offset位置开始继续消费;
consumer的消费offset保存在一个专门的topic(__consumer_offsets)中;(0.10.x版本以前是保存在zk中)
在客户端编程代码中,消息的类叫做 ProducerRecord; ConsumerRecord;
简单来说,kafka中的每个massage由一对key-value构成
各个字段的含义介绍如下:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。