分布式算法(distributed algorithm)是一类在多个互相连接的分布式计算机结点上运行的无中心节点的算法。分布式算法广泛应用于各种分布式系统,如通信系统、分布式数据库、多处理器共享内存系统及实时控制系统等。虽然没有中心节点协调执行,分布式算法仍须保证在并发执行、时序不确定、结点故障且信道不可靠的情况下产生确定性的结果。因此,分布式算法相较于集中式算法更为复杂、难于设计和理解。
分布式算法涉及的问题较为宽泛,主要解决的问题包括进程通信、同步、一致性和资源分配等。进程通信可以使不同进程之间可靠地传递信号和数据,包括远程调用、消息传递、流式通信和多播通信等。同步是为了使多个进程为达到某种状态或使得操作序列有序的过程。常见的同步问题有时钟同步、生产者消费者问题和哲学家就餐问题等。一致性算法是为了解决多个不同的结点接受同一决策的问题,例如广泛应用的Paxos算法。资源分配问题则是在考虑资源可用性和使用者需求的前提下进行资源调度的过程。为解决上述各类问题,典型的分布式算法有选举算法、原子提交算法、一致性算法和资源分配算法等。