V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Dic4000
V2EX  ›  .NET

Memcache 能实现故障恢复的功能吗?

  •  
  •   Dic4000 · 2016-12-13 21:42:06 +08:00 · 3773 次点击
    这是一个创建于 2884 天前的主题,其中的信息可能已经有所发展或是发生改变。

      想请教下 Memcache 能实现故障恢复的功能吗?比如我把 Memcache 部署到两台服务器上,一台宕机后,客户端可以从另一台服务器上获取 x 需要的缓存数据。

      如果 Memcache 本身没有这个功能,那么有什么方案(插件或机制)可以实现这种需求吗?能谈下思路吗?

      我的开发环境是 .NET 。

    8 条回复    2016-12-14 18:20:06 +08:00
    lusyoe
        1
    lusyoe  
       2016-12-13 21:45:30 +08:00
    zookeeper 可以了解一下
    zzn
        2
    zzn  
       2016-12-13 21:49:39 +08:00
    配成主从?
    9hills
        3
    9hills  
       2016-12-13 22:26:11 +08:00   ❤️ 1
    1. Memcache 本身是不支持 HA 的,需要外部的第三方工具,可以 Google 搜索 memcache HA 来看,方法不外乎主从 /VIP 等
    2. 在绝大多数场景下,建议使用 Redis 替换 Memcache ,第一是 memcache 能做的, redis 也能做,做的也不差。第二是 Redis 的本身功能和第三方支持更加丰富。

    比如 Redis 3.0 g 官方支持 cluster ,可以 auto failover ,欢迎踩坑,^_^
    mckelvin
        4
    mckelvin  
       2016-12-14 00:06:05 +08:00 via iPhone   ❤️ 1
    这个东西 memcached 本身不支持。如果是 Smart Client (这个 failover 逻辑在客户端做),可以看看 https://github.com/douban/libmc/blob/master/src/HashkitKetama.cpp 实现的 failover 机制;否则可以看看 https://github.com/facebook/mcrouter 是怎么在 Proxy 上做的。

    如果你只想快速用上这个功能,那就搭个 mcrouter 然后客户端连 mcrouter, mcrouter 再去连两台 memcached server.
    dangyuluo
        5
    dangyuluo  
       2016-12-14 00:12:32 +08:00
    我觉得 Memcached 应该只做为缓存,也就是说即使所有 Memcached 节点都失效,程序应仍然具有从后台数据库中直接读取数据的能力。
    ryd994
        6
    ryd994  
       2016-12-14 07:21:43 +08:00 via Android   ❤️ 1
    其实嘛用 haproxy 做 TCP failover 就行
    反正缓存这个本来就是不保证可用性的
    缺点是主服挂了后会有一大波请求打在从服和数据库上
    可以考虑从服异步拉
    douyang
        7
    douyang  
       2016-12-14 09:25:23 +08:00
    billowqiu
        8
    billowqiu  
       2016-12-14 18:20:06 +08:00
    @douyang 这个比较轻量级,可惜已经不维护了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1069 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 19:43 · PVG 03:43 · LAX 11:43 · JFK 14:43
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.