我建立一个应用程序与多个服务器的参与。(4台服务器那里的每一个都有一个数据库和一个网络服务器。1个主数据库和3奴隶+一个负载平衡)

有几个办法启用缓存。现在这是相当简单和效率不高。所有的高速缓存在一个NFS分区之间共享所有服务器。NFS的瓶颈所在的建筑。

  1. 我有几个想法的实施 缓存。它可以做一个服务器 一级(地方文件系统)的但是 问题是无效的缓存 文件的内容时已 更新在所有服务器:它可以 通过具有一个小型高速缓存 生(效率不高,因为 高速缓存,将刷新快它 应该是大部分时间)
  2. 它也可以通过一个消息 系统(。例如)在每 服务器进行通信。服务器负责的 失效的高速缓冲发送一个 请求的所有其他要让他们 知道,缓存 无效。延迟可能是 更(需要更多的时间用于每个人 要知道,缓存 无效)但是我的申请 不需要原子高速缓存 无效。
  3. 第三种方法是使用一个云 系统以储存的超高速缓冲存储器(图像 CouchDB)但是我没有想法的 业绩对于这一个。是它 快于使用一个,SQL数据库?

我计划使用Zend框架,但我不认为这是真的相关(除了一些软件包可能存在其他架构来处理。,CouchDB)

要求:持续的高速缓冲存储器(如果服务器重新启动,缓存应该不会失去避免把服务器的同时,重新创建的高速缓存)

有帮助吗?

解决方案 2

我想我发现了一个较好的解决方案。

我用Zend_Cache储存在本地的每一个缓存文件。我已经创建了一个小小守护进程的基础上nanoserver其管理的缓存文件在当地。当个服务器创建/修改/删除的缓存文件在当地,它送同样的行动对所有服务器的通过程序,其做同样的行动。

这意味着我有地方的缓存文件和远程操作在同一时间。也许不完美,但是应该的工作。CouchDB太缓慢和NFS是不够可靠。

其他提示

http://www.danga.com/memcached/

缓存涵盖的大多数要求你放出消息基于阅读,犯和失效。高可用性和高速度快,但是很少的原子可靠性(牺牲了性能)。

(此外,缓存的权力的事情,如YouTube,Facebook,所以我认为这可以相当确定,组织与的时间、金钱和人才严重的是评估许多分布式缓存的选择解决与缓存!)

编辑(在应对意见) 这个想法的高速缓存是因为它是相对暂时性相比,你的后备存储。如果你需要持续的高速缓存数据的长期,我建议在(a)将数据层,以获得更多的性能,或(b)添加一中间层的数据库服务器存储的大量数据在直键值对表,或一些密切相近似的。

在辩护方的缓存作为一个高速缓冲储存,如果你想高效能低的影响的一个服务器重新启动,为什么不仅有4缓存服务器?或8?每一重新启动'将会有相应的影响较小,数据库服务器。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top