背景
我们有一个应用程序,它将写入托管在法兰克福数据中心的 postgres 数据库。该应用程序安装在我们遍布全球的 8 个站点中,包括中国、韩国、印度、德国、法国和墨西哥。
当从欧洲连接到法兰克福数据库时,响应时间很好。但是,当从中国北部连接时,响应时间非常慢。中国防火墙延迟了响应时间,此外,距离也是一个决定性因素。
我们决定在韩国为我们的亚洲网站建立第二个数据库。韩文和中文网站中的应用程序将为韩文数据库提供数据。它大大减少了延迟,效果非常好。
问题是由于不允许双向复制,因此无法在韩国数据库和德国数据库之间复制数据。
现在我们又回到了原点,因为我们不确定要采取什么步骤,因为我们只需要一个数据库,但我们希望有合适的响应时间。我们不想重写应用程序。
问题:
- 我们想要一个解决方案,可以托管数据库,并且对全球每个站点都有不错的响应时间。除了 RDS 之外,我们还可以考虑哪些其他解决方案?
- 如果我们继续使用 RDS,是否有一个数据中心可以为全世界管理适当的时间响应?
不确定这里是否适合提问。如果不是,请发表评论,我会删除该问题。
答案1
距离和中间盒的干扰都会增加延迟,这是无法避免的。
可能还有其他位置可以托管数据库,并且延迟可以接受。不过,延迟过高会影响响应时间。请继续测试。
我了解 PostgreSQL 存在多主复制解决方案。这不会出现在您当前的软件中,并且可能不会包含在云产品中。它比一个实例更复杂且风险更大,需要经验丰富的 DBA 才能实现。
或者将客户端移近一点。通过远程桌面或数据库本地的 VDI 进行托管。当查询的加载时间大大改善时,界面缓慢可能是可以容忍的。
最后,改变应用程序,尽管这很不吸引人。至少分析查询数量,以便了解网络时间。减少这些可能会有好处。更困难的是重新考虑设计,也许从副本读取查询,但写入到主节点。