摘要: 架构要了解一个系统,一般都是从架构开始。我们关心的问题是:系统部署成功后各个节点都启动了哪些服务,各个服务之间又是怎么交互和协调的。下方是 Flink 集群启动后架构图。当 Flink 集群启动后,首先会启动一个 JobManger 和一个或多个的 TaskManager。由 Client 提交任务给 JobManager,JobManager 再调度任务到各个 TaskManager 去执行,然... 阅读全文
posted @ 2019-05-10 17:37 春江师兄 阅读(488) 评论(0) 推荐(0) 编辑
摘要: 流处理系统需要能优雅地处理反压(backpressure)问题。反压通常产生于这样的场景:短时负载高峰导致系统接收数据的速率远高于它处理数据的速率。许多日常问题都会导致反压,例如,垃圾回收停顿可能会导致流入的数据快速堆积,或者遇到大促或秒杀活动导致流量陡增。反压如果不能得到正确的处理,可能会导致资源耗尽甚至系统崩溃。目前主流的流处理系统 Storm/JStorm/Spark Streaming/F... 阅读全文
posted @ 2019-05-10 17:07 春江师兄 阅读(2290) 评论(0) 推荐(0) 编辑
摘要: link有三种时间模型:ProcessingTime,EventTime和IngestionTime。关于时间模型看这张图:从这张图里可以很清楚的看到三种Time模型的区别。EventTime是数据被生产出来的时间,可以是比如传感器发出信号的时间等(此时数据还没有被传输给flink)。IngestionTime是数据进入flink的时间,也就是从Source进入flink流的时间(此时数据刚刚被传... 阅读全文
posted @ 2019-05-10 16:58 春江师兄 阅读(734) 评论(0) 推荐(0) 编辑
摘要: 在流模型中,我们期待数据是像水流一样平滑的流过我们的引擎,但现实生活不会这么美好。数据的上游可能因为各种原因数据量暴增,远远超出了下游的瞬时处理能力(回忆一下98年大洪水),导致系统崩溃。那么框架应该怎么应对呢?和人类处理自然灾害的方式类似,我们修建了三峡大坝,当洪水来临时把大量的水囤积在大坝里;对于Flink来说,就是在数据的接收端和发送端放置了缓存池,用以缓冲数据,并且设置闸门阻止数据向下流。... 阅读全文
posted @ 2019-05-10 16:56 春江师兄 阅读(607) 评论(0) 推荐(0) 编辑
摘要: 对于7×24小时不间断运行的流程序来说,要保证fault tolerant是很难的,这不像是离线任务,如果失败了只需要清空已有结果,重新跑一次就可以了。对于流任务,如果要保证能够重新处理已处理过的数据,就要把数据保存下来;而这就面临着几个问题:比如一是保存多久的数据?二是重复计算的数据应该怎么处理,怎么保证幂等性?对于一个流系统,我们有以下希望:最好能做到exactly-once处理延迟越低越好吞... 阅读全文
posted @ 2019-05-10 16:31 春江师兄 阅读(600) 评论(0) 推荐(0) 编辑