【问题标题】:Does memcached share across servers in google app engine?memcached 是否在谷歌应用引擎中的服务器之间共享?
【发布时间】:2010-11-18 03:34:36
【问题描述】:

在 memcached 网站上,它说 memcached 是分布式内存缓存。这意味着它可以跨多个服务器运行并保持某种一致性。当我在 google app engine 中发出请求时,同一个实体组中的请求很有可能会被同一个服务器处理。

我的问题是,假设有两台服务器为我的请求提供服务,这两个服务器的 memcached 视图是否相同?也就是说,我在一个服务器中放入 memcached 的内容是否反映在另一台服务器的 memcached 实例中,或者这两个完全独立的 memcached 实例(每个服务器一个)?

具体来说,我希望每台服务器实际运行自己的 memcached 实例(在其他 memcached 实例中没有复制)。如果这两个 memcached 实例在对它们所做的更改方面相互更新,有没有办法禁用它?

如果这些问题很愚蠢,我深表歉意,因为我刚开始阅读它,但这些是我遇到的最初问题。谢谢。

【问题讨论】:

    标签: google-app-engine memcached


    【解决方案1】:

    App Engine 并没有真正使用 memcached,而是一个与 API 兼容的重新实现(我相信主要是由 same guy 完成的——在他的“20% 时间”中;-)。

    缓存的值可能随时消失(通过显式过期、一台服务器崩溃或由于内存不足,在这种情况下它们会以最近最少使用的顺序被逐出,等等),但如果它们没有当被不同的服务器查看时,它们是一致的。

    【讨论】:

      【解决方案2】:

      选择的 memcached 服务器不依赖于您正在使用的实体组(实体组是来自数据存储区的概念,是不同的野兽)。

      每台服务器都运行自己的 memcached 实例,并且每台服务器都会存储一定百分比的您存储在 memcache 中的对象。它的工作方式是,当您使用 memcached API 在给定键下存储某些内容时,会选择一个 memcached 服务器(基于键)。

      memcached 实例之间没有复制,如果其中一个盒子出现故障,您将丢失 1/N 的 memcached 数据(N 是在 AppEngine 中运行的 memcached 实例的数量)。

      【讨论】:

        【解决方案3】:

        通常,memcached 不会在服务器之间共享数据。应用服务器对密钥进行哈希处理以选择一个 memcached 服务器,然后与该服务器通信以获取或设置数据。

        【讨论】:

          【解决方案4】:

          据我所知,整个应用程序只有一个 Memcache 实例,您的代码可能有许多实例运行每个实例,每个实例都使用它们的内存,以及世界各地的许多数据存储,但是一次只有一个 Memcache 服务器,请记住,这很容易出现故障服务,甚至没有 SLA。

          【讨论】:

            猜你喜欢
            • 2011-11-03
            • 2017-07-14
            • 1970-01-01
            • 2012-12-17
            • 1970-01-01
            • 1970-01-01
            • 2013-02-07
            • 2015-01-07
            • 2011-01-30
            相关资源
            最近更新 更多