chinazz
V2EX  ›  Redis

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

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

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

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