当数据库遇到分布式,你会怎么做?
我们知道分布式系统中,各个机器拥有相同的时钟(全局时钟)是不太可能的。1978年Lamport在一篇论文中提出了一种逻辑时间戳,来解决分布式系统中区分事件发生的时序问题。这篇论文是分布式系统领域被引用最多的论文之一。 Lamport时间戳就是两者的简单结合:时间戳/计数器 + 节点ID,规则如下: 每个事件对应一个Lamport时间戳,初始值为0 如果事件在节点内发生,本地进程中的时间戳加1 如果事件属于发送事件,本地进程中的时间戳加1并在消息中带上该时间戳 如果事件属于接收事件,本地进程中的时间戳 = Max(本地时间戳,消息中的时间戳) + 1 事件的顺序按照时间戳排序,时间戳相同则按照节点ID大小排序 上图,ABC节点的所有事件的全序关系如下: Lamport时间戳背后的思想是:两个事件可以建立时序(因果)关系的前提是两个事件之间是否发生过信息传递。因此Lamport时间戳只保证因果关系(偏序)的正确性,不保证绝对时序的正确性。 全序广播 Lamport时间戳通过消息的传递来确定事件的时序关系,引出了全序广播(在节点间交换消息的协议)。全序广播需要满足两个安全属性: 可靠交付 (reliable delivery),没有消息丢失:如果消息被传递到一个节点,它将传递到所有节点 全序交付(total ordered delivery),消息以相同的顺序传递给每个节点 (编辑:威海站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |