Redis 支持主从复制,哪我应该怎样实现双主复制呢? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
chinazz
V2EX    Redis

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

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

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

    必须要放弃什么东西,你可以放弃低延迟,只有 AB 同时 ack 才算写入成功。你也可以放弃强一致,改成基于原子钟的时序归并,达到最终一致。
    boyhailong
        11
    boyhailong  
       2019-04-09 15:20:26 +08:00
    为什么要这么做成两个双主这么麻烦 主从不就行了?
    没有背景的提问没任何意义
    halk
        12
    halk  
       2019-04-09 16:03:07 +08:00
    @chinazz 参考下这里,不知道是不是和你的需求一致
    https://redislabs.com/wp-content/uploads/2017/02/04-Yossi-Gottlieb-Redis-Labs.pdf
    Linken404
        13
    Linken404  
       2019-04-09 16:12:22 +08:00
    目前看是没有吧...
    除非能换 mysql,比如想办法把 AB 两区域的 redis 数据汇集到一个 mysql 里?
    最好还是能变通一下,不要强行给自己挖坑啊...
    j2gg0s
        14
    j2gg0s  
       2019-04-09 16:27:24 +08:00
    @chinazz MySQL 的异地多主有成熟可靠的方案,redis 当前没有,估计以后也不会有,RDB,AOF 和 Binlog 的特性差的还是比较原的;
    建议:1 数据源换成 MySQL,MySQL 多主,redis 做缓存 2 双主之间没有严重数据冲突的话,可以搞个 kafka 跨机房同步,但是估计这个以后会坑自己
    leviathan0992
        15
    leviathan0992  
       2019-04-09 16:31:33 +08:00
    @chinazz 双主的架构是为了双写吗? 还是处于别的什么原因
    misaka19000
        16
    misaka19000  
       2019-04-09 16:43:25 +08:00
    双主一致性太难保证了吧
    chinazz
        17
    chinazz  
    OP
       2019-04-09 16:57:32 +08:00
    @leviathan0992 双主架构是为了异地双写。
    chinazz
        18
    chinazz  
    OP
       2019-04-09 16:58:43 +08:00
    @misaka19000 所以想找一下有没有相关的案例之类的
    leviathan0992
        19
    leviathan0992  
       2019-04-09 16:59:04 +08:00
    @chinazz 操作同一个 key 必须要求保证一致性吗?
    chinazz
        20
    chinazz  
    OP
       2019-04-09 17:06:34 +08:00
    @leviathan0992 对,数据必须保持一致性
    leviathan0992
        21
    leviathan0992  
       2019-04-09 17:12:21 +08:00
    @chinazz 那需求是两边操作同一个 key 根据时间戳来决定 apply 哪个操作吗?
    MilkShake
        22
    MilkShake  
       2019-04-09 18:02:52 +08:00
    我不知道你的具体场景是什么,可以写一个微服务来实现。你的程序连接微服务,微服务可以连接两个 redis,去读取或者写入数据。
    joesonw
        23
    joesonw  
       2019-04-09 18:18:37 +08:00 via iPhone
    tidis,兼容 redis 协议。是基于 TiKV 的,TiKV 可以 cross datacenter,意味着理论上 tidis 也可以,只是说延迟可能会高一些,这就见仁见智了。
    kaiser1992
        24
    kaiser1992  
       2019-04-09 20:02:56 +08:00 via Android
    感觉类似于分布式数据库中通过数据库链接、触发器和事务来实现
    leviathan0992
        25
    leviathan0992  
       2019-04-09 20:06:39 +08:00
    @chinazz 我的问题是双主两个实例*同时*操作一个 Key, 这种情况必须确保两边的 value 一致吗?
    chinazz
        26
    chinazz  
    OP
       2019-04-10 09:45:01 +08:00
    @leviathan0992 确保两边的 Value 一致
    chinazz
        27
    chinazz  
    OP
       2019-04-10 16:51:33 +08:00
    目前找到一个不错的解决方案。dynomite 还在调研中。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2228 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 27ms UTC 16:11 PVG 00:11 LAX 08:11 JFK 11:11
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86