赞
踩
On-line Transaction Processing:
On-line Analytical Processing:
三个问题:
重要假设:
假设分布式DBMS中的所有节点都行为良好,并且在同一管理域下。如果我们告诉节点提交txn,那么它将提交txn(如果没有失败)。
如果不信任分布式DBMS中的其他节点,则需要对txns(区块链)使用拜占庭容错协议(Byzantine Fault Tolerant)。
当多节点txn完成时,DBMS需要询问所有涉及的节点是否安全提交。
examples:
每个节点将每个阶段的入站/出站消息和结果记录在非易失性存储日志中。
恢复时,检查日志中是否有2PC消息:
如果Coordinator崩溃会发生什么?
Early Prepare Voting(Rare)
如果将查询发送到知道将在那里执行的最后一个查询的远程节点,则该节点也将返回他们对准备阶段的投票,并返回查询结果。
Early Ack After Prepare(Common)
如果所有节点都投票提交txn,协调器可以在提交阶段结束之前向客户端发送其txn成功的确认。
Early acknowledgement after prepare是一种对2PC的优化方法,它可以提高事务的响应时间和吞吐量。它的基本思想是,如果所有参与者都同意提交事务,那么协调者可以在提交阶段之前就向客户端发送一个确认消息(Acknowledge Message),表示该事务已经成功完成。这样,客户端就不需要等待提交阶段的结束,而可以立即开始新的事务。同时,协调者也可以减少对参与者的通信开销,因为它不需要等待所有参与者的完成消息。
Early acknowledgement after prepare的优点是可以降低事务的平均延迟,提高系统的并发性和性能。缺点是可能增加系统的复杂性和风险,因为如果在提交阶段发生了故障或网络分区,那么客户端可能会收到错误的确认消息,导致数据不一致或异常。因此,这种优化方法需要保证系统的可靠性和容错性,以及合理地选择确认消息的发送时机。
共识协议,其中coordinator提出结果(例如,提交或中止),然后participants就该结果是否应成功进行投票。
如果大多数Participants可用,并且在最佳情况下消息延迟可证明最小,则不会阻止。
如果系统选择了一个Leader,在一段时间内监督提议的变更,则它可以跳过提议阶段。每当出现故障时,都会恢复到完整的Paxos。
系统定期使用另一轮Paxos续订领导者(称为租约)。节点必须在Leader选举期间交换日志条目,以确保每个人都是最新的。
2 Phase Commit
如果Coordinator在发送准备消息后失败,则阻塞,直到Coordinator恢复。
PAXOS
如果大多数Participants还活着,则不封锁,前提是有足够长的时间没有进一步的失败。
DBMS可以跨冗余节点复制数据,以提高可用性。
设计决策:
方法一:Primary-Replica
方法二:Multi-Primary
K-Safety是确定复制数据库容错性的阈值。
值K表示每个数据对象必须始终可用的副本数。
如果复制副本的数量低于此阈值,则DBMS将停止执行并使自己脱机。
当txn在复制的数据库上提交时,DBMS决定它是否必须等待txn的更改传播到其他节点,然后才能将确认发送到应用程序。
传播级别:
方法一:Continuous:DBMS在生成日志消息时立即发送日志消息。 还需要发送提交/中止消息。
方法二:On Commit : DBMS仅在提交txn后将txn的日志消息发送到副本。不要浪费时间发送中止的txns的日志记录。 假设txn的日志记录完全适合内存
方法一:Acitve-Active
方法二:Active-Passive
一个缺陷是,它忽略了一致性与延迟的权衡。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。