Stephen Ewen:向后兼容指的是公开稳定的API中的类和方法,那些类都使用特殊的Java声明“Public”来标记。这些稳定的API包括大多数的数据流和数据集API构造。在未来的1.x版本中,这部分会保持稳定。
还有许多部分被标记成“Public Evolving”。对这些特性,细节部分可能在未来版本中根据社区的反馈随时进行调整。
从0.10向1.0版本迁移数据流程序应该讲非常简单,因为数据流API的最大的破坏性更改发生在0.9和0.10版本之间。事实上现在数据集API已经稳定了好几个版本了。
Stephan Ewen:Flink和Kafka解决的是完全不同的问题,且相互之间有良好的补充。Kafka提供流信息的持久化存储,Flink在流的基础上进行计算和分析。Flink的Kafka连接器从Kafka代理中接受事件流,并追踪元数据以确保失败后可恢复,仅处理一次(exactly-once)的语义也会被保留。
Stephan Ewen:流程序中的状态是所有其他更复杂的应用的基础。计时或计数窗口都有状态,比如说CEP
库在一个序列模式中追踪当前事件。早期的流处理器,比如Apache Storm,必须依赖外部的键/值存储保存状态。Flink在流处理器内部维护状态(在工作进程中),而且定时检查状态用于容错。
Flink拥有多种所谓的“状态后端”供用户选择,它们描述了Flink保存状态的数据结构。其中一个状态后端的选择是RocksDB,我们选择它因为它是固定并可扩展基于磁盘(或者闪存)的键/值索引。要是程序保存非常多的状态信息甚至超过工作机器的内存的话,它是非常好的选择。另一方面,对于具有状态的程序而言,要是状态完全的适合主内存,也可以使用纯内存的状态后端。
Stephan Ewen:在路线图中有许多非常有趣的功能正在开发着。在不久的将来,API方面最大的补充可能是流式SQL。
在业务功能方面,我们正在开发动态并行运算,意思是说流式程序可以在运行的时候向内和向外扩展。此外,与Mesos资源管理框架的整合也在进行中,还有为非常大的状态的设置检查点的性能提升。为其他系统增加或提升连接器性能和改善监控的工作也在持续进行中。
最终,Flink社区的人们在Apache Beam(孵化)项目中也很活跃。给Beam管道的Flink运行器也是目前功能最完善的开源Beam运行时。我们正在和Beam社区合作进一步演化Flink运行器和Beam程序模型。