博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
kafka的一点记录
阅读量:3576 次
发布时间:2019-05-20

本文共 914 字,大约阅读时间需要 3 分钟。

1.kafka 主要有哪些角色

每一个kafka节点称为一个broker,多个broker节点组成kafka集群。每个broker 上可以存储多个topic的分区partition,

每个分区可以有n备份,其中n可以扩展。

kafka的消费者consumer,多个consumer可以组成一个consumer grop。但是一条消息只会被同一个consumer group的一个consumer消费一次,可以被不同的consumer group 重复消费。

在kafka集群中,有三种类似leader的角色:

  • broker 的leader 其选举有zk 控制,选举出来的东西称为controller
  • partition 的learder 其选举由controller 根据zk 中的ISR 进行选举(leader 负载 partition的读写)
  • coordinator ,其选举方式,默认由保存offset的broker 担任,宕机后,可由任一broker 进行选举

(coordinator 负责 消费者消费partition的负载均衡)

2.kafka的容灾备份

kafka的容灾备份是以topic为单位的,每一个topic 可以有n个分区,每个区分可以有m个备份,这些备份分布在各个broker中。

生产者再插入队列的时候,可以指定策略来保证该消息是否要同步到各个备份才算成功。

当某个partition leader 挂了时候,这时候会在ISR中重新选择一个leader,保证可用性。

当某个kafka 因异常宕机重启的时候,它上面的数据会重新同步一份。如果采用的是kafka的优雅停机,则可以进行增量的更新。

3.kafka的存储机制

4.kafka的消费机制

一个消费者可以同时消费多个分区,但是一个分区只能被一个消费者消费。消费者在消费的时候,可以自动设置提交(poll 的时候就会自动提交),也可以主动进行异步或者同步的提交。消费者可以指定消费的分区及offerset,这种情况下则不受负载均衡的控制。消费者的提交,其实是提交到了一个特定的topic。由该topic记录某一分区消费的offetset具体情况。

转载地址:http://nhagj.baihongyu.com/

你可能感兴趣的文章
什么情况下会发生栈内存溢出。
查看>>
何为去中心化
查看>>
缓存一致性:写策略
查看>>
Cache一致性:MESI
查看>>
缓存一致性:写未命中
查看>>
为什么用中间位作为组索引
查看>>
缓存:局部性
查看>>
mysql原理:b+树索引
查看>>
mysql原理:最左原则
查看>>
mysql原理:join标到底是什么,为什么有军规不建议超过三个
查看>>
redis缓存穿透
查看>>
redis缓存雪崩
查看>>
mysql的事务隔离
查看>>
mvc架构
查看>>
ElasticSearch(0) ES的认识
查看>>
JPA入门
查看>>
JPA关系
查看>>
4.spring注解和生命周期相关的(了解)
查看>>
3.spring 的纯注解配置
查看>>
4.Spring 整合 Junit
查看>>