memcached 在 aws 环境中,最佳实践?

memcached in a aws environment, best practice?

我们正在使用 memcache php 客户端在我们的 php 应用程序中实施 memcached。我们托管在 AWS 环境中,目前使用 7 台前端服务器来访问一个数据库。 当然,我们希望在所有服务器之间共享缓存。 我们应该在所有前端服务器中安装 memcached 并将它们添加到 memcached 池中 (callind addserver(xx.xx.xxx.xx)) 还是我们应该有专用机器作为 "memcached servers"?

我会选择运行 memcahced 引擎的 ElastiCache 实例(如果您想坚持使用 memcahced)。

我们已经在生产中使用了这个设置,它比许多单独的安装更容易维护。另外,您不必处理不一致问题。

您应该使用 Memcached 引擎和专用 nodes/servers 形成集群。ElastiCache 集群。
请注意,在 Memcached 中,节点之间并不知道彼此,但 Memcached Client 处理集群中的数据分布和负载平衡。因此,您的前端服务器将固有地 共享 Memcached 集群,而不用担心当前哪个节点正在保存数据。

这里要做的重要事情是在应用程序不需要的 AWS 部署中利用 ElastiCache 提供的 Auto-Discovery 功能手动连接到各个缓存节点;相反,您的应用程序连接到 配置端点 。 Application/front 终端服务器不需要知道集群中的节点数量,可以根据应用程序的吞吐量和负载添加或删除任意数量的节点。
有关自动发现功能的更多详细信息,请参见 here

它确实帮助了我们的生产部署,我们将 Memcached 集群从 2 个节点无缝地横向扩展到 16 个节点,而无需重新启动任何应用程序服务器。