我有一个网站,目前托管在欧洲的一台服务器上。为了改善非欧洲用户的延迟,我想在美国和亚洲添加本地服务器。
保持静态文件同步没问题。我们每天只添加一次新内容,因此一个简单的 rsync cron 作业可以很好地保持文件更新。
我完全坚持的是如何在数据库端处理这个问题?我更喜欢保存所有用户信息的单个主数据库,这样如果本地服务器脱机,我们总是在主服务器中拥有用户数据(无论备份如何)。
到目前为止,我们考虑了 2 个选项:
支持异地复制的数据库
开箱即用支持异地复制的数据库。应该非常容易设置并且对于数据库写入应该具有非常低的延迟(即,无需等待主服务器上的“写入成功”消息)。
使用主数据库和本地数据库的编程方法
一个用户同时从一个区域访问,所以我们可以做一些连接到主数据库和本地数据库的东西。首次登录时,所有用户信息将从主数据库中提取并缓存在本地数据库中。从此用户生成的所有数据都可以存储在本地数据库中,并在后台同步回主数据库。可以工作,但如果某些东西不同步,似乎过于复杂且难以修复?
关于数据库的更多背景信息
- 我们的数据库进行大量读取和少量写入
- 数据库性能根本不是问题。所以我们只希望改善用户体验(降低延迟)
- 用户不会生成太多数据(一般 10kb,最大 200kb)
- 我们不是银行或证券交易所,如果一些用户数据在一分钟甚至几分钟后同步回主服务器,这不是什么大问题。
我们的问题
- 有没有描述这个特定问题的名称?(所以我可以更好地谷歌)
- 是否有数据库可以开箱即用地进行地理复制而不会造成延迟损失?(也许是沙发床?)
- 程序化方法是可行的,还是会是一个痛苦的世界?
我将非常感谢任何见解,或者可能是涵盖此类内容的文章的链接。我敢肯定还有更多的小型网站遇到了这个问题。