项目价值

中国移动公司旗下拥有很多的子机构,基本可以按照省份划分,而各省份旗下的充值机构也非常的多, 且充值过程中会涉及到中国移动信息系统内部各个子系统之间的接口调用, 接口故障监控也成为了重点监控的内容之一,为此建设一个能够实时监控全国的充值情况的平台, 掌控全网的实时充值, 减少充值统计时间,加快充值业务的效率,为公司以后的发展提供数据支撑。

技术选型

2.1难点分析 l

移动公司旗下子充值机构众多, 充值数据量大. l

数据实时性要求高

2.2可用技术选型l

实时流式计算框架 Storm l

实时流式计算框架 Spark Streaming l

实时流式计算框架 Flink

对比分析

Storm、Spark streaming、Flink 都是开源的分布式系统,具有低延迟、可扩展和容错性 诸多优点,允许你在运行数据流代码时,将任务分配到一系列具有容错能力的计算机上并行 运行,都提供了简单的 API 来简化底层实现的复杂程度。

Apache Storm

在 Storm 中,先要设计一个用于实时计算的图状结构,我们称之为拓扑(topology)。这个 拓扑将会被提交给集群,由集群中的主控节点(master node)分发代码,将任务分配给工 作节点(worker node)执行。一个拓扑中包括 spout 和 bolt 两种角色,其中 spout 发送消息,负责将数据流以 tuple 元组的形式发送出去;而 bolt 则负责转换这些数据流,在 bolt 中可以完成计算、过滤等操作,bolt 自身也可以随机将数据发送给其他 bolt。由 spout 发射出的 tuple是不可变数组,对应着固定的键值对。

images-P1.png

Apache Spark

Spark Streaming 是核心 Spark API 的一个扩展,它并不会像 Storm 那样一次一个地处理数据 流,而是在处理前按时间间隔预先将其切分为一段一段的批处理作业。Spark 针对持续性数 据流的抽象称为 DStream(DiscretizedStream),一个 DStream 是一个微批处理(micro-batching) 的 RDD(弹性分布式数据集);而 RDD 则是一种分布式数据集,能够以两种方式并行运作, 分别是任意函数和滑动窗口数据的转换。

images-P2.png

Apache Flink

Flink 是一个针对流数据和批数据的分布式处理引擎。它主要是由 Java 代码实现。对 Flink 而言,其所要处理的主要场景就是流数据,批数据只是流数据的一个极限特例而已。再换句 话说,Flink 会把所有任务当成流来处理,这也是其最大的特点。Flink 可以支持本地的快速 迭代,以及一些环形的迭代任务。并且 Flink 可以定制化内存管理。在这点,如果要对比 Flink 和 Spark 的话,Flink 并没有将内存完全交给应用层。这也是为什么 Spark 相对于 Flink,更容易出现 OOM 的原因(out of memory)。就框架本身与应用场景来说,Flink 更相似与 Storm。

images-P3.png