
课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
随着互联网的不断发展,越来越多的人都在学习计算机编程开发技术,而今天我们就一起来了解一下,软件开发状态与容错的概念区别。
何谓状态?
并不是分布式计算引擎才有状态的概念。从广义上来讲,任何一个程序,在运行时的某一时刻其进程中各个字段、变量在内存中的值,都是状态。
例如,一个程序从一个文件中读取数据,程序在内存中记录下来文件读取到了什么位置,将其保存在某个对象的offset字段中,以便接下来从该位置继续读取。这个offset字段的值其实就是一个有业务含义的“状态”值。
既然任何程序都有状态,那么对于任何一个分布式计算框架来说,无需任何特殊的设计,“状态”便天然地存在于其运行时的内存中。框架可以对这些状态进行维护(例如将其持久化),实现任何框架想要实现的目的(例如将其用于接下来将要讲到的容错机制中)。
那么这里的问题则是,各个框架是选取哪些字段、变量的值进行管理的呢?这便是理解各个框架状态与容错机制的关键。
何谓容错?
显然,并不是任何程序、框架都必须实现容错机制。在大数据计算领域常常把一个作业分类成流计算或批计算。对于批计算而言,容错并不是一个必不可少的机制,因为大部分批处理任务在时间和计算资源上来说都是可控的。如果作业在中途异常停止,大不了可以重新再运行一次。
然而,对于流处理作业并不是这样。因为从业务上来说,流处理作业会7*24地不间断运行。设想如果一个流处理作业运行了一年,突然因为一些异常原因挂掉,或者因为发现了脏数据或逻辑问题而手动停止,如果这时没有容错机制,则需要从一年前的数据开始从头运行。这在时间和计算成本上来说都无法接受。
如果一个作业需要容错,往往指的就是这样一个过程:
程序在运行的过程当中,在某一时刻对其状态进行落盘存储。在未来的某一时刻,程序因为某种原因停止后,可以从之前落盘的数据重启并继续正常稳定地运行。
【免责声明】:本内容转载于网络,转载目的在于传递信息。文章内容为作者个人意见,本平台对文中陈述、观点保持中立,不对所包含内容的准确性、可靠性与完整性提供形式地保证。请读者仅作参考。更多内容请在707945861群中学习了解。欢迎关注“达内在线”参与分销,赚更多好礼。