Kafka简介

将不同数据源产生的海量数据从源头移动到可以对这些数据进行分析的平台,然后把处理结果应用到实际场景,才能使数据产生价值:

  • 购物网站的用户浏览和点击信息转换成商品推荐

  • 生产系统各种传感器产生的海量记录转化成对生产系统的监控和自动调整

企业对这个数据移动的要求催生了类似Kafka这样的专注于数据管道的开源软件

发布与订阅消息系统

发布与订阅消息系统的特点:

  • 发布者以某种方式对消息进行分类,投递到发布消息的中心节点(broker)

  • 接收者(订阅者)根据需求接受特定类型的消息(订阅)

发送者和接收者不需要直接联系

Kafka是一个通用型基于发布与订阅的消息系统,一般被称为 “分布式提交日志” 或 “分布式流平台” :

  • Kafka的数据按照一定顺序持久化保存,可以按需读取

  • Kafka的数据分布在整个系统中,具备数据故障保护和性能伸缩能力

构成

  • Kafka的数据单元被称为 消息 ,类似于数据库的一条记录或者数据行

  • 消息由字节数组组成

  • 消息有一个可选的 元数据 ,也就是 (key) : 当消息以一种可控的方式写入到不同分区时会使用

    • 最简单的案例是为键生成一个 一致性散列值 ,然后使用散列值对主题分区进行取模,为消息选取分区,这样可以保证具有相同键的消息总是被写到相同分区

  • 为提高效率,消息被分 批次 写入Kafka:

    • 批次 就是一组属于 同一个主题和分区 的消息

    • 批量传输可以降低网络开销,但是带来消息传输的延迟,这就需要在 时间延迟和吞吐量之间作出权衡

    • 对批量数据还可以进行压缩,提升数据传输和存储能力,但需要消耗更多计算资源

模式(schema)