Kafka系列之架构与概念

2020/08/12 Kafka

Kafka是由Apache软件基金会开发的一个开源流处理平台,由Scala和Java编写。该项目的目标是为处理实时数据提供一个统一、高吞吐、低延迟的平台。其持久化层本质上是一个“按照分布式事务日志架构的大规模发布/订阅消息队列”。

Kafka简介

Kafka是一种分布式的,基于发布/订阅的消息系统,主要有如下设计目标:

  • 以常数时间提供消息持久化能力
  • 高吞吐率
  • 支持分区,分布式消费,同时保证分区内消息顺序传输
  • 同时支持离线和在线数据处理
  • 支持在线水平扩展

引入消息队列的作用

  • 异步,消息队列提供异步处理机制,允许用户把一个消息放入队列,但并不立即处理它。
  • 解耦,消息队列在处理过程中充当系统间交互的接口层,解耦也带来了扩展性的提升
  • 削峰填谷
  • 可恢复性
  • 顺序保证,保证分区内消息的有序性

Kafka架构

  • Broker Kafka集群中的机器被称为broker
  • Topic 管理消息的类别
  • Partition 分区,每个Topic包含1个或多个分区
  • Producer 生产者
  • Consumer 消费者
  • Consumer Group 每个Consumer属于一个特定的 Consumer Group(可为每个 Consumer 指定 group name,若不指定 group name 则属于默认的 group)
  • Leader&Follower Topic中的每一个日志分区都一定会有一个Broker担任该分区的Leader,其他Broker担当该分区的follower
架构图

Search

    Table of Contents