国内服务器与海外服务器用1个数据库,怎样可以访问的快?

怎样根据客户端用户的ip,访问最近的服务器进行交互。

例如:a服务器,放在北京;b服务器,放在美国。

数据库:sevice

用户1的ip是亚洲的,自动选择a服务器,交互。
用户2的ip是美洲的,自动选择b服务器,交互。

那么这个数据库,service数据库如何进行共享呢?

北京的服务器-放数据库服务器,那美国的服务器,远程读写北京的数据库服务器,那不是会很慢?
如果数据库服务器放美国,北京的服务器远程读写,也会很慢。

如何能做到不慢的。主要是这个数据库服务器,放北京也不是,放美国也不是。

阅读 1.4k
1 个回答

光速 3亿米/s
中美之间距离:
图片.png

取 9700km

计算可知:

In [4]: (9700*1000)/(10**8)*1000
Out[4]: 97.0

中美之间通讯一下,光走一趟就需要至少 200ms,算上一堆路由器的转发、编解码之类的,延迟必定是 200ms+

64 bytes from xxx.xxx.xxx.xxx: icmp_seq=0 ttl=54 time=333.385 ms
64 bytes from xxx.xxx.xxx.xxx: icmp_seq=1 ttl=54 time=352.774 ms
64 bytes from xxx.xxx.xxx.xxx: icmp_seq=2 ttl=54 time=251.931 ms
64 bytes from xxx.xxx.xxx.xxx: icmp_seq=3 ttl=54 time=250.707 ms
64 bytes from xxx.xxx.xxx.xxx: icmp_seq=4 ttl=54 time=307.809 ms
64 bytes from xxx.xxx.xxx.xxx: icmp_seq=5 ttl=54 time=252.609 ms
Request timeout for icmp_seq 6
64 bytes from xxx.xxx.xxx.xxx: icmp_seq=7 ttl=54 time=253.046 ms
64 bytes from xxx.xxx.xxx.xxx: icmp_seq=8 ttl=54 time=252.394 ms
64 bytes from xxx.xxx.xxx.xxx: icmp_seq=9 ttl=54 time=251.340 ms
64 bytes from xxx.xxx.xxx.xxx: icmp_seq=10 ttl=54 time=251.872 ms
Request timeout for icmp_seq 11
64 bytes from xxx.xxx.xxx.xxx: icmp_seq=12 ttl=54 time=253.581 ms
Request timeout for icmp_seq 13
64 bytes from xxx.xxx.xxx.xxx: icmp_seq=14 ttl=54 time=251.510 ms
^C
--- xxx.xxx.xxx.xxx ping statistics ---
16 packets transmitted, 12 packets received, 25.0% packet loss
round-trip min/avg/max/stddev = 250.707/271.913/352.774/35.522 ms

随便找个美国的机器 ping 一下,平均延迟在 271.913 ms


回到你的问题,为什么脑子不能不能转一下弯?凭什么只能有一台数据库?

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题