大家好,我喜欢 memcached,但到目前为止只在单机设置中将它用作本地缓存。我已经广泛阅读了关于 memcached 的分布式特性以及客户端如何确定要写入和读取的 memcached 服务器列表中的哪个。根据我的理解,通过选择确定性散列算法,我们可以确保数据始终写入正确的服务器并从正确的服务器读取,无论请求来自何处。
所以,我的问题是,考虑以下情况:
服务器A在纽约,服务器B在洛杉矶。两者都是彼此的镜子。两者都运行带有复制功能的 mysql 数据库。在只读的情况下并不重要,但可以说 A 是主设备,B 是从设备。两者都在运行 memcached 并且他们的客户端有一个 memcached 服务器列表(在这种情况下是服务器 A 和 B)。
某条数据,比如博客文章的正文,从服务器 A 上的数据库中读取,并因此存储在 A 的 memcached 中。该国不同地区的不同用户访问服务器 B 并请求相同的博客文章。服务器 B 的 memcached 客户端检查并发现该数据确实已被缓存,因此它到达 OVER THE NETWORK 以从服务器 A 的 memcached 中获取该数据。
现在,首先,到目前为止我的理解是否正确?请指出我所做的任何错误或不正确的假设:)。
所以,我的问题是,这应该如何提高性能?在这种情况下,似乎更好的计划是让服务器 A 和服务器 B 都运行自己独立的 memcached 实例作为本地缓存(http://memcached.org/about 中的顶部数字),但这与分布式设计的整体思路。那么分布式有什么好处呢?从服务器 B 到服务器 A 的网络操作比服务器 B 从它自己的本地数据库读取要慢得多。
请帮我理解。我觉得关于 memcached 的工作原理,我从根本上缺少一些东西。
谢谢!钾
对您问题的简短回答是:不是。
分布式 memcached 在您的系统能够从缓存中检索有效答案的情况下有意义,而不是进行昂贵的查找/计算来获得正确的答案。
在 memcached 的情况下,在互联网上以 60-100 毫秒或更长的延迟进行交谈,实际上没有任何收获。很有可能您的系统查找/计算正确答案的速度比它在互联网中途的缓存中找到正确答案要快得多。
您需要 memcached 节点之间的千兆(或更快)网络才能获得任何性能优势。您的设置旨在实现故障转移和基于地理的性能。如果您的服务器 A 和 B 确实是 A1、A2 和 B1,那么 B2 memcached 可能适合您。
| 归档时间: |
|
| 查看次数: |
2148 次 |
| 最近记录: |