分布式系统-MapReduce 阅读笔记

MapReduce 根据使用者的不同,会产生不同的视角:

  • 分布式系统的使用者:重点关注 Map&Reduce 两类函数的编写,无需关心具体的分布式框架。
  • 分布式系统的开发者:需要管理 Map&Reduce 如何分发到机器上以便降低网络传输需求,同时关注冗余和备份以便顺利且迅速的完成计算任务。

接下来,本文作为 MapReduce 论文和 Mit6.824 的阅读笔记将以分布式系统的开发者的视角分析如何构建一个 MapReduce 系统。

分布式系统-概述

分布式系统的抽象和实现工具

分布式系统无外乎考虑以下三点:

  • 存储:构建一个多副本、容错的、高性能的分布式存储实现。
  • 通信:在不可靠的且带宽有限的网络上交换数据。
  • 计算:通过尽可能并行化任务,降低延迟并提高吞吐率。

同时,分布式系统存的实现目标同样有三点:

HTTP3笔记

什么是 HTTP/3?

要理解什么是 HTTP/3,需要明白 HTTP/3 的提出为了解决哪些问题,通过什么手段解决。

OS-IO

为什么需要中断

计算机中有大量的硬件,它们之间通过各种总线连接,比如:

  • CPU和内存通过某种专有的高速总线连接。
  • 显卡和现代的SSD等高速设备通过PCIe连接到CPU。
  • 鼠标、机械硬盘等缓慢的设备通过外设 I/O 总线连接到 CPU。

实际现代 CPU 将内存控制器集成于芯片,采用 DDR4/DDR5 通道,由内部互连(如 Intel UPI、AMD Infinity Fabric)管理多路内存访问。

OS-并发-事件循环

基于事件的循环

一个典型的事件循环如下:

1
2
3
4
5
while(1){
    events=getEvents()
    for e in events:
        processEvent(e)
}

基于事件循环的并发,调度由程序自己进行,因此调度是可控的。同时,事件循环有两类实现:单线程事件循环、一个主线程负责事件循环并拉起其他线程处理具体事务。本次主要基于单线程事件循环进行。