【问题标题】:Is it possible to run multiple instances of the same application with a single memcached server?是否可以使用单个 memcached 服务器运行同一应用程序的多个实例?
【发布时间】:2018-05-16 10:49:50
【问题描述】:

我在 dockerized 应用程序和 Memcached 上遇到问题,要存储一些值,显然,当启动一个运行 Spymemcached 客户端的新 Docker 实例时,缓存中存储的所有数据都是无效的,所以如果我以前在节点 1 的缓存上存储了一些值,然后我启动节点 2,这些值从 Memcached 服务器中清除,最后如果在节点 1 上再次存储相同的值并在节点 2 上查询它,它们将在两个节点之外共享,而无需清理数据。这是预期的行为吗?我应该为每个客户端实例使用 Memcached 服务器吗?或者是否可以将同一个 Memcached 服务器实例共享给多个客户端而不会丢失存储的数据?

【问题讨论】:

    标签: java docker memcached spymemcached


    【解决方案1】:

    您可以与多个客户端共享同一个 memcached 实例。

    您只需为 Node1、Node2 和 memcached 创建不同的 docker 容器。

    在同一个容器网络上创建它们。 一个样本docker-compose.yml

    version: '2'
    services:
       node1:
         image: <your-image>:latest
         network:
           main:
              aliases:
                 - node1
      node2:
         image: <your-image>:latest
         network:
           main:
              aliases:
                 - node2
      memcached:
         image: memcached:latest
         network:
           main:
              aliases:
                 - memcached
    network:
       main:
    

    【讨论】:

    • 问题不在于容器网络,它工作正常,问题是当我启动一个新节点时,缓存中的所有数据都被清除了
    • 我想我的回答不是很清楚,这不是关于 Docker 中的持久存储,我正在启动的新容器不是 Memcached 映像,它是一个应用程序节点映像,所以我的猜测是 Spymemcached第一次开始与 Memcached 建立连接。
    【解决方案2】:

    我将 Memcached 客户端库从 Spotify 迁移到 Folsom 并解决了我的问题。对 Spymencached 的好奇,我提到的问题只有在客户端在 Windows 机器上运行时才会出现。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-08-17
      • 2014-08-11
      • 1970-01-01
      • 2021-09-22
      • 1970-01-01
      • 2013-08-20
      • 1970-01-01
      相关资源
      最近更新 更多