articleList

01-分布式流处理平台Kafka快速认知

2025/03/13 posted in  Kafka
Tags: 

  • Kafka
    • Kafka是最初由Linkedin公司开发,Linkedin于2010年贡献给了Apache基金会并成为顶级开源项目,也是一个开源【分布式流处理平台】,由Scala和Java编写,(也当做MQ系统,但不是纯粹的消息系统)
    • 核心:一种高吞吐量的分布式流处理平台,它可以处理消费者在网站中的所有动作流数据
      • 比如 网页浏览,搜索和其他用户的行为等,应用于大数据实时处理领域
  • 官网:http://kafka.apache.org/
  • 快速开始:http://kafka.apache.org/quickstart
  • 核心概念
    • Broker
      • Kafka的服务端程序,可以认为一个mq节点就是一个broker
      • broker存储topic的数据
    • Producer生产者
      • 创建消息Message,然后发布到MQ中
      • 该角色将消息发布到Kafka的topic中
    • Consumer消费者
      • 消费队列里面的消息
    • ConsumerGroup消费者组
      • 同个topic, 广播发送给不同的group,一个group中只有一个consumer可以消费此消息
    • Topic
      • 每条发布到Kafka集群的消息都有一个类别,这个类别被称为Topic,主题的意思
    • Partition分区
      • kafka数据存储的基本单元,topic中的数据分割为一个或多个partition,每个topic至少有一个partition,是有序的
      • 一个Topic的多个partitions, 被分布在kafka集群中的多个server上
      • 消费者数量 <=小于或者等于Partition数量
    • Replication 副本(备胎)
      • 同个Partition会有多个副本replication ,多个副本的数据是一样的,当其他broker挂掉后,系统可以主动用副本提供服务
      • 默认每个topic的副本都是1(默认是没有副本,节省资源),也可以在创建topic的时候指定
      • 如果当前kafka集群只有3个broker节点,则replication-factor最大就是3了,如果创建副本为4,则会报错
    • ReplicationLeader、ReplicationFollower
      • Partition有多个副本,但只有一个replicationLeader负责该Partition和生产者消费者交互
      • ReplicationFollower只是做一个备份,从replicationLeader进行同步
    • ReplicationManager
      • 负责Broker所有分区副本信息,Replication 副本状态切换
    • offset
      • 每个consumer实例需要为他消费的partition维护一个记录自己消费到哪里的偏移offset
      • kafka把offset保存在消费端的消费者组里
        Untitled Diagram
  • 特点总结
    • 多订阅者
      • 一个topic可以有一个或者多个订阅者
      • 每个订阅者都要有一个partition,所以订阅者数量要少于等于partition数量
    • 高吞吐量、低延迟: 每秒可以处理几十万条消息
    • 高并发:几千个客户端同时读写
    • 容错性:多副本、多分区,允许集群中节点失败,如果副本数据量为n,则可以n-1个节点失败
    • 扩展性强:支持热扩展
  • 基于消费者组可以实现
    • 基于队列的模型:所有消费者都在同一消费者组里,每条消息只会被一个消费者处理
    • 基于发布订阅模型:消费者属于不同的消费者组,假如每个消费者都有自己的消费者组,这样kafka消息就能广播到所有消费者实例上