《SRE Google 运维解密》第 25 章 数据处理流水线

本章关注数据处理流水线在实际应用中面临的复杂问题。讨论了周期性运行的数据流水线与持续运行永不停止的数据处理流水线面临的共同问题,也讨论了它们的不同点。本章提出了一个崭新的、更可靠的、更易扩展的领头人、追随者模式(即 Master/Slave 模式),可以用来替代处理海量数据的周期性流水线模型。

周期性流水线模式的挑战

周期性的数据流水线模型是非常脆弱易坏的。初期调试后,整个流水线的性能可能很稳定。随着数据量的自然增长会对整个系统造成压力,导致各种各样的问题出现。这种问题包括任务运行超时、资源耗尽某些分块处理卡住导致整体运维压力上升等。

工作分发不均

分布式环境中周期性数据流水线的缺点

对于每天运行一次的流水线来说,几个小时的启动延迟是可以接受的。但是随着执行频率增高,每次执行之间的最小间隔很快会与平均启动延迟持平,这就使得周期性数据流水线的执行延迟有了一个下限。超过这个阈值继续减少任务的执行间隔周期只会造成更多的问题而不能让任务执行得更快。

image-20220716110440637

监控周期性流水线的问题

  • 惊群效应

image-20220716113751716

  • 摩尔负载模式

image-20220716113726424

Google Workflow

Master/Slave 分布式系统设计模式。

Workflow 中的执行阶段

我们可以通过将工作进程进一步划分为更小的任务组,而将流水线的”深度“随意增加。每个任务组负责处理该执行阶段的数据,可以对某一小块数据进行任意操作。

工作进程处理前序阶段产生的工作单元,同时生产出新的输出单元。输出可以终止整个执行,也可以作为其他处理阶段的输入。

正确性保障

  • 配置文件
  • 租约
  • 唯一文件名
  • 服务器令牌

保障业务的持续性

大数据处理流水线需要在各种失败条件下持续运行,包括光纤被切、天气状况、连锁性供电故障等。

Workflow 通过持续性运行的流水线完美地解决了这个难题。

分布式锁

image-20220716113818654

小结

周期性的数据流水线是很有价值的。但是如果一个数据处理问题本身是持续性的,或者会自然增长成为持续性的,那么就不要采用周期性的设计方式,而是采用一种类似 Workflow 的设计特点的系统。

我们发现带有强一致性的持续数据处理系统,就像 Workflow 这样,在分布式集群环境中工作性能和扩展性都非常好。这样一个系统能够周期性地提供可以依赖的结果,并且是一个非常可靠且稳定的可运维系统。

参考文献

  1. https://sites.cs.ucsb.edu/~rich/publications/shao-hcw.pdf “Master/Slave Computing on the Grid”
  2. https://en.wikipedia.org/wiki/System_prevalence “流式系统设计”
0%