两台机器,每台相同的 web-server+redis,每台都只读写自己机器上的 redis,两个 redis 可以怎么实现同步,有没有搞过的...

2019-09-29 09:36:51 +08:00
 aganlengzi
5131 次点击
所在节点    程序员
42 条回复
Tink
2019-09-29 11:07:30 +08:00
这个没办法吧
alamaya
2019-09-29 11:12:21 +08:00
搞不懂你这里执著写两台 redis 的意义是啥
xmh51
2019-09-29 11:14:23 +08:00
本地 cache 一致性问题很难搞。另外 redis 的性能已经非常高了 腾讯云实测 10wqps
df4VW
2019-09-29 11:15:29 +08:00
@aganlengzi 每台机子读同一台机子的 redis,你这架构就没法 scale。。
rrfeng
2019-09-29 11:16:58 +08:00
可以做双向同步,就是数据会有冲突,最简单的解决冲突就是覆写,后来的值为准,看你能不能接受了。

本地访问 Redis 带来的收益其实很小。除非你俩主机隔得很远
LeeSeoung
2019-09-29 11:18:21 +08:00
两个 redis 当成独立的,应用请求数据库后 写两份 redis,与其考虑 redis 同步,这样不是更方便?
arloor
2019-09-29 11:19:25 +08:00
做个伪 slave 去接受两个 redis 主节点的异步拷贝,然后发送给对方。你需要实现这个伪 slave,同时还是有一些问题难以解决的
1. 在网络波动下,redis 主会给伪 slave 发送全量同步的 rdb 文件,而 redis 没有暴露加载 rdb 的命令——当然可以通过修改 redis 源码然后重新编译安装实现暴露 rdb 命令

更多可以在 github 上搜 redis replicator 这个项目。

要深入理解,请看 redis 的 replicate.c 源码

说了很多,因为一句话根本说不清
lcy630409
2019-09-29 11:27:18 +08:00
你这样搞来搞去 两个服务器之间的网络连接始终存在,感觉没什么意义
或者如果有费用的话 推荐你 阿里云的高速通道,两台服务器专线连接
lisces
2019-09-29 12:19:42 +08:00
twemproxy 或者 codis 搞一个 proxy
dangyuluo
2019-09-29 12:22:16 +08:00
你可以了解一下分布式系统的 CAP 理论:

一个分布式系统最多只能同时满足一致性( Consistency )、可用性( Availability )和分区容错性( Partition tolerance )这三项中的两项。
xiaotianhu
2019-09-29 13:04:38 +08:00
简化一下这样干
每台机器 webserver+memcache 做本地缓存,sql/模板 /配置一类的
其他的走独立 redis
能解决你大部分场景了
aganlengzi
2019-09-29 13:06:52 +08:00
@rrfeng 嗯,是这样.
aganlengzi
2019-09-29 13:12:14 +08:00
@lcy630409 有点可能是理想化的,一是代码不用动(如果 redis 有这种的话),二是只访问本地缓存快些(实际有限),像 @rrfeng 说的
aganlengzi
2019-09-29 13:14:29 +08:00
@arloor 这样真的很麻烦了,/捂脸,这样可能真不如像 @LeeSeoung 说的这样干了
aganlengzi
2019-09-29 13:15:33 +08:00
@Vegetable 弄成一主一从,然后往主写,都读本地...差不多
aganlengzi
2019-09-29 13:18:29 +08:00
@alamaya 嗯,你是指像说的收益很小吧 @rrfeng
pubby
2019-09-29 13:25:27 +08:00
另一个思路是:根据客户来源固定分配到某一台服务器
jhsea3do
2019-09-29 13:41:57 +08:00
lz 你考虑 redis cluster ha ?
jhsea3do
2019-09-29 13:45:59 +08:00
另外你如果对 kv 的高可用看重,而对 缓存速度 不看重的话,可以用 etcd / zookeeper, 这个主要做配置共享的。
passerbytiny
2019-09-29 13:55:03 +08:00
你既然叫缓存,那么你的主存储还是关系数据库,为何不从缓存策略上去考虑。两个一摸一样的 Redis 缓存不是没有意义,但效益成本比例低到可以忽略。

如果你要是单纯的追求访问(读)速度,并且做好了读写分离,那么应当做成镜像而不是缓存。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://tanronggui.xyz/t/605248

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX