上QQ阅读APP看书,第一时间看更新
3.1 依赖物理时间引发的问题
事务的并发访问控制算法——TO算法(基于时间戳排序的并发访问控制算法),依赖时间戳值对事务的提交顺序进行排序。对于传统的单机数据库系统,时间戳值可依据本机器的物理时钟获取(计算机中的系统时钟是一个频率精确和稳定的脉冲信号发生器[1])。而对于主流的数据库系统,时间戳值常通过一个相对的逻辑时钟(逻辑计数器)来给每一个事务排序。所以,依赖TO算法对事务并发控制进行处理,客观上是依赖一个具备单调性的时钟值,其形式上可能是物理时钟或逻辑时钟。
在分布式系统中,各个节点分布在不同物理位置,而且都存在自己的物理时钟,不同节点上的时间戳值不完全相同。所以物理时钟不能作为分布式系统内在不同节点上并发执行的事务的排序依据。这个问题可以通过一个抽象问题进行描述:如何在分布式环境下定义系统中所有事件的发生顺序?这就会涉及1.1.1节讨论的不可信物理时钟、日志等问题,大家可查看1.1.1节的相关内容,这里不再重复。
那么,那有没有办法在不使用物理时钟的情况下,给分布式环境下的所有事件排序呢?下面将从几个典型算法的角度,来探讨分布式系统中事件排序相关的解法。
[1]在计算机中由专门的时钟电路提供时钟信号,这种时钟电路就是石英晶体振荡器(Quartz Crystal OSC),简称晶振,其会产生频率信号,并按照频率均匀地打拍计数,以模拟时间的等间隔流逝,于是有了人们可感受到的“时间”。如主板上有一颗14.318MHz的晶振,作为基础频率源;还有一颗频率为32.768KHz的晶振,被用于在实时时钟(RTC)电路中显示精确的时间和日期。更多内容参考:https://baike.baidu.com/item/时钟频率/103708。