1
j2gg0s 2019-04-09 12:40:56 +08:00
基本没有好的实现思路。存储还是缓存?如果是存储且需要双主能不能用 MySQL,然后 redis 做缓存?如果是缓存,需要双主?
|
3
lhx2008 2019-04-09 12:50:07 +08:00
双主冲突问题比较复杂吧,可以对不同地区的用户,直接分成两部分。实在需要同步的数据,还是挂主从同步。
|
4
dengtongcai 2019-04-09 12:56:06 +08:00 via iPhone
codis 或者自带的无中心直连集群理论可行吗,生产没用过
|
5
halk 2019-04-09 12:57:37 +08:00
见过大厂的自定义实现,
不知道 LZ 这样做的目的是什么? |
6
cholerae 2019-04-09 13:21:03 +08:00
冲突咋处理,不用处理的话直接同步日志得了
|
7
chinazz OP @halk 主要是解决跨区问题,中国地区写入的时候直接写入 A 服务,国外地区直接写入 B 服务。( A、B 服务是实时同步的,保持数据一致)有什么相关的链接或者博文吗?没有找到合适的解决方法。
|
8
ech0x 2019-04-09 14:04:32 +08:00 via iPhone
这个问题信息太少了,CAP 理论了解一下。
一致性、可用性、分区容错性 看你怎么权衡了。 |
10
9hills 2019-04-09 14:11:27 +08:00 via iPhone
如果要实现跨州实时强一致低延迟写入,理论上是不可能的。
同时在 a 地域和 b 地域对 key 赋值,怎么解决冲突的问题? 必须要放弃什么东西,你可以放弃低延迟,只有 AB 同时 ack 才算写入成功。你也可以放弃强一致,改成基于原子钟的时序归并,达到最终一致。 |
11
boyhailong 2019-04-09 15:20:26 +08:00
为什么要这么做成两个双主这么麻烦 主从不就行了?
没有背景的提问没任何意义 |
12
halk 2019-04-09 16:03:07 +08:00
|
13
Linken404 2019-04-09 16:12:22 +08:00
目前看是没有吧...
除非能换 mysql,比如想办法把 AB 两区域的 redis 数据汇集到一个 mysql 里? 最好还是能变通一下,不要强行给自己挖坑啊... |
14
j2gg0s 2019-04-09 16:27:24 +08:00
@chinazz MySQL 的异地多主有成熟可靠的方案,redis 当前没有,估计以后也不会有,RDB,AOF 和 Binlog 的特性差的还是比较原的;
建议:1 数据源换成 MySQL,MySQL 多主,redis 做缓存 2 双主之间没有严重数据冲突的话,可以搞个 kafka 跨机房同步,但是估计这个以后会坑自己 |
15
leviathan0992 2019-04-09 16:31:33 +08:00
@chinazz 双主的架构是为了双写吗? 还是处于别的什么原因
|
16
misaka19000 2019-04-09 16:43:25 +08:00
双主一致性太难保证了吧
|
17
chinazz OP @leviathan0992 双主架构是为了异地双写。
|
18
chinazz OP @misaka19000 所以想找一下有没有相关的案例之类的
|
19
leviathan0992 2019-04-09 16:59:04 +08:00
@chinazz 操作同一个 key 必须要求保证一致性吗?
|
20
chinazz OP @leviathan0992 对,数据必须保持一致性
|
21
leviathan0992 2019-04-09 17:12:21 +08:00
@chinazz 那需求是两边操作同一个 key 根据时间戳来决定 apply 哪个操作吗?
|
22
aaa5838769 2019-04-09 18:02:52 +08:00
我不知道你的具体场景是什么,可以写一个微服务来实现。你的程序连接微服务,微服务可以连接两个 redis,去读取或者写入数据。
|
23
joesonw 2019-04-09 18:18:37 +08:00 via iPhone
tidis,兼容 redis 协议。是基于 TiKV 的,TiKV 可以 cross datacenter,意味着理论上 tidis 也可以,只是说延迟可能会高一些,这就见仁见智了。
|
24
kaiser1992 2019-04-09 20:02:56 +08:00 via Android
感觉类似于分布式数据库中通过数据库链接、触发器和事务来实现
|
25
leviathan0992 2019-04-09 20:06:39 +08:00
@chinazz 我的问题是双主两个实例*同时*操作一个 Key, 这种情况必须确保两边的 value 一致吗?
|
26
chinazz OP @leviathan0992 确保两边的 Value 一致
|
27
chinazz OP 目前找到一个不错的解决方案。dynomite 还在调研中。
|