cs-6.824第14讲 FARM和乐观并发控制
cs-6.824第14讲 FARM和乐观并发控制
farm是系列中关于事务、复制和分片方面的最后一篇论文。这仍然是一个开放的研究领域,人们对于现有的性能与一致性之间的权衡并不满意,仍然在努力寻求更优的解决方案。
这篇论文的动机源于这些新型RDMA NICs锁蕴含的巨大性能潜力。
farm和spanner有何不同?
这两者都实现了复制,并且它们都是用两阶段提交来处理事务,所以它们在这个层面上是非常类似的。
Spanner主要关注点是地理复制,即能够在东西海岸以及不同的数据中心拥有副本,并且能够进行设计多个不同地点数据的高效交易。它最具有创新的地方在于,为了尝试解决长距离进行提交所需时间的问题,它为制度事务设置了一系列特殊的优化。Spanner的性能,读写事务的耗时在10-100ms之间,具体取决于不同数据中心之间的距离远近。
Farm做出了截然不同的设计决策,并针对不同类型的工作负载。farm是一个研究原型,并非成品。 我们的目的是探索这些新型RDMA高速网络硬件的潜力。
farm假设所有副本位于同一数据中心,farm并非解决spanner所面临的问题,即如果整个数据中心发生故障,将会发生什么情况。其容错能力体现在应对个别故障或尝试在整座数据中心断电并恢复供电后进行恢复。
这里再次强调,它采用了RDMA技术,但是事实证明,RDMA在某种程度上严重限制了设计选项, 因此farm不得不采用乐观并发控制。另一方面,farm的性能远高于spanner, farm能在58微秒完成一次简单的事务处理。这比spanner快了约100倍。 这或许是farm系统和地理复制系统之间的主要差异。
在spanner系统中,人们主要担忧的瓶颈是光速和网络速度,即数据中心之间的光速延迟和网络延迟。在farm系统中,设计时主要担忧的瓶颈是服务器的CPU时间,因为他们通过将所有副本放置在同一数据中心,某种程度上,忽略了光速和网络延迟的影响。
配置管理器,负责决定哪些服务器应作为数据分片的主要和备份服务器。
4:20
PS
什么是one-side RDMA?
One-Side RDMA(单端 RDMA)是指 Remote Direct Memory Access(远程直接内存访问)的一种特定形式,其中一个节点的计算机系统(通常称为客户端)能够直接访问另一个节点的内存,而无需对方的 CPU 参与。与传统的网络通信方式不同,RDMA 允许一个节点直接操作远程节点的内存,从而大大降低了延迟和CPU负载,通常用于高速数据传输和大规模并行计算环境中。
One-Side RDMA 的工作原理:
1.直接内存访问:RDMA 允许在网络上发送数据时,避免了传统的网络协议栈的处理(如 TCP/IP 的处理),从而减少了内存拷贝、CPU干预和数据传输的延迟。在 One-Side RDMA 中,只涉及发送方节点的 RDMA 操作,接收方节点仅需暴露其内存区域,接收数据不需要参与任何复杂的处理。
2.操作流程:
- Initiator(发起方):发起方(客户端)在其内存中准备数据并指定目标内存(远程内存)地址。它会使用 RDMA 的操作来直接将数据写入目标节点的内存中或从目标节点的内存中读取数据。
- Target(接收方):目标节点的内存空间已经被暴露,发起方不需要等待目标节点的参与,即发起方直接将数据写入或读取远程节点的内存区域。
这种方式通常是在低延迟、大带宽的网络环境(如 InfiniBand)中实现的,能够在不经过目标节点的 CPU 和操作系统内核的情况下,直接对远程内存进行操作。
3.传输方式:
- Write Operation(写操作):发起方可以直接将数据写入远程节点的内存。这种操作不需要接收方节点的处理,它只需要在网络上发送数据,并在目标节点的内存区域进行写入。
- Read Operation(读操作):发起方可以从远程节点的内存中读取数据,而目标节点不需要处理该请求。
- Atomics(原子操作):一些高级的 RDMA 功能,如对远程内存进行原子操作(例如加法或比较交换),也可以在单端操作中实现。