kafka核心概念、组件角色介绍

1.kafka是什么?

Kafka是一个分布式消息中间件,支持分区的、多副本的、多订阅者的、基于zookeeper协调的分布式消息系统。
通俗来说: kafka就是一个存储系统,存储的数据形式为“消息”; 它的主要作用类似于蓄水池,起到一个缓冲作用

2.Kafka中有哪些重要的组件、角色?

kafka的基本架构

  1. producer: 消息生产者,就是向kafka broker 发消息的客户端。
  2. consumer : 消息消费者,从kafka broker 取消息的客户端。
  3. consumer group: 单个或多个consumer可以组成一个consumer group,这是 kafka 用来实现消息的广播(发给所有的 consumer)和单播(发给任意一个 consumer)的手段。
  4. Topic :Topic是一个存储消息的逻辑概念,可以认为是一个消息集合,具体的存储还是基于 Partition 来的。
  5. partition:topic中数据的具体管理单元;(你可以理解为hbase中表的“region”概念)
  6. broker:
    一台 kafka 服务器就是一个 broker。
    一个kafka集群由多个 broker 组成。
    一个 broker 可以容纳多个 topic的多个partition。
  7. partition Replica:
    partition的副本,保障partition的高可用(replica副本数目不能大于kafka broker节点的数目,否则报错。)
    每个partition的所有副本中,必包括一个leader副本,其他的就是follower副本
  8. Leader:partition replica中的一个角色,producer和consumer只跟leader交互(负责读写)。
  9. Follower:partition replica中的一个角色,从leader中拉取复制数据(只负责备份)。
    如果leader所在节点宕机,follower中会选举出新的leader;
  10. 偏移量Offset:
    每一条数据都有一个offset,是数据在该partition中的唯一标识(其实就是消息的索引号)。
    各个consumer会保存其消费到的offset位置,这样下次可以从该offset位置开始继续消费;
    consumer的消费offset保存在一个专门的topic(__consumer_offsets)中;(注:0.10.x版本以前是保存在zk中)
  11. 消息Message:简单来说,kafka中的每个massage由一对key-value构成
  12. Zookeeper在Kafka中的作用
    Kafka集群中有一个broker会被选举为Controller,负责管理集群broker的上下线,所有topic的分区副本分配和leader选举等工作。
    Controller的管理工作都是依赖于Zookeeper的。

3. 为什么使用消息队列?

关键词:异步 解耦 削峰

解耦:kafka利用消息队列解耦数据的处理过程、当有新的需求时只需增加处理过程即可,不需要改变原系统的代码
异步:通过开线程的方式实现同步转异步,提高主业务逻辑的响度速度
削峰:利用消息队列将请求进行缓存,慢慢处理请求,减轻数据库的访问压力。

4. kafka中的topic拥有多少个分区,有多少副本,是如何决定的?

  1. topic默认有1个分区,创建时可以通过–partitions参数自定义topic的数量
  2. topic的分区的副本数根据业务的需求可以自定义,通过–replication-factor参数设定,其数量不能大于kafka broker节点的数目(没有默认的副本数)
  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值