Java数据流的所有应用场景全面总结

数据流是一种数据分发技术。数据生成器将数据记录写入顺序数据流。数据使用者可以按照相同的顺序从数据流中读取数据。这是一个用于数据生产者、数据流和数据消费者的简单数据流图:

 

数据生产者和消费者的数据流记录

 

数据流可以有很多变量

从“表面”的角度来看,数据流是一个非常简单的概念。数据生产者将记录存储在数据流中,然后消费者可以读取这些数据流。然而,通过这个图面,我们可以看到仍然有一些细节会影响数据流系统的“外观”,这反过来会影响数据流系统的行为和您可以做什么。

每个数据流产品都对用例和处理技术(用于技术支持)进行假设。这些假设可能导致最终影响可用于实现数据流处理的行为类型的设计选择。本数据流教程将检查哪些设计选项可用,并根据这些设计选项讨论它们对用户产品的影响。

数据流可以解耦生产者和消费者

数据流将数据生产者与数据消费者分离开来。当数据生产者只将其数据写入数据流时,生产者不需要知道读取数据的消费者。消费者可以独立于生产者添加和删除。消费者可以在生产商不知情的情况下开始/停止或暂停和恢复消费。这种分离简化了数据生产者和用户的实现。

据流作为数据共享机制

数据流是大型分布式系统中存储和共享数据的一种非常有用的机制。如前所述,数据生产者只需要将数据发送到数据流系统。生产商不需要了解任何关于消费者的信息。消费者可以在线、离线、添加或删除自己,而不影响生产者。

像LinkedIn这样的大公司在内部广泛使用数据流。Uber也在内部使用数据流。许多企业级公司正在采用或已经采用内部数据流。许多初创企业也是如此。

持久化数据流

数据流是持久的,在这种情况下,它们被称为日志或日志。持久数据流的优点是,数据流中的数据在数据流服务关闭后可以“生存”,因此数据记录不会丢失。

与在内存中存储记录的数据流服务相比,持久数据流服务通常可以存储更多的历史数据。有些数据流保存历史数据,甚至可以追溯到写入数据流的第一个记录。有些只保留部分历史数据。

在持久数据流保留完整历史记录的情况下,用户可以重复处理所有记录,并基于这些记录重建其内部状态。如果消费者在其代码中发现错误,它可以更正代码并复制数据流以重建内部数据库。

数据流用例

数据流是一个非常通用的概念,可以用来支持各种不同的用例。在本节中,我将介绍一些更常用的数据流用例。

用于事件驱动架构的数据流

数据流通常用于事件驱动的体系结构中。事件由事件生成器将事件作为记录写入某些数据流系统,事件使用者可以读取这些事件。

用于智能城市和物联网的数据流

数据流还可以用于从智能城市周围的传感器、智能工厂中的传感器或其他物联网设备中的传感器传输数据。温度和污染当量可从装置中取样并定期写入数据流。数据用户可以根据需要从数据流中读取样本。

用于常规数据抽样的数据流

智能城市中的传感器和物联网设备只是数据源的两个例子,可以定期采样并通过数据流提供。还有许多其他类型的数据可以定期采样并作为流提供。例如,还可以对货币汇率或股票价格进行采样和传输。公众意见值也可以定期采样和流式处理。

用于数据点的数据流

在投票支持的情况下,您可以确定每个独立的答案在投票流中的位置,而不是周期性样本的总数。由独立数据点(如投票)组成的总计有时比总计计算更有意义。这取决于特定的用例和其他因素,例如单个数据点是匿名的还是包含不应该共享的私有个人信息。

记录、消息、事件和抽样等。

数据流记录有时被称为消息、事件、采样和其他术语。使用哪个术语取决于数据流的特定用例以及生产者和消费者如何处理和响应数据。通常,用例引用记录的具体含义可以从用例中清楚地理解。

值得注意的是,用例也会影响给定记录所代表的内容。并非所有数据记录都相同。事件与抽象值不同,不能总是以相同的方式使用。我将在本教程(和/或其他教程)中更详细地讨论这一点。

没有更多推荐了,返回首页

私密
私密原因:
请选择设置私密原因
  • 广告
  • 抄袭
  • 版权
  • 政治
  • 色情
  • 无意义
  • 其他
其他原因:
120
出错啦
系统繁忙,请稍后再试