编辑: 黎文定 | 2019-07-14 |
1、2 个数据中心足以保证可靠性. 厦门大学计算机科学系研究生课程 《大数据技术基础》 主讲教师:林子雨 http://www.cs.xmu.edu.cn/linziyu
7 /
16 作为一个全球化分布式系统,Spanner 提供一些有趣的特性,主要包括: (1)应用可以细粒度地指定数据分布的位置,精确地指定数据离用户有多远,可以有 效地控制读延迟(读延迟取决于最近的拷贝);
可以指定数据拷贝之间有多远,可以控制写的 延迟(写延迟取决于最远的拷贝);
还可以指定数据的复制份数,控制数据的可靠性和读性能 (多写几份数据,可以抵御更大的事故);
(2)Spanner 还有两个一般分布式数据库不具备的特性:读写的外部一致性和基于时间 戳的全局的读一致.这两个特性可以让 Spanner 支持一致的备份,一致的 MapReduce,还有 原子的 Schema 修改. 这些特性都得益于 Spanner 有一个全球时间同步机制, 可以在数据提交的时候给出一个 时间戳.因为时间是序列化的,所以才有外部一致性.这个很容易理解,如果有两个提交, 一个在时间 T1,一个在时间 T2,那么,更晚的时间戳那个提交是正确的. 这个全球时间同步机制是由一个具有 GPS 和原子钟的 TrueTime API 提供的.这个 TrueTime API 能够将不同数据中心的时间偏差缩短到 10ms 以内. 这个 API 可以提供一个精 确的时间, 同时给出误差范围. Google 已经有了一个 TrueTime API 的实现. 这个 TrueTimeAPI 非常有意义,如果能单独开源实现这部分机制的话,很多数据库(如MongoDB)都可以从 中受益. 12.4 体系结构 Spanner 由于是全球化的,所以有两个其它分布式数据库所没有的概念: ? Universe:一个 Spanner 部署实例,称为一个 Universe.目前全世界有
3 个,一个 开发,一个测试,一个线上.因为一个 Universe 就能覆盖全球,因此,不需要多 个. ? Zone:每个 Zone 相当于一个数据中心,一个 Zone 内部物理上必须在一起.而一 个数据中心可能有多个 Zone.可以在运行时添加或移除 Zone.一个 Zone 可以理 解为一个 BigTable 部署实例. 厦门大学计算机科学系研究生课程 《大数据技术基础》 主讲教师:林子雨 http://www.cs.xmu.edu.cn/linziyu
8 /
16 图12-2 Spanner 体系结构 图12-2 显示了在一个 Spanner 的universe 中的服务器架构.一个 zone 包括一个 zonemaster 和一百至几千个 spanserver.Zonemaster 把数据分配给 spanserver,spanserver 把 数据提供给客户端.客户端使用每个 zone 上面的 location proxy 来定位可以为自己提供数据 的spanserver.Universe master 和placement driver,当前都只有一个.Universe master 主要 是一个控制台,它显示了关于 zone 的各种状态信息,可以用于相互之间的调试.Placement driver 会周期性地与 spanserver 进行交互,来发现那些需要被转移的数据,或者是为了满足 新的副本约束条件,或者是为了进行负载均衡. 简单总结一下,一个 Spanner 主要包括以下组件: ? Universemaster:监控一个 universe 里zone 级别的状态信息;
? Placement driver:提供跨区数据迁移时的管理功能;
? Zonemaster:相当于 BigTable 的Master,管理 Spanserver 上的数据;
? Location proxy:存储数据的 Location 信息,客户端要先访问它才能知道数据在哪 个Spanserver 上;
? Spanserver:相当........