对于那些在全世界各地都有访问速度要求的网站, 他们是怎么做的, 比如Gmail.
或许有些网站用户量还没有那么大, 但是已经开始在全世界都有用户. 对于网站速度的抱怨就此开始.
我们的经验是, 数据库通常需要和web/application服务器在一起(内网). 如果所有的数据都被放置在一个机房, 那么如何保证远距离的读取速度.
如果不是, 那么是利用一些缓存机制, 还是需要设计特殊的数据库结构, 或者批量的数据处理?
对于静态内容, 我们可以CDN, 缓存. 对于动态的内容, 有时候缓存会导致更多的麻烦.
在这里向大家请教了 :)
其实这个问题可以换一个角度看,其实不同国家之间的延迟没那么大的,对于用户而言,你的响应时间是20ms还是200ms没那么大差别。而干线网络只要能保证带宽,延时和吞吐还是稳定的,所以在大部分情况下,CDN relay一下也就可以解决问题了,相当于在终端把请求汇聚一下。如果这种链路都不能保证,就只能部署多份服务了,而其实对于搜索一类的服务,数据可以复制多份,随便扩展都是可以的。
最大的问题是带数据库的服务,这里面没啥特别好的办法,一种做法是存多份,多份数据之间保持最终一致性,另一种做法就是使用比较好的cache机制