课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
分布式编程开发技术是随着互联网的不断发展而逐渐被程序员掌握的一种开发方式,而今天我们就一起来了解一下,分布式编程状态与容错的概念。
1、何谓状态?
并不是分布式计算引擎才有状态的概念。从广义上来讲,任何一个程序,在运行时的某一时刻其进程中各个字段、变量在内存中的值,都是状态。
例如,一个程序从一个文件中读取数据,程序在内存中记录下来文件读取到了什么位置,将其保存在某个对象的offset字段中,以便接下来从该位置继续读取。这个offset字段的值其实就是一个有业务含义的“状态”值。
既然任何程序都有状态,那么对于任何一个分布式计算框架来说,无需任何特殊的设计,“状态”便天然地存在于其运行时的内存中。框架可以对这些状态进行维护(例如将其持久化),实现任何框架想要实现的目的(例如将其用于接下来将要讲到的容错机制中)。
那么这里的问题则是,各个框架是选取哪些字段、变量的值进行管理的呢?这便是理解各个框架状态与容错机制的关键。
2、何谓容错?
显然,并不是任何程序、框架都必须实现容错机制。在大数据计算领域常常把一个作业分类成流计算或批计算。对于批计算而言,容错并不是一个必不可少的机制,因为大部分批处理任务在时间和计算资源上来说都是可控的。如果作业在中途异常停止,大不了可以重新再运行一次。
然而,对于流处理作业并不是这样。因为从业务上来说,流处理作业会7*24地不间断运行。设想如果一个流处理作业运行了一年,突然因为一些异常原因挂掉,或者因为发现了脏数据或逻辑问题而手动停止,如果这时没有容错机制,则需要从一年前的数据开始从头运行。这在时间和计算成本上来说都无法接受。