|
Spanner是一个可扩展的、全球分布式的数据库,是由谷歌公司设计、开发和部署的。在最高抽象层面,Spanner就是一个数据库,把数据分片存储在许多Paxos状态机上,这些机器位于遍布全球的数据中心内。复制技术可以用来服务于全球可用性和地理局部性。客户端会自动在副本之间进行失败恢复。随着数据的变化和服务器的变化,Spanner会自动把数据进行重新分片,从而有效应对负载变化和处理失败。Spanner被设计成可以扩展到几百万个机器节点,跨越成百上千个数据中心,具备几万亿数据库行的规模。应用可以借助于Spanner来实现高可用性,通过在一个地区的内部和跨越不同的地区之间复制数据,保证即使面对大范围的自然灾害时数据依然可用。 作为一个全球分布式数据库,Spanner提供了很好的特性:第一,在数据的副本配置方面,应用可以在一个很细的粒度上进行动态控制。应用可以详细规定,哪些数据中心包含哪些数据,数据距离用户有多远(控制用户读取数据的延迟),不同数据副本之间距离有多远(控制写操作的延迟),以及需要维护多少个副本(控制可用性和读操作性能)。数据也可以被动态和透明地在数据中心之间进行移动,从而平衡不同数据中心内资源的使用。第二,Spanner提供了读和写操作的外部一致性,以及在一个时间戳下面的跨越数据库的全球一致性的读操作。这些特性使得Spanner可以支持一致的备份、一致的MapReduce执行和原子模式变更,所有都是在全球范围内实现,即使存在正在处理中的事务也可以。 一个Spanner部署称为一个Universe。Spanner被组织成许多个Zone的集合,每个Zone都大概像一个BigTable服务器的部署。Zone是管理部署的基本单元。Zone的集合也是数据可以被复制到的位置的集合。当新的数据中心加入服务,或者老的数据中心被关闭时,Zone可以被加入到一个运行的系统中,或者从中移除。Zone也是物理隔离的单元,在一个数据中心中,可能有一个或者多个Zone,例如,属于不同应用的数据可能必须被分区存储到同一个数据中心的不同服务器集合中。 【出处】林子雨.大数据导论.人民邮电出版社,2020年9月第1版.
|