Kafka中的流式处理及相关概念汇总

Kafka中的流式处理是Kafka的一个重要功能模块,通过流式处理,Kafka可以对实时数据进行实时处理,虽然,数据处理的响应时间并没有“请求-响应”模式的那么短,但是相对于一般的批处理模式还是要快很多的。对于一般的客户服务、物联网系统的状态预测、异常检测等来说是非常高效的、实用的方法。所以,有必要好好掌握这方面的知识。下面对Kafka中流式处理及相关的概念进行了汇总。

01、什么是流式处理

数据流(也被称为“事件流”或“流数据”)是无边界数据集的抽象表示。无边界意味着无限和持续增长。无边界数据集之所以是无限的,是因为随着时间的推移,新的记录会不断加入进来。除了无边界之外,事件流还有以下属性:有序的、不可变的数据记录、可重播的。

流式处理介于“请求与响应”和“批处理”两种编程范式之间,大部分业务流程都是持续进行的,只要业务报告保持更新,业务产品先能够持续响应,那么业务流程就可以进行下去,而无需等待特定的响应,也不要求在亚毫秒内得到响应。

02、流式处理的一些概念

1、时间

(1)事件时间:指所追踪事件的发生时间和记录的创建时间。

(2)日志追加时间:指事件保存到broker的时间。

(3)处理时间:指应用程序在收到事件之后要对其进行处理的时间。

2、状态

事件与事件之间的信息被称为状态。

(1)本地状态或内部状态:只能被单个应用程序实例访问,一般使用内嵌在应用程序里的数据库进行维护和管理。优势:速度快,不足:受到内存大小的限制。

(2)外部状态:可以被多个应用程序的多个实例访问,一般使用外部的数据库存储来保存。优势:没有大小的限制,不足:引入额外的系统会造成更大的延迟和复杂性。

3、流和表的二元性

为了将表转化为流,需要捕捉到在表上发生的变更,将“insert”、“update”、“delete”时间保存到流里。

为了将流转化为表,需要“应用”流里所包含的所有变更,这也叫作流的“物化”。首先在内存里、内部状态存储或外部数据库里创建一个表,然后从头到尾遍历流里的所有事件,逐个地改变状态。在完成这个过程之后,得到了一个表,它代表了某个时间点的状态。

4、时间窗口

(1)窗口的大小:基于多长时间内进行数据处理。窗口越小,就能越快地发现变更,不过噪声也越多。窗口越大,变更就越平滑,不过延迟也越严重。

(2)窗口移动的频率(“移动间隔”):处理结果多长时间变化一次。如果“移动间隔”与窗口大小相等,这种情况被称为“滚动窗口”。如果窗口随着每一条记录移动,这种情况被称为“滑动窗口”。

(3)窗口的可更新时间多长。定义一个时间段,在这个时间段内,事件可以被添加到与它们相应的时间片段里,否则就忽略它们。

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值