我目前支持的系统位于中国的数据中心内,但由于防火墙,在中国以外的地方性能很差。我们正在 AWS 中建立数据中心,需要复制数据。我们的应用程序是为旅行者设计的,因此用户可以在几小时内轻松访问中国境内和境外一次的系统。要求:
- 近实时(但非实时)数据一致性
- 处理分区的能力,其中网络可能一次关闭几分钟
- 处理高延迟的能力,例如 300-500ms
- 处理失败请求的能力,其中一定比例的请求将挂起或被丢弃
- 免费或几乎免费
- 能够进行相对灵活的查询(例如按不同字段排序,部分关键字搜索,如 LIKE 子句等)
我们目前在 Cassandra 上,它将处理除此列表中的最后一项之外的所有内容。我们的很多数据并不适合 Cassandra 的格式,而是在我们完全理解 Cassandra 的数据模型之前就以这种方式构建的。所以为了支持最后一个需求,我们有两个想法:
- 在每个数据中心添加 MySQL 服务器,使用某种排队机制与 Cassandra 数据同步,数据消费者只对这些服务器进行只读查询。
- 将数据迁移到 MySQL 或 PostGres,跨数据中心搭建 Multi-Master 异步集群。
我有两个问题:
- 对于那些有跨低质量 WAN 设置多主复制经验的人,以下哪种方法更好?如果两者都不是,你是如何解决你的问题的?
- MySQL、PostGres、MariaDB 或任何其他免费数据库或 3rd 方扩展是否能很好地支持这种情况?