论文:FaRM
前面我们聊到对于分布式事务来说,很难同时保证一致性,高并发和可用性(CAP 原则),核心的原因是资源竞争,这里的资源是指 master 的 CPU,内存和网络,由于要保证一致性就得对资源加锁,但要提高并发性就得减少锁的消耗,而要满足可用性就不得不对数据增加备份,每增加一个备份都会增加了一致性的负担。
当然我们看整个系统不能只看上层的软件部分,因为我们最终的目的是让硬件处理我们的数据,而软件是对硬件一层一层的封装。所以上面所述的问题是当前计算机硬件基础设施所决定的。
今天我们我讲的 FaRM(fast remote memory) 目标是挑战 CAP 原则,主要是针对新一代基础设施提出的设计方案。什么新新硬件?Non-Volatile DRAM 和 RMDA。
RMDA (Remote Memory Direct Access),简单的说就是在 MDA 的基础上实现机器和机器之间的远程数据传输,而数据的读取复制都不需要 CPU 参与。
Non-Volatile DRAM,可以理解为 SSD (固态硬盘)
两个技术带来的好处是解放了 CPU 的 IO 负载。然后我们的真个事务处理流程变成四阶段提交:
- Lock:某个集群的 Primary 接受 client 请求,加锁,处理本地数据,更新版本号。
- Validation:FaRM 通过 RDMA 方式读写所有涉及到的数据版本号,判断失误是否冲突,此过程不需要服务器的 CPU 参与。
- Backup commit:备份服务器写入本次事务的操作 log,不需要 CPU 参与。
- Primary commit:以 RDMA 的方式向 Primary 写入 commit-primary 数据,Primary 的监听程序会释放锁。
正所谓有得必有失,由于 IO 不经过 CPU,导致某些情况下 CPU 失去了对数据的控制,比如不能确定本次事务是否有足够的存储空间,所以需要在准备阶段需要预约足够的空间。
网友评论