情况是这样的:
有一个需求,需要在 A 、B 两地同时提供服务( HTTP ),但是两地之间网络质量很差,延迟很高、并且经常有断线的情况,断线时长可能长达几小时,偶尔甚至会达到几天。如果只部署一个服务的话,则另一个地方的用户就会访问困难。
由于对两地数据实时性要求不高,所以考虑在 A 、B 两地分别部署一个 HTTP 服务端+一个数据库,两地的数据库做定期双向同步。
不考虑高可用,就两地分别单机部署就行,不需要考虑一边服务挂了切换到另一边做备用服务。(最好是服务挂了就挂了,立马人工去重启)
由于网络质量差,所以最好是增量同步、传输数据量越小越好。同步最好可以是自动的,或者可以用脚本自动跑的,网络原因同步失败,可以下次再重试。
对数据库的操作比较多的是插入,修改多以 inc 之类的操作为主,但也有少量的直接赋值更新的操作。数据删除采用的是标记删除字段的形式进行假删除,所以可以理解为不存在数据删除操作。
目前使用的是 MongoDB 数据库,但是也可以考虑切换为其他能满足需求的数据库。
请问,有什么现有的技术可以实现这样的一个服务形式吗?或者说这属于是什么同步方式、同步技术?
简单看了下 MongoDB 的“双活模式”,貌似不太能满足定时同步的需求?
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.