情况是这样的:
有一个需求,需要在 A 、B 两地同时提供服务( HTTP ),但是两地之间网络质量很差,延迟很高、并且经常有断线的情况,断线时长可能长达几小时,偶尔甚至会达到几天。如果只部署一个服务的话,则另一个地方的用户就会访问困难。
由于对两地数据实时性要求不高,所以考虑在 A 、B 两地分别部署一个 HTTP 服务端+一个数据库,两地的数据库做定期双向同步。
不考虑高可用,就两地分别单机部署就行,不需要考虑一边服务挂了切换到另一边做备用服务。(最好是服务挂了就挂了,立马人工去重启)
由于网络质量差,所以最好是增量同步、传输数据量越小越好。同步最好可以是自动的,或者可以用脚本自动跑的,网络原因同步失败,可以下次再重试。
对数据库的操作比较多的是插入,修改多以 inc 之类的操作为主,但也有少量的直接赋值更新的操作。数据删除采用的是标记删除字段的形式进行假删除,所以可以理解为不存在数据删除操作。
目前使用的是 MongoDB 数据库,但是也可以考虑切换为其他能满足需求的数据库。
请问,有什么现有的技术可以实现这样的一个服务形式吗?或者说这属于是什么同步方式、同步技术?
简单看了下 MongoDB 的“双活模式”,貌似不太能满足定时同步的需求?
1
wmhack 2021-05-19 00:28:42 +08:00 via iPhone 1
mysql + canal
|
2
xupefei 2021-05-19 06:23:14 +08:00 via iPhone 1
|
3
xupefei 2021-05-19 06:24:55 +08:00 via iPhone
写个定时任务运行 stop slave 和 start slave 也可以。
|
4
beitayongguo 2021-05-19 09:52:39 +08:00
上云数据库是不是能解决这个问题啊,存储买阿里云之类的
|
5
maxbon 2021-05-19 14:24:38 +08:00 1
mysql 双主啊
|
6
evil0harry 2021-05-19 18:45:37 +08:00 1
1.mongo 主从
2.mongoshake 监听 |
7
lemonJ OP @beitayongguo 内网服务,两边通过 VPN 去同步的
|