我正在构建一个涉及多个服务器的应用程序。(4台服务器,每台都有一个数据库和一个网络服务器。1个主数据库和3个从属服务器+一个负载均衡器)
有几种方法可以启用缓存。现在它相当简单而且根本没有效率。所有缓存都在所有服务器之间的 NFS 分区共享上完成。NFS 是架构中的瓶颈。
- 我有几个想法实现缓存。它可以在服务器级别(本地文件系统)上完成,但问题是当所有服务器上的内容已更新时使缓存文件无效:它可以通过具有小的缓存寿命来完成(效率不高,因为缓存将尽快刷新,应该是大部分时间)
- 它也可以通过消息传递系统(例如 XMPP)来完成,其中每个服务器相互通信。负责缓存失效的服务器向所有其他服务器发送请求,让他们知道缓存已失效。延迟可能更大(每个人都需要更多时间才能知道缓存已失效),但我的应用程序不需要原子缓存失效。
- 第三种方法是使用云系统来存储缓存(如 CouchDB),但我不知道这个的性能。它比使用 SQL 数据库更快吗?
我计划使用 Zend Framework,但我认为它并不相关(除了其他框架中可能存在一些包来处理 XMPP、CouchDB)
要求:持久缓存(如果服务器重新启动,缓存不应丢失,以避免在重新创建缓存时关闭服务器)