kafka核心概念

一、kafka核心概念

  • Message(消息): 传递的数据对象,主要由四部分构成:offset(偏移量)、key、value、timestamp(插入时间)
  • Broker(代理者):Kafka集群中的机器/服务被成为broker, 是一个物理概念。
  • Topic(主题):维护Kafka上的消息类型被称为Topic,是一个逻辑概念。
  • Partition(分区):具体维护Kafka上的消息数据的最小单位,一个Topic可以包含多个分区。Partition特性:ordered&immutable。(在数据的产生和消费过程中,不需要关注数据具体存储的Partition在那个Broker上,只需要指定Topic即可,由Kafka负责将数据和对应的Partition关联上)
  • Producer(生产者):负责将数据发送到Kafka对应Topic的进程
  • Consumer(消费者):负责从对应Topic获取数据的进程
  • Consumer Group(消费者组):每个consumer都属于一个特定的group组,一个group组可以包含 多个consumer,但一个组中只会有一个consumer消费数据。

二、kafka原理

  1. 一个Topic分为多个Partition来进行数据管理,一个Partition中的数据是有序、不可变 的,使用偏移量(offset)唯一标识一条数据,是一个long类型的数据
  2. Partition接收到producer发送过来数据后,会产生一个递增的offset偏移量数据,同时 将数据保存到本地的磁盘文件中(文件内容追加的方式写入数据);Partition中的数据存活时间超过参数值(log.retention.{ms,minutes,hours},默认7天)的时候进行删除(默认)
  3. Consumer根据offset消费对应Topic的Partition中的数据(也就是每个Consumer消费的每个Topic的Partition都拥有自己的offset偏移量)注意:Kafka的数据消费是顺序读写的,磁盘的顺序读写速度(600MB/sec)比随机读写 速度(100k/sec)快
  4. Kafka集群中由producer负责数据的产生,并发送到对应的Topic;Producer通 过push的方式将数据发送到对应Topic的分区
  5. Producer发送到Topic的数据是有key/value键值对组成的,Kafka根据key的不 同的值决定数据发送到不同的Partition,默认采用Hash的机制发送数据到对应Topic的不同Partition中,配置参数为{partitioner.class}
  6. Producer发送数据的方式分为sync(同步)和async(异步)两种,默认为同步方式, 由参数{producer.type}决定;当发送模式为异步发送的时候,Producer提供重 试机制,默认失败重试发送3次
  7. Kafka有两种模式消费数据:队列和发布订阅;在队列模式下,一条数据只会发 送给customer group中的一个customer进行消费;在发布订阅模式下,一条数 据会发送给多个customer进行消费
  8. Kafka的Customer基于offset对kafka中的数据进行消费,对于一个customer group中的所有customer共享一个offset偏移量
  9. Kafka中通过控制Customer的参数{group.id}来决定kafka是什么数据消费模式, 如果所有消费者的该参数值是相同的,那么此时的kafka就是类似于队列模式, 数据只会发送到一个customer,此时类似于负载均衡;否则就是发布订阅模式
  10. Kafka的数据是按照分区进行排序的(插入的顺序),也就是每个分区中的数据是有 序的。在Consumer进行数据消费的时候,也是对分区的数据进行有序的消费的, 但是不保证所有数据的有序性(多个分区之间)(同一个分区数据先进相出)
  11. Consumer Rebalance:当一个consumer group组中的消费者数量和对应Topic的分区数量一致的时候,此时一个Consumer消费一个Partition的数据; 如果不一致,那么可能出现一个Consumer消费多个Partition的数据或者不消费 数据的情况,这个机制是根据Consumer和Partition的数量动态变化的
  12. Consumer通过poll的方式主动从Kafka集群中获取数据
  13. Kafka的Replication指的是Partition的复制,一个Partition的所有分区中只有 一个分区是leader节点,其它分区是follower节点。Replication对Kafka的吞吐率有一定的影响,但是极大的增强了可用性。Follower节点会定时的从leader节点上获取增量数据,一个活跃的follower节点 必须满足一下两个条件:
    所有的节点必须维护和zookeeper的连接(通过zk的heartbeat实现)
    follower必须能够及时的将leader上的writing复制过来,不能“落后太多”;落后太多,由参数{replica.lag.time.max.ms}和{replica.lag.max.messages}决定
  14. MessageDeliverySemantics是消息系统中数据传输的可靠性保证的一个定义,主要 分为三种类型:
    At most once(最多一次):消息可能会丢失,但是不可能重复发送 At least once(最少一次):消息不可能丢失,但是可能重复发送 Exactly once(仅仅一次):消息只发送一次,但不存在消息的丢失
    Kafka的Producer通过参数{request.required.acks}来定义确定Producer和Broker之间 是哪种消息传递类型
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值