我有一个系统,其中有来自几个不同文件和服务器到 memcache 服务器的连接。
我希望保留一台服务器,但保留增加 memcache 服务器数量的选项(用于高流量时期)。
我的想法是告诉 memcache 有两个服务器,而两个 URL 将(通过 DNS)指向单个服务器。将来,如果我愿意,我可以添加服务器并更改 DNS,而无需在许多地方更改代码。
这是个好的做法吗?如果有两个服务器连接但都指向同一个服务器,是否会降低性能?
还有其他想法吗?如何在无需更改代码和部署的情况下实现 memcache 容量的即时扩展?
答案1
这取决于您使用的 memcached 客户端以及它如何确定跨多个服务器对密钥进行哈希处理。您不应期望通过指定两个服务器而不是一个服务器来提高性能,因为单个 memcached 服务器将提供比您的单个 Web 服务器所能处理的连接数更多的服务(很有可能)。事实上,让客户端尝试跨两个不同的服务器(实际上是相同的)对密钥进行哈希处理可能弊大于利。
如果您不想再次部署,那么我会将您的服务器列在服务器上作为配置选项引入的 ENVIRONMENT 变量中。例如,ENV['MEMCACHE_SERVERS'],只需在服务器端进行配置,而无需再次部署。
memcache 的优点在于它不是冗余或故障转移,它不是持久性存储。它甚至可能完全瘫痪,而你的网站将只是缓存命中率为 0%,但至少它仍在运行。