
Kafka
Kafka
千里快哉风Y
这个作者很懒,什么都没留下…
展开
-
Kafka中的 Zookeeper 起到什么作用?
1.选举Leader2.注册Kafka的服务器3.注册Topic,一个Topic的消息会被分成多个分区分布在多个Broker上,这些分区信息与Broker的对应关系也都是由Zookeeper在维护4.注册消费者5.做生产者和消费者的负载均衡6.记录分区与消费者之间的对应关系7.记录分区的消费偏移量...原创 2021-03-17 09:47:55 · 448 阅读 · 0 评论 -
Kafka 与传统消息系统之间的区别
(1).Kafka 会持久化日志,这些日志可以被重复读取和无限期保留(2).Kafka 依赖Zookeeper,是一个分布式系统,以集群的方式运行,可以灵活伸缩,在内部follower通过从leader复制数据提升容错能力和高可用性(3).Kafka 支持实时的流式处理,吞吐量更高...原创 2021-03-17 09:46:29 · 319 阅读 · 0 评论 -
零拷贝技术
数据直接在内核完成输入和输出,不需要拷贝到用户空间再写出去,减少了用户态与内核态之间的切换,让拷贝次数降到最低。MMAP(Memory Mapped Files)将磁盘文件映射到内存, 用户修改内存就能修改磁盘文件。FileChannel.map()。DMA(Direct Memory Access)可让某些硬件子系统不用依赖CPU就能访问系统主内存。fileChannel.transferTo( position, count, socketChannel);...原创 2021-03-16 10:17:27 · 97 阅读 · 0 评论 -
kafka如何保证消息的可靠性与一致性?
使用ISR,ISR是一组与leader同步的消息副本集合,包括leader,一旦leader宕机,那么这个集合中的任何一个节点随时都可以被选为leader。Kafka中的follower从leader复制数据时,充分利用了磁盘的顺序读写和零拷贝技术sendfile(in,out)。ISR的伸缩性:follower从leader同步数据有一些延迟,如果超过阈值就会把这个follower剔除出ISR, 存入OSR(超时连接列表),新加入的follower也会先存放在OSR中。AR: 所有副本...原创 2021-03-16 10:17:00 · 247 阅读 · 0 评论 -
kafka 生产者发送数据时,ack 为 0, 1, -1的时候代表什么?
0 生产者将数据发送出去就算发送成功,不去等待任何返回,容易丢失数据。1(默认) 生产者将数据发送出去之后,要等待leader返回成功接收的消息才算发送成功,如果leader宕机则会丢失数据。-1 生产者需要等待leader和ISR中的所有follower都返回成功接收的消息才算发送成功ISR是一组与leader同步的消息副本集合,包括leader,一旦leader宕机,那么这个集合中的任何一个节点随时都可以被选为leader...原创 2021-03-16 10:11:23 · 2455 阅读 · 0 评论 -
Kafka丢数据的情况
1.消费端弄丢了数据消费者自动提交offset会丢数据,只要关闭自动提交 offset,在处理完之后自己手动提交 offset,就可以保证数据不会丢。2.Kafka 弄丢了数据Kafka宕机重新选举leader的时候,要是 follower没有及时同步数据,就会丢数据。在 Kafka 服务端设置 min.insync.replicas 最小同步副本参数:这个值必须大于 1,这个是要求一个 leader 至少感知到有至少一个 follower 还跟自己保持联系,这样才能确保 leader 挂了还有一个原创 2021-03-16 10:09:26 · 657 阅读 · 0 评论 -
Kafka 怎么体现消息顺序性?
写入时,分区的消息是按顺序写入的。消费时,一个分区在同一时间只能被消费者组中的一个消费者消费,保证了消费时也是有序的。Kafka只能保证分区内消息顺序有序,无法保证全局有序,因为消息会发送到不同的分区,分区之间发送的顺序是无法保证的。...原创 2021-03-16 09:53:33 · 276 阅读 · 0 评论 -
为什么需要Kafka消息队列
解耦:降低不同模块的耦合性削峰:在访问量剧增的情况下,能够使关键组件顶住突发的访问压力异步:允许用户把一个消息放入队列,但并不立即处理它缺点是会降低系统可用性,因为系统引入的外部依赖越多,越容易挂掉。...原创 2021-03-16 09:50:23 · 128 阅读 · 0 评论 -
Flume和Kafka的区别
Flume:分布式的海量日志采集和传输的系统(可以实时读写数据)相比Kafka,Flume更像是一个往HDFS,HBase发送数据的专用工具。它对HDFS有特殊的优化,并且集成了Hadoop的安全特性。如果数据被发给HDFS,HBase则使用Flume。如果数据被多个系统消费的话就使用kafka;flume 如何保证数据的可靠性?数据从source到channel以及从channel到sink的过程中,一批事件event会被封装成事务进行批处理。(事务具有原子性,即要么都成功,要么都失败)唯一可能原创 2021-03-16 09:49:07 · 616 阅读 · 0 评论