
课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
分布式计算随着互联网的不断发展而被越来越多的程序员掌握,今天南宁达内IT培训就给大家简单介绍一下,分布式计算都有哪些算法模型。
数据并行模型
这个简单的一个计算模型,每个节点处理的计算任务是相同的,并且分配到不同的数据,每个节点完成计算任务后再汇总出计算结果。如何有效地做数据分区是决定整个模型的效率的关键。
任务依赖图模型
计算平台将一个复杂Job拆分为多个任务,并且按照Task之间的依赖关系生成一个依赖图(DAG)。每个节点是一个计算任务,每个有方向的边代表依赖关系。如在MapReduce和Spark中,都采用了这个模型,并且都是根据数据在哪个节点上来决定对应的计算任务在哪个服务器上启动。
任务池模型
在这个模式下,一个调度单元负责将Job生成为一系列的Tasks并将其存入一个任务池中,每个Task分配给哪些服务器是完全随机的,根据一些检测算法来识别到有新的Task后动态的决定新计算任务的调动。
数据管道模型
这个模式下,有一个数据的管道(pipeline),这个管道分为几个Stage,每个Stage都有一些数据计算任务,并且将结果传给下个Stage。每个Stage都切分为多个计算任务,多个相连的Stage上的Tasks就组成了一个生产者-消费者模型。每个阶段任务的切分一般是静态切分的,按照数据特点或某些Hash算法。
混合模型
顾名思义,就是采用以上多个模型组合为一个新的计算模型。譬如Spark就采用的任务依赖图模型和数据管道模型混合的方式。
分布式计算技术是技术难度非常高的技术领域,为了保证能够适应多种计算需求,一个优秀的分布式计算框架需要满足较高的架构要求,主要包括:
透明性:无论分布式的系统有大的集群规模,在开发和使用上应该像是一个单一系统,不需要开发者感知其复杂性
可扩展性:计算能力能够随着服务器节点的增加而线性增长
异构能力:能够屏蔽底层软硬件的异构性,能够在不同的系统环境下运行
容错能力:单个或者少量的服务器阶段宕机后不会导致计算引擎停止服务
任务调度能力:可以通过策略将任务调度到给定的计算节点并保证有大化的性能和资源隔离性
安全性:无论底层网络的拓扑如何变化,分布式计算引擎要保证计算过程中的数据安全性
分布式计算技术按照其业务场景的不同又可以分为离线计算和实时计算,其中离线计算因为被广泛应用于批处理业务,对应的计算框架经常被称作批处理引擎,MapReduce、Tez和Spark是其中的重要代表。实时计算的发展历史只有十几年,其与基于数据库的计算模型有本质的区别,实时计算是固定的计算任务加上流动的数据,而数据库基本上是固定的数据和流动的计算任务,因此实时计算平台对数据抽象、延时性、容错性、数据语义等的要求与数据库明显不同,面向实时计算的数据架构也就自然发展起来,Lambda和Kappa两种架构是其主要的代表。
【免责声明】本文系本网编辑部分转载,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及作品内容、版权和其它问题,请在30日内与管理员联系,我们会予以更改或删除相关文章,以保证您的权益!请读者仅作参考。更多内容请加抖音太原达内IT培训学习了解。