spanner

Spanner是Google提供的跨区域/跨数据中心的关系型分布式数据库,在满足事务一致性的同时还具备极强的可扩展性,结合了传统关系数据库和NoSQL数据库的优点。

在 Spanner 论文中提到,2012 年大概已经有 300+ 的业务跑在 Megastore 上,在越来越多的业务在 BigTable 上造 ACID Transaction 实现的轮子后,Google 实在受不了了,开始造一个大轮子 Spanner,项目的野心巨大,和 Megastore 一样,ACID 事务 + 水平扩展 + SQL 支持。

Spanner 近乎完美的一个分布式存储,在 Google 内部也是的 BigTable 的互补,想做跨数据中心高可用和强一致和事务的话,用 Spanner,代价是可能牺牲一点延迟,但是并没有Megastore 牺牲那么多;想高性能(低延迟)的话,用 BigTable。

在 12 年底发布 Spanner 的论文后,社区也有开源的实现,比如目前比较成熟的 TiDB 和 CockroachDB。

Spanner与CAP

CAP理论指出,分布式系统最多只能满足一致性、可用性和分区容忍性中的两个,而不能同时满足三者。所以,常见的分布式系统都需要根据实际场景对这三者作相应的取舍,比如对一个大规模分布式系统来说,网络分区通常是不可避免的,所以要么牺牲一致性保证可用性(AP),要么牺牲可用性,保证一致性(CP)。

而Google Cloud Spanner同时满足了一致性和可用性(CA):

那Google是如何实现这么高的可用性的呢

Spanner实现

Paper

Cloud Spanner

近日,Google还宣布了杀手级服务Cloud Spanner,具备spanner论文里的各种优点:

参考文档

Comments

comments powered by Disqus