什么是数据流?


数据流是一种数据分发技术,数据生成器将数据记录写入有序数据流,数据使用者可以从该数据流以相同的顺序读取数据。这是一个简单的数据流图,说明了数据生成器,数据流和数据使用者:
数据流有很多种变化
从表面上看,数据流作为一个概念我看起来很简单。数据生成器将记录存储到数据流中,消费者稍后会读取这些数据流。但是,表面下有许多细节会影响您的数据流系统的外观,行为方式以及使用它可以做些什么。
每个数据流产品都会对用例和处理技术做出一系列假设来支持。这些假设会导致某些设计选择,这会影响您可以使用它们实现的流处理行为类型。此数据流教程检查了许多这些设计选择,并讨论了它们作为基于这些设计选择的产品用户的后果。

数据流将生产者和消费者分离
数据流将数据生产者和数据消费者彼此分离。当数据生产者简单地将其数据写入数据流时,生产者不需要知道读取数据的消费者。可以独立于生产者添加和删除消费者。消费者也可以启动和停止或暂停和恢复他们的消费,而数据生产者不需要知道它。这种分离简化了数据生产者和消费者的实施。

数据流作为数据共享机制
数据流是一种非常有用的机制,可以在更大的分布式系统中存储和共享数据。如前所述,数据生成者只是将数据发送到数据流系统。生产者不需要了解消费者的任何信息。消费者可以在不影响生产者的情况下上下,添加和删除。
像LinkedIn这样的大公司在内部广泛使用数据流。优步也在内部使用数据流。许多企业级公司正在内部采用或已采用数据流。许多初创公司也是如此。

持久数据流
数据流可以是持久的,在这种情况下,它有时被称为日志或日志。持久数据流的优点是流中的数据可以在数据流服务关闭后继续存在,因此不会丢失任何数据记录。
与仅保存内存中的记录的数据流服务相比,持久数据流服务通常可以保存更大量的历史数据。一些数据流服务甚至可以将历史数据一直保存回写入数据流的第一条记录。其他人只持有例如数天的历史数据。
在持久数据流保存记录的完整历史记录的情况下,消费者可以重放所有这些记录并基于这些记录重新创建其内部状态。如果消费者在其自己的代码中发现错误,它可以纠正该代码并重放数据流以重新创建其内部数据库。

数据流用例
数据流是一个非常通用的概念,可用于支持许多不同的用例。在本节中,我将介绍一些比较常用的数据流用例。

1.事件驱动架构的数据流
数据流通常用于实现 事件驱动的体系结构。事件由事件生成器作为记录写入某些数据流系统,事件消费者可以从中读取这些事件。

2.智能城市和物联网的数据流
数据流还可用于从安装在智能城市周围的传感器,智能工厂内的传感器或其他物联网设备流式传输数据。可以定期从设备中采样温度,污染等级等值,并将其写入数据流。数据使用者可以在需要时从数据流中读取样本。

3.定期采样数据的数据流
智能城市中的传感器和物联网设备只是数据源的两个例子,可以定期采样并通过数据流提供。但是还有许多其他类型的数据可以定期采样和流式传输。例如,货币汇率或股票价格也可以进行抽样和流式传输。轮询号码也可以定期采样和流式传输。

4.数据采集的数据流
在民意调查数字的示例中,您可以决定将每个单独的答案流式传输到民意调查,而不是流式传输定期抽样的总计。在某些情况下,总计是由各个数据点(如民意调查)组成的,有时比单独计算的总数更有意义地流式传输各个数据点。这取决于具体的使用案例,以及其他因素,例如单个数据点是匿名的还是包含不应共享的私人个人信息。

记录,消息,事件,样本等
数据流记录有时被称为消息,事件,样本,对象和其他术语。使用什么术语取决于数据流的具体用例,以及生产者和消费者如何处理和响应数据。通常从用例中可以清楚地看出,通过引用记录有什么意义。
值得注意的是,用例也会影响给定记录所代表的含义。并非所有数据记录都相同。事件与采样值不同,并且不能始终以相同的方式使用。我将在本(和/或其他)教程的后面更详细地介绍这一点。