kafka基础知识概览

35 阅读2分钟

一、简介

Kafka是由Apache软件基金会开发的一个开源流处理平台,由Scala和Java编写。该项目的目标是为处理实时数据提供一个统一、高吞吐、低延迟的平台。其持久化层本质上是一个“按照分布式事务日志架构的大规模发布/订阅消息队列”,[4]这使它作为企业级基础设施来处理流式数据非常有价值。此外,Kafka可以通过Kafka Connect连接到外部系统(用于数据输入/输出),并提供了Kafka Streams——一个Java流式处理库

kafka是一个分布式的、高吞吐量、高可拓展性的消息队列服务

消息队列 是一种 进程间通信或同一进程不同线程间的通信方式,其使用场景有

  • 异步处理
  • 应用解耦
  • 流量削峰

二、基本原理

基本组件

  • broker 消息中间件处理节点
  • topic 消息都有一个类别topic,生产者发布topic,消费者订阅topic
  • partition 存放消息的队列
    • 同一topic进一步细分,存放在不同broker
    • 同一partition内的消息有序,同一topic中的多个partition未必有序
  • producer 消息生产者,向broker发送消息的客户端
  • consumer 消息消费者,从broker读取消息的客户端,consumer通过offset标识 已消费消息 的位置
  • consumer group 消费者组,不同组可消费同一条消息,同个组只可消费一次
  • zookeeper 调度中心

基本流程

  • 心跳请求 客户端主动连接castle,请求需要往哪个集群上生产和消费
  • 心跳响应 zookeeper返回客户端broker的ip地址
  • 客户端连接broker,生产或消费到broker上

消息发送

  • 策略 同一topic的消息发到哪个partition上
    • 轮询
    • 随机
    • 按消息键保序 保证同一个key的所有消息都进入相同的分区中

消息消费

  • 策略 同一个消费组内对同一个topic怎么分配partition
    • range 以消费者线程为单位平均分配partition,余数分配给前置线程

消息可靠性

  • 备份
    • 为partition提供多个replication,分配到其他broker节点上
    • replication节点中有leader和follower,leader负责发送消息,同步消息到follower
  • 重试机制
    • 消费 重试达一定次数后跳过,放入死信队列

三、简单使用

待补充