Kafka这些知识知道吗?

Kafka:

  1. 定位:分布式的消息队列系统,同时提供数据分布式缓存功能(默认7天)削峰,解耦(高内聚,低耦合)
  2. 消息持久化到磁盘,达到O(1)访问速度,预读和后写,对磁盘的顺序访问(比内存随机访问还要快)
  3. Streaming(分布式的实时计算框架)
    Kafka目标成为队列平台
  4. 基本组件:
    Broker:每一台机器是一个Broker
    Producer:日志消息生产者,主要写数据
    Consumer:日志消息消费者,主要读数据
    Topic:是虚拟概念,不同的consumer去指定的topic去读数据,不同producer可以往不同的topic去写(发布消息)
    Partition:是实际概念,文件夹,是在Topic的基础上做了进一步分层
    message:offset,key.value,timestamp
  5. Partition功能:负载均衡,需要保证消息的顺序性
    顺序性的保证:订阅消息是从头往后读取的,写消息是尾部追加,所以整体消息是顺序的
    如果有多个partiton存在,可能会出现顺序不一致的情况,原因:每个Partition相互独立
  6. Topic:逻辑概念
    一个或多个Partition组成一个Topic
  7. Partition以文件夹的形式存在
  8. Partition有两部分组成:
    (1)index log:(存储索引信息,快速定位segment文件)
    (2)message log:(真实数据的所在)
  9. 参考HDFS多副本的方式来完成数据高可用
    如果设置一个Topic,假设这个Topic有5个Partition,3个replication,此时该topic共有15个partition
    Kafka分配replication的算法:
    假设:
    将第i个Partition分配到(i % N)个Broker上 10%3 取模(取余)
    将第i个Partition的第j个replication分配到( (i+j) % N)个Broker上
    虽然Partition里面有多个replication
    如果里面有M个replication,其中有一个是Leader,其他M-1个follower
  10. zookeeper保证系统的可用性,zk中会保存一些meta信息(topic)
  11. 物理上,不同的topic的消息肯定是分开存储的
  12. 偏移量——offset:用来定位数据读取的位置
  13. kafka内部最基本的消息单位——message
  14. 传输最大消息message的size不能超过1M,可以通过配置来修改
  15. Consumer Group
  16. 传输效率:zero-copy
    0拷贝:减少Kernel和User模式上下文(context)的切换
    直接把disk上的data传输给socket(套接字),而不是通过应用程序来传输
  17. Kafka的消息是无状态的,消费者必须自己维护已消费的状态信息(offset)
    减轻Kafka的实现难度
  18. Kafka内部有一个时间策略:SLA——消息保留策略(消息超过一定时间后,会自动删除)
  19. 交付保证:
    at least once:至少一次(会有重复、但不丢失)
    at most once:最多发送一次(不重复、但可能丢失)
    exactly once:只有一次(最理想),目前不支持,只能靠客户端维护(去重操作)
  20. Kafka集群里面,topic内部由多个partition(包含多个replication),达到高可用(HA)的目的:
    日志副本:保证可靠性
    角色:主、从
    ISR:是一个集合,只有在集合中的follower,才有机会被选为leader
    如何让leader知道follower是否成功接收数据(心跳,ack)
    如果心跳正常,代表节点活着
  21. 怎么算“活着”
    (1)心跳
    (2)如果follower能够紧随leader的更新,不至于被落的太远
    如果一旦挂掉,从ISR集合把该节点删除掉
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Colin_lqk

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值