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

Redis 支持主从复制,哪我应该怎样实现双主复制呢?

  •  
  •   chinazz · 99 天前 · 5676 次点击
    这是一个创建于 99 天前的主题,其中的信息可能已经有所发展或是发生改变。
    具体场景是 A B 两个 Redis 服务,可以实时的同步两个服务的信息。
    27 回复  |  直到 2019-04-10 16:51:33 +08:00
        1
    j2gg0s   99 天前
    基本没有好的实现思路。存储还是缓存?如果是存储且需要双主能不能用 MySQL,然后 redis 做缓存?如果是缓存,需要双主?
        2
    chinazz   99 天前
    @j2gg0s 是用来做存储的,国内国外两个服务,做一下同步
        3
    lhx2008   99 天前
    双主冲突问题比较复杂吧,可以对不同地区的用户,直接分成两部分。实在需要同步的数据,还是挂主从同步。
        4
    dengtongcai   99 天前 via iPhone
    codis 或者自带的无中心直连集群理论可行吗,生产没用过
        5
    halk   99 天前
    见过大厂的自定义实现,
    不知道 LZ 这样做的目的是什么?
        6
    cholerae   99 天前
    冲突咋处理,不用处理的话直接同步日志得了
        7
    chinazz   99 天前
    @halk 主要是解决跨区问题,中国地区写入的时候直接写入 A 服务,国外地区直接写入 B 服务。( A、B 服务是实时同步的,保持数据一致)有什么相关的链接或者博文吗?没有找到合适的解决方法。
        8
    ech0x   99 天前 via iPhone
    这个问题信息太少了,CAP 理论了解一下。
    一致性、可用性、分区容错性 看你怎么权衡了。
        9
    chinazz   99 天前
    @cholerae 需要实时的同步两个服务,没有找的特别合适的方法
        10
    9hills   99 天前 via iPhone
    如果要实现跨州实时强一致低延迟写入,理论上是不可能的。

    同时在 a 地域和 b 地域对 key 赋值,怎么解决冲突的问题?

    必须要放弃什么东西,你可以放弃低延迟,只有 AB 同时 ack 才算写入成功。你也可以放弃强一致,改成基于原子钟的时序归并,达到最终一致。
        11
    boyhailong   99 天前
    为什么要这么做成两个双主这么麻烦 主从不就行了?
    没有背景的提问没任何意义
        12
    halk   99 天前
    @chinazz 参考下这里,不知道是不是和你的需求一致
    https://redislabs.com/wp-content/uploads/2017/02/04-Yossi-Gottlieb-Redis-Labs.pdf
        13
    Linken404   99 天前
    目前看是没有吧...
    除非能换 mysql,比如想办法把 AB 两区域的 redis 数据汇集到一个 mysql 里?
    最好还是能变通一下,不要强行给自己挖坑啊...
        14
    j2gg0s   99 天前
    @chinazz MySQL 的异地多主有成熟可靠的方案,redis 当前没有,估计以后也不会有,RDB,AOF 和 Binlog 的特性差的还是比较原的;
    建议:1 数据源换成 MySQL,MySQL 多主,redis 做缓存 2 双主之间没有严重数据冲突的话,可以搞个 kafka 跨机房同步,但是估计这个以后会坑自己
        15
    leviathan0992   99 天前
    @chinazz 双主的架构是为了双写吗? 还是处于别的什么原因
        16
    misaka19000   99 天前
    双主一致性太难保证了吧
        17
    chinazz   99 天前
    @leviathan0992 双主架构是为了异地双写。
        18
    chinazz   99 天前
    @misaka19000 所以想找一下有没有相关的案例之类的
        19
    leviathan0992   99 天前
    @chinazz 操作同一个 key 必须要求保证一致性吗?
        20
    chinazz   99 天前
    @leviathan0992 对,数据必须保持一致性
        21
    leviathan0992   99 天前
    @chinazz 那需求是两边操作同一个 key 根据时间戳来决定 apply 哪个操作吗?
        22
    aaa5838769   99 天前
    我不知道你的具体场景是什么,可以写一个微服务来实现。你的程序连接微服务,微服务可以连接两个 redis,去读取或者写入数据。
        23
    joesonw   99 天前 via iPhone
    tidis,兼容 redis 协议。是基于 TiKV 的,TiKV 可以 cross datacenter,意味着理论上 tidis 也可以,只是说延迟可能会高一些,这就见仁见智了。
        24
    kaiser1992   99 天前 via Android
    感觉类似于分布式数据库中通过数据库链接、触发器和事务来实现
        25
    leviathan0992   99 天前
    @chinazz 我的问题是双主两个实例*同时*操作一个 Key, 这种情况必须确保两边的 value 一致吗?
        26
    chinazz   98 天前
    @leviathan0992 确保两边的 Value 一致
        27
    chinazz   98 天前
    目前找到一个不错的解决方案。dynomite 还在调研中。
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   3718 人在线   最高记录 5043   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 23ms · UTC 01:12 · PVG 09:12 · LAX 18:12 · JFK 21:12
    ♥ Do have faith in what you're doing.