第二章kafka高级目录ContentsKafka的分片副本机制kafka如何保证数据不丢失消息存储及查询机制生产者数据分发策略消费者负载均衡机制kafka的监控工具:kafka-eagleKafka中数据挤压问题Kafka配额限速机制学习目标LearningObjectives1.能够搭建Kafka-eagle并查询kafka集群状态2.理解Kafka的分区副本机制3.理解kafka的消息不丢失机制4.理解kafka的数据存储和查询机制5.理解kafka数据分发机制6.理解kafka中消费者负载均衡机制kafka原理:分片和副本机制01分片机制:主要解决了单台服务器存储容量有限的问题当数据量非常大的时候,一个服务器存放不了,就将数据分成两个或者多个部分,存放在多台服务器上。每个服务器上的数据,叫做一个分片Kafka的分片与副本机制副本:副本备份机制解决了数据存储的高可用问题当数据只保存一份的时候,有丢失的风险。为了更好的容错和容灾,将数据拷贝几份,保存到不同的机器上。Kafka的分片与副本机制kafka原理:数据不丢失机制02•如何保证生产者数据不丢失•如何保证broker端数据不丢失•如何保证消费端数据不丢失如何保证生产端数据不丢失1)消息生产分为同步模式和异步模式2)消息确认分为三个状态a)0:生产者只负责发送数据b)1:某个partition的leader收到数据给出响应c)-1:某个partition的所有副本都收到数据后给出响应3)在同步模式下a)生产者等待10S,如果broker没有给出ack响应,就认为失败。b)生产者重试3次,如果还没有响应,就报错。4)在异步模式下a)先将数据保存在生产者端的buffer中。Buffer大小是2万条。32Mb)满足数据阈值或者时间阈值其中的一个条件就可以发送数据。c)发送一批数据的大小是500条。16Kb如果broker迟迟不给ack,而buffer又满了。开发者可以设置是否直接清空buffer中的数据。如何保证生产者数据不丢失broker端的消息不丢失,其实就是用partition副本机制来保证。Producerack-1(all).能够保证所有的副本都同步好了数据。其中一台机器挂了,并不影响数据的完整性。如何保证broker端与消费端数据不丢失broker端:消费端:通过offsetcommit来保证数据的不丢失,kafka自己记录了每次消费的offset数值,下次继续消费的时候,会接着上次的offset进行消费。而offset的信息在kafka0.8版本之前保存在zookeeper中,在0.8版本之后保存到topic中,即使消费者在运行过程中挂掉了,再次启动的时候会找到offset的值,找到之前消费消息的位置,接着消费,由...