分布式缓存 - 基本概念

Bob*_*r02 8 caching distributed-computing

我试图了解分布式缓存的基本概念及其用法.

首先,分布式缓存是一组机器,它们一起充当所有客户端的大缓存,还是客户端保留其本地缓存,一个协调器只是向所有客户端发送更新,说明如何同步其LOCAL副本?

其次,如果缓存是维护缓存数据的分布式机器集,为什么我们不直接向DB发送查询,而是通过网络将请求发送到缓存?我猜性能开销可能类似......

最后,分布式缓存的主要好处是什么,即为什么人们不坚持使用传统的本地缓存模型?

非常感谢您提供的所有答案/资源.

rya*_*234 5

我将使用Couchbase作为分布式缓存(http://www.couchbase.com/)的示例。

第一个问题:分布式缓存如何协调数据?

答:通常情况下,分布式缓存确实作为一个逻辑单元的机器上。因此,您可能有五台计算机都运行Couchbase,它们会为您处理数据完整性和冗余性。换句话说,如果一台计算机死了,您仍然可以从群集中获取数据。(但是,是的,如果发生故障,每个节点将有一个数据副本。)

某些群集计算机将在群集中的计算机前面有一个进程来路由请求,有时您使用多个连接字符串,客户端会将请求循环到群集。仅取决于技术。

第二个问题:既然高速缓存全部通过网络,为什么还要使用高速缓存?

答:相当多的分布式缓存技术仅存在于RAM /内存中。他们永远不必去磁盘查询,因此它们比典型的数据库要快。

此外,数据库通常还必须做一些工作才能将来自多个表的数据连接在一起,而高速缓存通常只是将数据存储在键/值中。这意味着缓存永远不需要实际处理任何事情。它只是进行廉价的直接查找。

第三个问题:为什么要在本地缓存上使用分布式缓存?

答:开始扩展时,您将需要分布式缓存。

首先,缓存可能会变得非常大,如果仅在内存中运行,它将与您的Web服务器(或其他)竞争资源。最好有一台专门用于缓存的机器。

其次,缓存的扩展方式与堆栈中的其他技术不同。每十个Web服务器节点可能只需要四个缓存节点。最好分开。

最后,您希望任何客户端都能够连接并获取最新数据。否则,如果用户从一个Web服务器反弹到Web场中的另一个服务器,则缓存的数据可能会大不相同。

  • 正确的。客户端(假设是 Web 服务器)不会在其内存中存储任何内容。“内存中”部分位于集群中的专用缓存机器上。你仍然需要付出代价才能进入网络。好消息是客户端 - 在这种情况下 - 不必与缓存竞争 RAM。如果可以做 Web 服务器的事情而不用担心将缓存的对象保存在内存中。 (2认同)