首页 > 其他 > 详细

《Kafka技术内幕》学习笔记

时间:2018-08-23 18:50:57      阅读:180      评论:0      收藏:0      [点我收藏+]

第一章 Kafka入门

1.1 Kafka流式数据平台

Kafka作为流式数据平台的特点:

  消息系统:两种消息模型:队列和发布订阅。

    队列模型:将处理工作平均分给消费组中的消费者成员。

    发布订阅模型:将消息广播给多个消费组(consumer group)

  队列模式(点对点模式):多个消费者读取消息队列,每条消息只发给一个消费者。

  发布订阅模式:多个消费者订阅主题,主题的每条记录会发布给所有消费者。

  存储系统:数据写入Kafka集群的服务器节点时,会复制多份来保证出现故障时仍然可用。

为了保证消息的可靠性,允许生产者的生产请求在收到应答结果之前,阻塞地等待一条消息,直到它完全复制到多个节点,才认为这条消息写入成功。

  流处理系统:提供了流处理API,比如流的聚合、连接、各种转换。

  将消息系统、存储系统、流处理系统组合在一起。

 

1.2 Kafka的基本概念

分区模型:

  Kafka集群由多个消息代理服务器(broker server)组成。

  每条消息都有一个topic,一个topic一般会有多个消息的订阅者。

  每个topic都有1到N个分区。

  分区中每条消息都会按照顺序分配到一个编号,叫做偏移量(offset)。

  每条消息包含键值和时间戳。

  Kafka以分区为最小的粒度,确保一个分区只属于一个消费者。

  每个topic有多个分区,不同消费者处理不同分区,保证了消息的有序性,也做到了消费者的负载均衡。

 

消费模型

  消息的消费模型有两种:推送模型和拉取模型。

  推送模型:由消息代理记录消费者的状态。发送完消息后,状态为已发送,消费者确认收到后状态为已消费。

这种做法是不可取的,因为消息代理要记录所有消息的状态。

  拉取模型:Kafka采用拉取模型,由消费者自己记录消费状态。

消费者控制偏移量:可以按任意顺序消费消息,可以重置到旧的偏移量。

生产者发布的消息会一直存在集群中,不管有没有被消费,用户可以设置保留时间来清理过期数据。

 

分布式模型:

  每个分区会以副本的方式复制到多个消息代理节点上。

  其中一个节点为主副本(leader),其他节点作为从副本(follower)。

  主副本负责所有的读写,从副本仅从主副本同步数据。

  当一个主副本出现故障时,其中一个从副本会成为新的主副本。

  分区的主副本是均衡分布在各个节点上的。

  分区是消费者线程模型的最小并行单位。

  消息没有键时,通过轮询方式发布到不同分区,如果有键,相同键的消息总是发布到同一个分区。

  当一个新消费者加入消费组时,或者消费者离开消费组,都会触发再平衡。

  Kafka消费消息时,只保证分区内消息的有序性,并不保证主题中多个分区的消息顺序。

《Kafka技术内幕》学习笔记

原文:https://www.cnblogs.com/mengchunchen/p/9525305.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!