基于对象的复制对象锁定协议
1 引言
在基于对象的系统中,为了提高系统的性能、可靠性和可用性,对象通常会被复制。传统的两阶段锁定(2PL)协议采用“一读全写”原则,即读取时锁定一个副本,写入时锁定所有副本,这种方法对于写操作占主导的应用效率不高。而基于法定人数的协议则分别锁定一定数量的副本进行读写操作,法定人数的选择取决于读写操作的频率。
分布式应用通常被建模为多个协作对象的集合,这些对象支持比读写更抽象的操作。为了确保操作的一致性,需要对对象进行锁定。本文提出了一种基于对象的锁定(OBL)协议,它是将基于法定人数的方法扩展到抽象对象的副本上。在计算操作之前,会根据操作的锁定模式和调用频率锁定一定数量的副本。与传统协议相比,OBL 协议锁定的副本数量更少。
2 复制对象
系统由多个对象组成,这些对象通过网络交换消息进行协作。每个对象支持一组操作,对象被封装,只能通过这些操作进行操作。事务是一系列原子操作的序列,只有当所有操作都成功完成时,事务才会提交。改变对象状态的操作称为更新操作。
操作之间存在兼容性和冲突性。如果两个操作的执行结果不依赖于执行顺序,则它们是兼容的;否则,它们是冲突的。为了使操作的计算可序列化,在接收到操作请求时,对象会被锁定在相应的锁定模式下。例如,银行对象的存款(Deposit)和取款(Withdraw)操作的锁定模式 Dlock 和 Wlock 是兼容的。
操作完成后,对象的锁定会被释放。如果一个对象已经被锁定在与操作请求的锁定模式冲突的模式下,操作将被阻塞,直到锁定被释放。
2.1 抽象锁定模式
复制对象在计算操作之前会被锁定在相应的模式下。锁定模
超级会员免费看
订阅专栏 解锁全文
2万+

被折叠的 条评论
为什么被折叠?



