EagleBear2002 的博客

这里必须根绝一切犹豫,这里任何怯懦都无济于事

摘要

传统的容错分布式事务是在 Paxos 共识协议之上的传统并发控制协议。这种方法提供了可扩展性、可用性和强一致性。然而,当用于广域存储时,这种方法会引发两次跨数据中心的连续协调:一次用于并发控制,然后一次用于共识。在本文中,我们主要观察到并发控制和共识所需的协调高度相似。具体来说,每个都试图确保交易的序列化图是非循环的。我们在 Janus 的设计中利用了这种洞察力,这是一个统一的并发控制和共识协议。 Janus 的目标是编写为存储过程的一次性事务,这是一种常见但受限制的事务类。像 MDCC 和 TAIR 一样,Janus 可以在一次往返中提交此类中的不冲突事务。与 MDCC 和 TAPIR 不同,Janus 避免了由于争用而中止:只要网络运行良好并且每个服务器副本的大多数都处于活动状态,它最多在两次往返中提交此类中的冲突事务。

我们将 Janus 与分层设计和 TAPIR 在此类中的各种工作负载下进行比较。我们的评估表明,在无竞争的微基准测试中,Janus 的吞吐量是分层系统的 5 倍,是 TAPIR 吞吐量的 90%。当工作负载竞争时,Janus 提供比基线低得多的延迟和更高的吞吐量(高达 6.8 倍)。

简介

可扩展、可用且高度一致的分布式事务通常是通过在 Paxos 共识协议复制的数据存储分片之上分层传统并发控制协议来实现的。将数据分片成许多可以由不同服务器存储和服务的小子集提供了可扩展性。尽管服务器出现故障,但通过共识复制每个分片可提供可用性。尽管不同事务的数据访问存在冲突,但使用 USENIX 关联并发控制跨复制分片协调事务可提供强一致性。这种方法在实践中很常用。例如,Spanner 实现了两阶段锁定 (2PL) 和两阶段提交 (2PC),其中数据和锁都由 Paxos 复制。作为另一个例子,Percolator 实现了机会并发控制 (OCC) 的变体,它在 BigTable 之上使用 2PC,它依赖于主备份复制和 Paxos。

阅读全文 »

马克思主义由三个部分组成:马克思主义的哲学即辩证唯物主义和历史唯物主义、马克思主义的政治经济学和科学社会主义学说。

政治经济学是研究生产规律及其发展规律的科学

物质资料的生产是人类社会的基础

物质资料的生产是人类社会存在和发展的基础。

马克思指出,人类社会要进行生产,必须具备三要素:人的劳动、劳动对象和劳动资料。劳动就是劳动力的支出,就是人的脑、肌肉、神经、手等等的生产耗费。劳动对象就是人把自己的劳动加在它上面的东西。劳动资料是使人的劳动和劳动对象联系起来的媒介物。

阅读全文 »

继承

继承机制

基于目标代码的复用。对事物进行分类,派生类是基类的具体化,把事物(概念)以层次结构表示出来,有利于描述和解决问题。

有利于增量开发

单继承

阅读全文 »

本文主要内容来自 SpriCoder的博客,更换了更清晰的图片并对原文的疏漏做了补充和修正。

计算机网络概述

计算机网络

  1. 什么是网络?网络是由物体、设备或人组成的错综复杂(intricately)的连接系统
  2. 计算机网络:是网络的一种
    • 目的:共享资源,资源类型比较广泛。
    • 传送的类型是二进制数据流。
  3. 企业也可以构成网络:随着公司的扩张,连接不同站点的网络的需求变得非常重要
  4. 计算机网络标准和规范组成当前计算机网络的形式。

数据网络分类

阅读全文 »

引言

用于实现容错分布式系统的 Paxos 算法一直被认为难以理解,这可能是因为对许多读者来说最初的介绍是希腊语。事实上,它是最简单、最明显的分布式算法之一。 它的核心是一种共识算法—— The part-time parliament 中的“synod”算法。下一节表明,这种共识算法几乎不可避免地遵循我们希望它满足的属性。最后一部分解释了完整的 Paxos 算法,该算法是通过将共识直接应用于构建分布式系统的状态机方法而获得的——这种方法应该是众所周知的,因为它可能是最常见的主题 - 引用的关于分布式系统理论的文章 Time, clocks, and the ordering of events in a distributed system

共识算法

问题

假设一组可以提出值的进程。共识算法可确保选择提议(purposed)值中的一个值。如果没有提议值,则不应选择任何值。如果选择了一个值,那么进程应该能够学习选择的值。共识的安全要求是:

阅读全文 »

分布式 DBMS

可以使用单节点 DBMS 的构建块来支持分布式环境中的事务处理和查询执行。 设计分布式 DBMS 的一个重要目标是使其具有容错性(即,避免单个节点故障导致整个系统瘫痪)。

并发数据库:

  • 节点在物理上彼此靠近。
  • 节点通过高速 LAN(快速、可靠的通信结构)连接。
  • 假设节点之间的通信成本很小。 因此,在设计内部协议时无需担心节点崩溃或数据包丢失。

分布式数据库:

阅读全文 »

\[ \def\ABORT{\mathsf{ABORT}} \def\ACCEPT{\mathsf{ACCEPT}} \def\ACCEPTACK{\mathsf{ACCEPT\_ACK}} \def\act{\mathsf{act}} \def\ballot{\mathsf{ballot}} \def\certify{\mathsf{certify}} \def\client{\mathsf{client}} \def\COMMIT{\mathsf{COMMIT}} \def\committed{\mathsf{committed}} \def\coord{\mathsf{coord}} \def\dec{\mathsf{dec}} \def\DECIDED{\mathsf{DECIDED}} \def\decide{\mathsf{decide}} \def\DECISION{\mathsf{DECISION}} \def\decision{\mathsf{decision}} \def\FOLLOWER{\mathsf{FOLLOWER}} \def\follower{\mathsf{follower}} \def\l{\mathcal{l}} \def\LEADER{\mathsf{LEADER}} \def\leader{\mathsf{leader}} \def\D{\mathcal{D}} \def\next{\mathsf{next}} \def\Obj{\mathsf{Obj}} \def\P{\mathcal{P}} \def\phase{\mathsf{phase}} \def\PREPARE{\mathsf{PREPARE}} \def\PREPARED{\mathsf{PREPARED}} \def\PREPAREACK{\mathsf{PREPARE\_ACK}} \def\proc{\mathsf{proc}} \def\RECOVERING{\mathsf{RECOVERING}} \def\S{\mathcal{S}} \def\shards{\mathsf{shards}} \def\START{\mathsf{START}} \def\status{\mathsf{status}} \def\T{\mathcal{T}} \def\txn{\mathsf{txn}} \def\Val{\mathsf{Val}} \def\Ver{\mathsf{Ver}} \def\vote{\mathsf{vote}} \]

摘要

原子事务提交(ACP)是一个和一致性相似的单次协议问题,旨在模拟易出错的分布式系统的事务提交协议属性。我们认为,ACP 限制太多以至于不能捕获现代事务数据存储的复杂性,其中提交协议和并发控制集成,并且他们对不同事务的执行是相互依赖的。作为替代方案,我们引入了传输认证服务(TCS),一个新的正式问题,它通过集成的并发控制来捕获多发事务提交协议的安全保证。TCS 由可实例化的认证函数参数化,以支持常见的隔离级别,如可串行化和快照隔离。然后,我们推导出一个可证明正确性的弹性崩溃协议,用于通过连续改进来实现 TCS。我们的协议比主流方法实现了更好的时间复杂度,主流方法在 Paxos 风格的复制之上分两阶段提交。

概论

现代数据存储通常被需要管理大量数据,同时为用户提供严格的事务保证。它们通过将数据划分为独立管理的分片和容错性来实现可伸缩性,方法是在一组服务器上复制每个分片。实现这样的系统需要复杂的协议来确保分布式事务满足通常称为 ACID 的所需属性的组合:原子性,一致性,隔离性和持久性。

阅读全文 »