Kafka(三)概述

目录

  • 1 Kafka的应用场景
    • 1.1 活动跟踪
    • 1.2 消息传递
    • 1.3 指标和日志记录
    • 1.4 提交日志
    • 1.5 流式处理
  • 2 Kafka的核心概念
    • 消息(message)
    • 键(Key)
    • 批次(Batch)
    • 模式(Schema)
    • 主题(Topic)
    • 分区(Partion)
    • 分区段(Segment)
    • 分区副本(Replica)
    • 流(Stream)
    • 生产者(Producer)
    • 消费者(Consumer)
    • 偏移量(Offset)
    • 消费者群组(Consumer Group)
    • 中间人(Broker)
    • 集群(Cluster)
    • 控制器(Cluster Controler)
    • 分区首领(Partition Leader)
    • 跟随者(Follower)
    • 保留消息(Message Retaintion)
    • 紧凑型日志(Campact Log)
    • 多集群(Multiple Clusters)
    • ZooKeeper集群

Apache Kafka是一个开源分布式事件流平台,被数千家公司用于高性能数据管道、流分析、数据集成和关键任务应用程序。
事件流(event streaming):从技术上讲,事件流是以事件流的形式从数据库、传感器、移动设备、云服务和软件应用程序等事件源实时捕获数据的做法;持久地存储这些事件流以供以后检索;实时地以及回顾性地操纵、处理和响应事件流;以及根据需要将事件流路由到不同的目的地技术。因此,事件流确保了数据的连续流动和解释,从而使正确的信息在正确的时间、正确的地点出现。

1 Kafka的应用场景

1.1 活动跟踪

收集客户互动和订单并立即做出反应,如零售、酒店和旅游业以及移动应用程序。
实时跟踪和监控汽车、卡车、车队和货运,如物流和汽车行业。

1.2 消息传递

连接、存储公司不同部门产生的数据并使其可用。
作为数据平台、事件驱动架构和微服务的基础。

1.3 指标和日志记录

持续捕获和分析来自物联网设备或其他设备(如工厂和风电场)的传感器数据。
监测医院护理中的患者并预测病情变化,以确保在紧急情况下及时治疗。

1.4 提交日志

复制数据库提交日志到远程系统。
合并数据库更新。
恢复系统。

1.5 流式处理

实时处理支付和金融交易,例如在证券交易所、银行和保险中。

2 Kafka的核心概念

消息(message)

Kafka的数据单元称为消息

键(Key)

消息可以包含一个可选的元数据,就是。键被用于决定消息被分配到哪个分区,例如键的摘要值相同的消息存入同一个分区。

批次(Batch)

为了提高效率,消息会被分为批次写入Kafka。批次包含了一组属于同一个主题,同一个分区的消息。

模式(Schema)

对Kafka来说,不论任何消息都作为字节数组存储。但是对不同的应用程序来说,消息是有不同的格式的。所以需要在消息的处理过程中用消息模式来描述消息的格式。常见的模式有JSON,XML,AVRO等。

主题(Topic)

主题用来分类消息。

分区(Partion)

主题被非为若干个分区,一个分区就是一个提交日志。

  • 不同的分区可以部署在不同的服务器上。
  • 消息以追加的方式写入分区,已先进先出的方式读取。
  • 在主题范围内无法保证消息的顺序,在单个分区中可以。所以如果向严格保证消息的处理顺利,可以只使用一个分区,或者所有消息的键保持一致,获取自定义分区规则。

分区段(Segment)

一个分区又被分为多个段(segmnet),一个段就是一个日志文件。

分区副本(Replica)

一个分区可以被复制多分,并部署在不同的服务器上。实现数据的冗余和伸缩。

流(Stream)

是一组从生产者移动到消费者的数据。

生产者(Producer)

Kafka的客户端有两种类型:生产者和消费者。生产者创建消息。

消费者(Consumer)

消费者读取消息。消费者订阅不同的主题,并按照写入顺序读取。消费者通过偏移量来区分已经读取过的消息。

偏移量(Offset)

一种元数据,递增的长整形。Kafka写入消息时指定,并保存在一个内部主题(_consumer_offsets)中,保证消费者关闭后,读取状态不变。

消费者群组(Consumer Group)

一个消费者群组包含多个消费者,属于同一个群组的消费者共同读取一个主题时,Kafka能保证一个分区同时只被同一个消费者群组中的一个消费者读取。但是其他群组的消费者还可以读取这个分区。

中间人(Broker)

一个单独的Kafka服务器被称为broker。它接收生产者的消息,设置偏移量,并保存到磁盘;它同时响应消费者的请求,并返回已发布的消息。

集群(Cluster)

多个broker组成一个集群。

控制器(Cluster Controler)

每个集群都有一个broker充当控制器的角色,通过选举产生生。它的职责为:

  • 为broker分配分区
  • 监控broker

分区首领(Partition Leader)

一个分区从属于一个broker,称为分区首领

跟随者(Follower)

一个分区的其他副本被分配给不同的broker,这些broker被称为追随者

保留消息(Message Retaintion)

消息在Kafka中默认保留7天或者数据量达到1G。

紧凑型日志(Campact Log)

有些数据只需要保留最新的值,例如指标,所以可以把主题配置生紧凑型日志,只有最有一条指定键的消费会被保留下来。

多集群(Multiple Clusters)

使用多集群的原因:

  • 数据类型分离
  • 安全需求隔离
  • 多数据中心(灾难恢复)

Kafka提供了一个叫做MirrorMaker的数据镜像工具,用来在不同的集权之间同步数据。

ZooKeeper集群

Kafka使用ZooKeeper维护集权的成员信息,它起到了两个重要作用:

  1. 选举控制器
  2. 保存集群元数据:broker,配置,主题,分区,副本。

你可能感兴趣的:(kafka,分布式)