这篇文章继续自第 1 部分,主要介绍了满足主动 - 主动应用需求的三种数据库架构:
- 分布式事务与两阶段提交:通过两阶段提交协议保证所有节点同时接收更新或事务失败并回滚,牺牲了性能,将查询延迟从毫秒级推至多秒级,大多数应用难以接受。
- 多主数据库:允许在多个可能的集群节点中更新记录,表面上是实现主动 - 主动架构的理想平台,但在数据一致性方面存在严重限制,可能导致同一记录的不同版本,需要进行冲突解决,且不同数据中心的读取可能看到不同且冲突的值,适用于非关键数据的捕获。
- 分区(分片)数据库:将数据库划分为分片,每个分片由一组服务器组成,每个分片维护其数据分区的独占控制,通过主从复制实现高可用性,可用于实现主动 - 主动应用架构,性能较好且保证一致性,通过地理路由将用户/查询路由到管理数据的数据中心。
MongoDB 是分片数据库架构的一个例子,提供了细粒度的写耐久性和读一致性控制,适合多数据中心部署,具有快速故障转移、可重试写、因果一致性等特点,众多组织使用 MongoDB 实现主动 - 主动应用架构,如 Ebay、YouGov、Ogilvy and Maher 等。总之,分片数据库为主动 - 主动应用的复制、性能、一致性和本地读写需求提供了最佳支持,MongoDB 因其分布式架构等特点尤其适合多数据中心部署。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。