本文永久链接:
译者: https://github.com/steinliber
校对者: https://github.com/Endone , https://github.com/xionglong58
数据流是一种数据分发技术, 通过这种技术数据生产者可以把数据记录写入到一个有序的数据流中, 数据消费者可以从该数据流中以同样的顺序读取数据. 这里有一个简单的数据流图解释数据生产者, 数据流和数据消费者:
数据流有很多变体
从表面上看, 数据流作为一个概念看起来很简单. 数据生产者把记录储存到数据流中, 稍后消费者会读取这些数据. 但是, 在这个表面下还存在着很多细节, 这些细节会影响到整个数据流系统的表现, 行为方式以及功能.
每个数据流产品都会对其支持的使用场景和支持的处理技术做出一系列假设. 这些假设决定了数据流的设计方式, 从而影响你可以实现的流处理行为类型. 这个数据流教程研究了许多这些设计中的选择, 并且根据这些设计选择讨论它们作为产品对于使用用户的影响.
数据流解耦生产者和消费者
数据流使数据生产者和数据消费者相互解耦. 数据生产者只是简单地把数据写到数据流中, 并不需要知道读取数据的消费者. 消费者可以独立于生产者添加或删除. 消费者也可以启动和停止, 或者暂停和恢复它们的消费, 而生产者并不需要知道这些. 这种解耦简化了数据生产者和消费者的实现.
数据流作为数据共享的机制
在更大的分布式系统中, 数据流是一种储存和共享数据十分有效的机制. 正像之前提到的那样, 数据生产者只需要把数据发送到数据流系统. 生产者不需要了解消费者的任何情况. 消费者可以在不影响生产者的情况下被添加和删除.
像 LinkedIn 这样的大公司在内部广泛使用了数据流. Uber 内部也使用了数据流. 许多企业级公司内部正在采用或已经采用了数据流. 许多初创公司也是如此.
来源: https://juejin.im/entry/5c8f457cf265da60cf50e5b2