下一篇(L2)

2021 L1

主题

  在分布式系统设计中,需要考虑多个关键方面,以确保系统的可靠性、高性能和一致性。这些方面包括:

  1. 容错

    容错机制分为可用性和可恢复性两个方面:

    1. 可用性:系统在部分节点故障时仍能继续提供服务;
    2. 可恢复性:系统能够从故障中恢复,重新运行任务并尽可能减少数据丢失;
  2. 一致性

    在分布式系统中,多个副本的数据要保持一致;

  3. 高性能

    高性能通常包括两个方面:吞吐量和低延迟;

  4. 实现部分
    1. 管理并发性:
      1. 锁和同步机制:确保多个进程或线程在访问共享资源时不会相互干扰;
      2. 事务:通过事务管理来保证多个操作的原子性和一致性;
    2. 实现RPC(远程过程调用):

      用于不同节点之间的通信,需要考虑:

      • 序列化和反序列化:将数据转换为可以通过网络传输的格式,并在接收端还原;
      • 网络通信:使用底层协议(如HTTP、TCP)进行数据传输;
      • 错误处理:处理网络故障、超时等异常情况;

错误处理 (MapReduce)

  当唯一的协调器(master)宕机时,需要重新运行整个任务;

  也可以通过备份协调器或重新选举新的协调器(多个协调器)来继续任务;

  遇到慢节点时,协调器会将属于慢节点的任务重新分配(复制)给第一个(按照完成任务的快慢顺序)完成任务的worker:通过动态调整任务分配,减少因慢节点导致的整体延迟;

Combiner Function

  Combiner Function是一个可选的优化手段,当Map函数处理后有大量重复值时,用户可以指定一个Combiner函数,在本地先合并这些重复值,再写入中间文件,最后发送出去;这样可以减少网络传输的数据量,提高整体性能。