1
xatest OP 补充一下现在的几个延时数据。
我ping中国服务器是150ms; 我ping美国服务器是400ms; 美国服务器ping中国服务器430ms; 美国服务器ping youtube.com 3ms。 我希望是有种方案能把访问时延控制在200ms以内。 |
2
eric_q 2012-08-13 22:29:00 +08:00
你 ping 中国服务器都能 150ms? 服务器是托管在哪里的...
|
3
KiseXu 2012-08-13 22:48:40 +08:00
我ping东京的vps才一、二百延迟
|
4
kingwkb 2012-08-13 23:04:50 +08:00 1
和我们情况差不多,我们把网站及数据库都放ec2,在国内只放个squid或者nginx代理,国内访客解析到国内的代理上面,国外访客直接访问ec2
|
7
HowardMei 2012-08-13 23:48:54 +08:00 2
我早先问过一次同样问题: /t/43356 好久么人解答,研究了一圈,还是觉得这个网络延迟问题很难搞,用Memcached分布式缓存是一条路子,原来感觉好复杂的样子。不过最新发布的MySQL 5.6.6已内置对Memcached支持,据说解决了缓存和数据库不一致的问题,值得试下。
|
9
Livid MOD 可以考虑在一个地方部署 DB,然后在 DB 的上层实现 http 的 API,最终让美国和中国的用户访问这个 API,而不是直接访问数据库。
|
10
Livid MOD |
11
ElmerZhang 2012-08-14 07:53:49 +08:00
|
12
HowardMei 2012-08-14 11:34:28 +08:00 2
@ElmerZhang 传统Memcached缓存方式对纯动态网站确实没啥改善,可是最新Feature支持直接访问InnoDB,把Mysql当NoSQL用,等于@Livid所说的API,现在没有Benchmarking数据,但理论上,简单K-V省去SQL查询,复杂关系查询可并行SQL,缓存与数据库内生一致,都会大幅提高性能。
http://dev.mysql.com/tech-resources/articles/nosql-to-mysql-with-memcached.html 用反向代理缓存页面,让APP和DB服务器处于相同Datacenter,只是避开问题并没有解决问题,我不清楚反代对动态网站性能有多少影响,但不觉得更有优势。 |
13
HowardMei 2012-08-14 11:54:38 +08:00
直接用Memcached Cluster,不用转成HTTP API,挺好的,就是1MB限制比较那个。
|
14
ElmerZhang 2012-08-14 11:57:26 +08:00
@HowardMei 楼主需要解决的是跨国的网络问题,根本不是数据库内部的数据一致性问题,如果网络没问题,完全可以两个 IDC 做双主。这和什么动态静态用什么数据库没一毛钱关系。
MySQL 5.6 的 Memcached 插件主要是把协议改为简单的 Memcached 协议,省去 SQL 分析优化等复杂步骤实现更高效的读写,跟缓存神马的关系不大。 |
15
xatest OP @kingwkb @ElmerZhang 国内代理有没有推荐?
|
16
zbgzao 2012-08-14 12:19:17 +08:00
这个问题主要还是国外访问国际网络常会抽风, 这才是最头疼的问题.
不知你们是什么样的一个场景, 如果实时性不高的话, 那是很好解决的. |
18
coagent 2012-08-14 13:11:12 +08:00 1
内容缓存上,Memcached 和反向代理都对性能有帮助。
HK 到美国的速度比较不错,国内到 HK 速度又很好,可以考虑 HK 和 USA 同步 |
19
eric_q 2012-08-14 13:24:03 +08:00 1
Linode Tokyo
或者……上海电信 |
20
ElmerZhang 2012-08-14 13:48:40 +08:00 1
|
21
xatest OP @zbgzao 目前需求是实时性要求不高,比如访问中国节点写了一些数据,几分钟后能在美国节点读到,就足够了。
@kingwkb 我们也会在近期实施,到时候我会把后续情况分享给大家。 @coagent 目前看来先用反向代理比较合适,一步步迭代。谢谢。 @eric_q @ElmerZhang 谢谢。 |
22
clino 2012-08-15 15:23:13 +08:00 2
上面 @livid 提到的"在一个地方部署 DB,然后在 DB 的上层实现 http 的 API,最终让美国和中国的用户访问这个 API,而不是直接访问数据库"
应该就是 openresty 的应用场合之一 http://wdicc.com/intro-openresty/ |
23
clino 2012-08-15 15:34:41 +08:00
"OpenResty、PHP-fpm与NodeJs操作MySQL的性能对比" http://cnbeta.com/articles/181315.htm
|
26
kingwkb 2012-08-17 16:00:51 +08:00
|
27
clino 2012-08-17 16:21:22 +08:00
@kingwkb 用 openresty 来把数据库包装成 http api 好处我想有几个:
-http 比较通用和简单 -nginx 本身因为是非阻塞的所以并发能力比较强 -"已经优化的高效数据库连接池,而一般工程师不用关注连接池的技巧,专心完成业务代码就好,不容易出错" 这样能做到"就象很高能的网关一样,将后端所有MySQL 服务器的能力都激发出来" 没用过,但是看着使用起来应该也不会很麻烦的,维护成本应该不会太高 |