微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 硬件工程师文库 > 分布式存储系统技术解读

分布式存储系统技术解读

时间:09-17 来源: 点击:

一半的数据到新加入的存储节点。传统的数据库架构在可扩展性上面临如下问题:

  1. 扩容不够灵活。

  2. 扩容不够自动化。

  3. 增加副本时间长。

  同一个组内的节点服务相同的数据,这样的系统称为同构系统。同构系统的问题在于增加副本需要迁移的数据量太大,由于拷贝数据的过程中存储节点再次发生故障的概率很高,所以这样的架构很难做到自动化,不适用大规模分布式存储系统。而异构系统将数据划分为很多大小接近的分片,每个分片的多个副本可以分布到集群中的任何一个存储节点。由于整个集群都参与到节点的故障恢复过程,故障恢复时间很短,而且集群规模越大,优势就会越明显。

  

  图4 同构系统和异构系统的区别

  分布式协议

  在计算机世界里,为了解决一件事情,另外的问题就会接踵而至,从另一个层面印证了IT架构永远是一种平衡的艺术。

  "BASE"其核心思想是根据业务特点,采用适当的方式来使系统达到最终一致性(Eventual consistency);在互联网领域,通常需要牺牲强一致性来换取系统的高可用性,只需要保证数据的"最终一致",只是这个最终时间需要在用户可以接受的范围内;但在金融相关的交易领域,仍然需要采用强一致性的方式来保障交易的准确性与可靠性。

  业界常见的事务处理模式很多,包括两阶段提交、三阶段提交、Sagas长事务、补偿模式、可靠事件模式(本地事件表、外部事件表)、可靠事件模式(非事务消息、事务消息)、TCC、Paxos及其相关变种等等。不同的事务模型支持不同的数据一致性,这里我们不对每种协议都展开详细讨论,在分布式存储方面,用的最多的是两阶段提交协议及Paxos协议,以下重点介绍这两种协议。

  1、两阶段提交协议( Two-phase Commit,2PC):经常用来实现分布式事务,在两阶段协议中,系统一般包含两类节点:一类为协调者( coordinator),通常一个系统中只有一个;另一类为事务参与者(parTIcipants,cohorts或workers),一般包含多个。

  协议中假设每个节点都会记录操作日志并持久化到非易失性存储介质,即使节点发生故障日志也不会丢失。在提交阶段,协调者将基于第一个阶段的投票结果进行决策:提交或者取消。并通过引入事务的超时机制防止资源一直不能释放的情况。

  两阶段提交协议可能面临两种故障:

  事务参与者发生故障。给每个事务设置一个超时时间,如果某个事务参与者一直不响应,到达超时时间后整个事务失败。

  协调者发生故障。协调者需要将事务相关信息记录到操作日志并同步到备用协调者,假如协调者发生故障,备用协调者可以接替它完成后续的工作。如果没有备用协调者,协调者又发生了永久性故障,事务参与者将无法完成事务而一直等待下去。

  总而言之,两阶段提交协议是阻塞协议。

  2、Paxos协议:用于解决多个节点之间的一致性问题。只要保证了多个节点之间操作日志的一致性,就能够在这些节点上构建高可用的全局服务,例如分布式锁服务,全局命名和配置服务等。为了实现高可用性,主节点往往将数据以操作日志的形式同步到备节点。如果主节点发生故障,备节点会提议自己成为主节点。网络分区的时候,可能会存在多个备节点提议(Proposer,提议者)自己成为主节点。Paxos协议保证,即使同时存在多个proposer,也能够保证所有节点最终达成一致,即选举出唯一的主节点。

  (3)Paxos与2PC的区别:Paxos协议和2PC协议在分布式系统中所起的作用并不相同。Paxos协议用于保证同一个数据分片的多个副本之间的数据一致性。当这些副本分布到不同的数据中心时,这个需求尤其强烈。2PC协议用于保证属于多个数据分片上的操作的原子性。这些数据分片可能分布在不同的服务器上,2PC协议保证多台眼务器上的操作要么全部成功,要么全部失败。

  Paxos协议有两种用法:一种用法是用它来实现全局的锁服务或者命名和配置服务,例如Google Chubby以及Apache Zookeeper。另外一种用法是用它来将用户数据复制到多个数据中心,例如Google Megastore以及Google Spanner。

2PC协议最大的缺陷在于无法处理协调者宕机问题。如果协调者宕机,那么,2PC协议中的每个参与者可能都不知道事务应该提交还是回滚,整个协议被阻塞,执行过程中申请的资源都无法释放。因此,常见的做法是将2PC和Paxos协议结合起来,通过2PC保证多个数据分片上的操作的原子性,通过Paxos协议实现同一个数据分片的多个副本之间的一致性。另外,通过Paxos协议解决2PC协议中协调者宕机问题。当2PC协议中的协调者出现故障时,通过Paxos协议选举出新的协调者

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top