在哪里存储多租户用户指定的缓存?

Where to store multi-tenant user specified cache?

我正在 Symfony2 之上构建 SaaS 应用程序。 我们的系统很简单:一个节点平衡器、一些应用程序服务器和一些数据库服务器。

每个应用服务器都有完全相同的应用程序副本,只是参数不同。

所有这些都可以由同一个分布式 HA 缓存集群提供服务。有许多。 Redis/Hazelcast 是 HA 缓存的例子。您只需要处理缓存 grouping/naming.

Where to store client specified cache?

我不明白什么是客户端指定缓存。

Where to store app/cache? Separate for every client app/cache/clientN?

可以使用相同的缓存。确保缓存命名对于不同的实体是不同的。单独的缓存或相同的缓存是一个特定的问题。这取决于所需的分离程度。同样关于每个缓存的大小,它如何影响其他客户端等。这类似于您是否想要共享 table 或共享数据库或单独的数据库服务器用于多租户实施。

Where to store HTTP cache? On app servers or node balancer? What if every client has different domain?

静态内容可以缓存在节点平衡器上。 nginx 等负载均衡器支持此功能。也可以使用相同的缓存服务器。

Where to store database query/result cache? On DB server in memory (redis/riak/memcached)?

同样,可以使用相同的缓存集群。注意 memcached 不会被复制。为此需要自定义应用程序代码。