作者:禅与计算机程序设计艺术
1.背景介绍
分布式任务调度简介
一般情况下,应用程序在运行时由一个进程执行,而进程是资源有限的,如果需要处理多个任务,就需要利用多线程或进程的方式提升处理效率,但同时也带来了很多复杂的问题:如线程间同步、死锁、通信复杂性、负载均衡等。如何有效地管理并分配任务使得同一时间只有少量进程或者线程在工作,从而提高整个系统的性能,就是分布式任务调度的核心。
为什么要进行分布式任务调度?
简单原因
目前的应用系统都存在海量的数据,存储量巨大的场景,单个应用服务器无法承受这样庞大的数据量,因此需要对数据进行切分,使其分布到不同的服务器上,而这就需要分布式任务调度。如今大数据、云计算、微服务架构等各种形式的架构下,应用服务器可以根据负载情况动态增加、减少,数据的分布式存储让任务调度变得至关重要。
中级原因
为了提高系统的处理能力和响应速度,可以将任务分布到多个节点中去执行,这就要求各个节点之间需要建立通信,而且这些节点可能分布在不同的网络区域内,因此需要在不同区域间进行通信的协议、解决方案等。
高级原因
越来越多的分布式系统被应用到工业领域,需要对设备、传感器等各种硬件的状态进行实时的监控。对于这种应用来说,分布式任务调度尤为关键,因为需要确保实时响应,并及时发现设备故障并及时做出反应。