在哪里存储多租户用户指定的缓存?
Where to store multi-tenant user specified cache?
我正在 Symfony2 之上构建 SaaS 应用程序。
我们的系统很简单:一个节点平衡器、一些应用程序服务器和一些数据库服务器。
每个应用服务器都有完全相同的应用程序副本,只是参数不同。
- 客户端指定的缓存存放在哪里?
- 在哪里存储
app/cache
?为每个客户分开 app/cache/clientN
?
- HTTP缓存存放在哪里?在应用服务器或节点平衡器上?
如果每个客户端都有不同的域怎么办?
- 在哪里存储数据库query/result缓存?在内存中的数据库服务器上 (redis/riak/memcached)?
所有这些都可以由同一个分布式 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 不会被复制。为此需要自定义应用程序代码。
我正在 Symfony2 之上构建 SaaS 应用程序。 我们的系统很简单:一个节点平衡器、一些应用程序服务器和一些数据库服务器。
每个应用服务器都有完全相同的应用程序副本,只是参数不同。
- 客户端指定的缓存存放在哪里?
- 在哪里存储
app/cache
?为每个客户分开app/cache/clientN
? - HTTP缓存存放在哪里?在应用服务器或节点平衡器上? 如果每个客户端都有不同的域怎么办?
- 在哪里存储数据库query/result缓存?在内存中的数据库服务器上 (redis/riak/memcached)?
所有这些都可以由同一个分布式 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 不会被复制。为此需要自定义应用程序代码。