笔记 MIT6.824 Lecture 14: Optimistic Concurrency Control

前言

主要讲了乐观锁在分布式事务中的应用,重点在于理解paper的Figure4


一、FaRM

1.1 对比spanner

FaRM的速度比spanner快很多(提升了100倍),FaRM的bottleneck是CPU time
FaRM在90台机器下能达到100million每秒的素的,是非常impressive的

1.2 setup

  • 所有数据都在data center
  • 一个primary对应一个backup
    在这里插入图片描述

1.3 how to get high performance

有硬件以及特殊网络Protool的支持

  1. 分库多severs 90台
  2. 使用内存没有disk的读写
  3. 网络通讯获取data的时候可以直接读取内存

1.4

NVRAM (non-volatile RAM)
数据保存在内存,有断电保护(battery)
这样可以减少了写操作带来的花销

传统的网络传输过程
在这里插入图片描述
传统的网络传输有各种分层,会导致RPC难以超过100000/second

于是FaRM使用了两个改进的方法

  1. Kernel bypass
  2. RDMA

Kernel bypass
新的bypass就是可以通过NIC直接跟别的server通信,避免了中间层对速度的影响

RDMA
直接跟内存通信,也就是sender provides memory addreses, and remote CPU is not involved.


二、Optimistic Concurrency Control (OOC)

2.1 原因

OCC lets FaRM read using one-sided RDMA reads server needn’t actively participate (no lock, due to OCC)

FaRM transaction API (simplified):

txCreate()
o = txRead(oid)  -- RDMA
o.f += 1
txWrite(oid, o)  -- purely local
ok = txCommit()  -- Figure 4

what’s an oid?
<region #, address>
region # indexes a mapping to [ primary, backup1, … ]
target RDMA NIC uses address directly to read or write RAM

Server 内存的layout
在这里插入图片描述


三、commit的过程

在这里插入图片描述

这个跟hibernate的commit挺像的,就是当你commit的时候对比version number,不一样的就返回false

Validate
有一个refetch的过程,为了提速用的,会比lock+commit快。原理就是one-sided RDMA reads 去re-fetch objects version number and lock flag does not set the log

例子分析
例子A
T1 ReadX LockY ValidateX Commit
T2 ReadY LockX ValidateY Commit

在Vx以及Vy的时候都会看到Lock,所以两个都是abort

例子B
T1 ReadX LockY ValidateX Commit
T2 ReadY LockX ValidateY Commit

对于T1来说是可以的,对于T2来说,在Validate Vy的时候,如果Comimit没有happen,就看到Lock,如果Commit已经happen,则Object id不一致,所以是abort


总结

FaRm就速度来讲是非常快的,可以说是impressive,但是,最好在没有太多conflict,因为乐观锁的缘故,同时也需要额外软件/硬件上的支持新的网络协议以及内存读取。但是可以看出,乐观锁在速度上会比更有优势

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值