Kafka(三)概述

目录

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,配置,主题,分区,副本。
相关推荐
Data跳动2 小时前
Spark内存都消耗在哪里了?
大数据·分布式·spark
Java程序之猿4 小时前
微服务分布式(一、项目初始化)
分布式·微服务·架构
来一杯龙舌兰5 小时前
【RabbitMQ】RabbitMQ保证消息不丢失的N种策略的思想总结
分布式·rabbitmq·ruby·持久化·ack·消息确认
节点。csn6 小时前
Hadoop yarn安装
大数据·hadoop·分布式
saynaihe7 小时前
安全地使用 Docker 和 Systemctl 部署 Kafka 的综合指南
运维·安全·docker·容器·kafka
NiNg_1_2347 小时前
基于Hadoop的数据清洗
大数据·hadoop·分布式
隔着天花板看星星9 小时前
Spark-Streaming集成Kafka
大数据·分布式·中间件·spark·kafka
技术路上的苦行僧13 小时前
分布式专题(8)之MongoDB存储原理&多文档事务详解
数据库·分布式·mongodb
龙哥·三年风水13 小时前
workman服务端开发模式-应用开发-后端api推送修改二
分布式·gateway·php
小小工匠14 小时前
分布式协同 - 分布式事务_2PC & 3PC解决方案
分布式·分布式事务·2pc·3pc