MySQL数据库异地访问速度优化~

2012-08-13 22:19:34 +08:00
 xatest
不清楚这个问题是否适合发在Velocity这个节点,本意是想对数据库服务的访问速度优化。
我有一个服务,对中国和美国的用户都提供服务,其中美国是主要市场。分别在一台国内的VPS和AWS美国东区节点的EC2上部署相同的服务。之前是没有数据库的服务,最近增加了MySQL数据库设计,需要支持用户在两地都可以快速地访问服务(读写数据)。请教一下要怎么做才能保证两地都可以快速访问?

先说下我目前想到的几个方案,抛砖引玉:
1. MySQL在两地都部署,互为主备,进行热备,保持数据一致。好处是两边用户都能很快访问到数据,缺点是这之间的数据同步感觉不可靠,速度也慢,一致性很容易出问题。
2. 只在AWS美国东部节点部署数据库,中国服务器与美国服务器之间加一台代理(保证传输速度很快),中国的数据操作通过代理透传(就像翻墙)到美国服务器。优点是一致性好解决,缺点是中国用户的访问速度有一点影响。
3203 次点击
所在节点    Velocity
32 条回复
xatest
2012-08-14 23:00:52 +08:00
@zbgzao 目前需求是实时性要求不高,比如访问中国节点写了一些数据,几分钟后能在美国节点读到,就足够了。
@kingwkb 我们也会在近期实施,到时候我会把后续情况分享给大家。
@coagent 目前看来先用反向代理比较合适,一步步迭代。谢谢。
@eric_q @ElmerZhang 谢谢。
clino
2012-08-15 15:23:13 +08:00
上面 @livid 提到的"在一个地方部署 DB,然后在 DB 的上层实现 http 的 API,最终让美国和中国的用户访问这个 API,而不是直接访问数据库"
应该就是 openresty 的应用场合之一 http://wdicc.com/intro-openresty/
clino
2012-08-15 15:34:41 +08:00
"OpenResty、PHP-fpm与NodeJs操作MySQL的性能对比" http://cnbeta.com/articles/181315.htm
mikale
2012-08-17 02:11:08 +08:00
@clino 最大的问题是数据的不一致性.......
clino
2012-08-17 15:23:19 +08:00
@mikale 你是针对我说的吗? 如果是一个地方部署数据库的做法哪里会有不一致性的问题呢?
kingwkb
2012-08-17 16:00:51 +08:00
@clino DB上面部属一层API,如果不是有特殊的需求,这样真不前面直接用个代理

DB上面有加一层API,应该是大公司项目分的很细才能实施和带来好处的,如果是中小公司,这样真心不好。维护成本太高。
clino
2012-08-17 16:21:22 +08:00
@kingwkb 用 openresty 来把数据库包装成 http api 好处我想有几个:
-http 比较通用和简单
-nginx 本身因为是非阻塞的所以并发能力比较强
-"已经优化的高效数据库连接池,而一般工程师不用关注连接池的技巧,专心完成业务代码就好,不容易出错"
这样能做到"就象很高能的网关一样,将后端所有MySQL 服务器的能力都激发出来"

没用过,但是看着使用起来应该也不会很麻烦的,维护成本应该不会太高
mikale
2012-08-17 19:03:53 +08:00
@clino 网速问题,会造成两边数据不一致..这问题不是通过架构能解决的..
clino
2012-08-17 22:17:39 +08:00
@mikale 不太理解你的意思,不知道你说的不一致会有什么表现?
mikale
2012-08-17 23:56:36 +08:00
@clino 主从这东西,如果压力大,内网下延迟都可能达到半个小时...更别说这种网络..

"美国服务器ping中国服务器430ms;",光ping就延迟..太不理想了,就算压力不大,这种两份数据库的数据差异性,用户会明显感觉出来
mikale
2012-08-17 23:57:22 +08:00
@mikale s/光ping就延迟/ 光ping就延迟这样/g
clino
2012-08-18 12:16:55 +08:00
@mikale 汗...我说的部分从来没提到两份数据库啊,童鞋,你回错人了吧

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/45045

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX