ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

【Kafka学习1】 事件流(Event Streaming)

【Kafka学习1】 事件流(Event Streaming) 一、事件流如果把现代数字化企业比作一个活生生的人那么事件流就相当于它的中枢神经系统。它让企业能够“永远在线”实现软件定义和自动化运转——甚至软件本身的使用者也是另一套软件。从技术角度看事件流是一套完整的实践包括实时捕获来自各类来源数据库、传感器、移动设备、云服务、应用程序的数据形成事件流持久存储这些事件流以备将来随时取用实时或回溯处理这些事件并进行响应将事件流路由到下游不同的目标系统。事件流确保了数据持续流动并得到正确解读让正确的信息在正确的时间出现在正确的位置。二、事件流能用来做什么事件流适用于各行各业的众多场景例如行业 / 领域典型用例 金融交易所、银行、保险实时处理支付、交易流水 物流与汽车实时追踪车辆、车队、货物位置 工业制造 风电场持续采集分析 IoT 传感器数据️ 零售、酒店、旅游、移动应用实时捕捉客户互动与订单即刻响应 医疗监测住院患者预测病情变化及时急救 企业内部连接、存储并共享各部门产生的数据 技术架构作为数据平台、事件驱动架构、微服务的基础三、Apache Kafka® —— 事件流平台Apache Kafka就是专门为实现事件流而生的平台。它把三大核心能力整合在一个经过实战检验的系统中让你端到端实现事件流场景发布与订阅事件流包括与其他系统持续导入/导出数据持久可靠地存储事件流保留时长由你定实时或回溯处理事件流。所有这些能力都具备分布式、高可扩展、弹性、容错、安全的特性。Kafka 可部署在裸金属、虚拟机、容器上也可在本地或云端运行。你可以选择自管理 Kafka 环境或使用各厂商提供的全托管服务。四、Kafka 工作原理Kafka 是一个分布式系统由服务端和客户端组成它们通过高性能的 TCP 网络协议通信。客户端服务端集群写入事件写入事件写入事件读取事件读取事件读取事件处理事件处理事件处理事件导入/导出Broker 1Broker 2Broker 3Kafka Connect生产者消费者流处理应用外部系统DB、其他Kafka等️ 服务端ServersKafka 以集群形式运行可跨多个数据中心或云区域。其中一部分服务器构成存储层称为Broker代理节点。另一些服务器运行Kafka Connect持续导入/导出数据与现有系统如关系数据库、其他 Kafka 集群集成。集群具备高可扩展和容错能力若有服务器宕机其他节点自动接管保证零数据丢失的持续运行。 客户端Clients客户端让你编写分布式应用和微服务能够并行、大规模、容错地读取、写入和处理事件流。Kafka 自带多种客户端社区也提供了海量扩展Java / Scala含高级流处理库 Kafka StreamsGo、Python、C/C 等REST API五、概念 事件Event事件就是“某件事发生了”的记录在文档中也叫 **记录Record**或消息Message。对 Kafka 的读写操作都以事件为单位。一个事件通常包含字段说明示例Key键用于分区路由可为空AliceValue值具体内容实际数据Made a payment of $200 to BobTimestamp时间戳事件发生时间Jun. 25, 2020 at 2:06 p.m.Headers头可选元数据如traceId、source 生产者Producer与消费者Consumer生产者发布写入事件的客户端应用。消费者订阅读取和处理这些事件的客户端。关键设计生产者和消费者完全解耦互不感知。生产者无需等待消费者这是 Kafka 实现高可扩展性的基石。Kafka 还提供**精确一次exactly-once**等语义保证。 主题Topic主题是组织并持久存储事件的逻辑容器。简单类比主题就像文件系统中的文件夹事件就是文件夹里的文件。示例主题名payments。特点多生产者 多订阅者一个主题可以有零到多个生产者写入零到多个消费者读取。持久化事件消费后不会被删除不同于传统消息队列。你可以按主题配置保留时长过期后自动清理。性能与数据量无关Kafka 存储海量数据时性能恒定因此长时间保留数据完全 OK。 分区Partition—— 并发的关键主题会被分区即拆分成多个“桶”分散在不同的 Broker 上。这种分布是可扩展性的关键因为客户端可以同时从多个 Broker 读写数据。消费者组主题: payments生产者组写入写入写入写入读取读取读取生产者1生产者2分区 P1分区 P2分区 P3分区 P4消费者1消费者2新事件追加到某一个分区。相同键Key的事件总是写入同一个分区例如同一客户 ID 或车辆 ID 的所有事件Kafka 保证分区内顺序严格按写入顺序读取。上图中不同颜色代表不同 Key同色事件进同一分区。 副本Replication—— 容错与高可用为了让数据容错且高可用每个主题的分区都可以复制甚至跨地域或数据中心。复制因子replication factor常见设为3即始终保留 3 份副本。当 Broker 故障、维护时其他副本自动接管。复制发生在分区级别。 六、Kafka 核心概念一览表思维导图 → 表格顶层概念子概念 / 属性说明 / 作用事件键Key用于分区路由相同 Key 的事件进入同一分区值Value实际数据内容如支付信息、传感器读数时间戳Timestamp事件发生的时间用于排序和窗口处理头Headers可选元数据如追踪 ID、来源标识主题分区Partition主题拆分为多个“桶”分布在不同的 Broker 上支持并行读写└ 顺序保证同一分区内事件严格按写入顺序读取└ 并行读写多个生产者/消费者可同时操作不同分区提升吞吐副本Replica分区的冗余拷贝用于容错和高可用└ 容错Broker 故障时其他副本自动接管不丢数据└ 高可用复制因子通常为 3保证服务持续可用生产者发布事件将事件写入指定主题的某个分区可指定 Key控制事件发往哪个分区实现有序或分组消费者订阅事件从主题的一个或多个分区读取事件消费位移记录消费进度支持断点续传和回溯消费服务端Broker存储层节点负责管理分区和副本处理读写请求Kafka Connect用于与其他系统数据库、其他 Kafka 等持续导入/导出数据客户端多语言支持Java、Scala、Go、Python、C/C 等 SDKKafka Streams高级流处理库Java/Scala支持实时计算和状态管理这个表格既保留了原思维导图的全部信息又更适合在纯文本环境如 .txt 文件中阅读。如果您需要我可以把这份表格整合进之前的完整指南中并生成一份新的 .txt 文件供您保存。七、关键特性一览表特性说明分布式集群多节点水平扩展高吞吐每秒数百万条消息持久化磁盘存储可配置保留策略容错副本机制自动故障转移解耦生产者和消费者相互独立顺序性分区内严格有序精确一次支持 exactly-once 语义多客户端主流语言 SDK REST API八、小结什么是事件流以及它的价值事件流的典型应用场景Kafka 如何通过服务端客户端架构实现三大能力关键概念事件、主题、分区、副本、生产者、消费者。小结Kafka 是事件流的“中枢神经”让数据实时产生、存储、处理、分发成为现代数据驱动企业的基石。
返回列表