大规模数据流处理:技术、案例与展望
1. 流处理中的容错与快照
在数据流处理系统中,容错机制至关重要。部分系统采用数据流图快照来实现容错,但这种方式存在恢复粒度的问题,因为整个数据流图需重置到保存点,不过部分恢复仍是可行的改进方式。
以APEX系统为例,它在处理快照时采用了类似的方法,使用相同机制绘制快照并应用窗口化,这会强制执行类似批量的执行,而这种执行方式本可避免。
2. 流量控制
2.1 流量控制的必要性
任何系统处理数据的速率都有上限,流处理器也不例外。由于数据源速率和系统处理速率之间的不平衡,通常需要调节数据摄取速率。而且,输入和处理速率在实时执行过程中可能会有很大变化,数据峰值在移动设备、大数据中心的日志系统等数据源中很常见。此外,流处理器在执行过程中处理能力也会有变化,如垃圾回收、磁盘快照等重负载操作会引入停滞期,影响连续处理。同时,数据流执行中不同任务的工作负载不平衡,使得流量控制机制对于可持续处理至关重要,以避免网络缓冲区溢出。
2.2 流量控制策略
流量控制主要有两种策略:
- 丢弃数据 :这是一些对处理保证要求不高的系统(如Apache Storm)常用且有效的策略。当任务的输入网络缓冲区满时(没有可用资源反序列化来自网络的传入记录),任务会丢弃新到达的记录。丢弃的记录可能永远丢失(适用于最多一次保证),也可能被重新发送(结合记录确认和上游备份,适用于至少一次方法)。但这种策略不适用于精确一次处理保证。
- 背压机制 :目前生产系统中使用多种类型的背压,常结合使用。
超级会员免费看
订阅专栏 解锁全文
1746

被折叠的 条评论
为什么被折叠?



