
让我们看一下我的系统的简单模式。基本上,有两个(或更多)服务对SQL数据库进行简单操作:读、更新、写入。在将条目E写入(从)数据库后,它将被写入分布式缓存(Redis)。以下读取的E将从Redis缓存中读取E,以获得更高的吞吐量。基本上,它是正确的。
不过,我认为有以下情况:
缓存是空的。
Process A (reads the entry `E`) Process B (updates the entry `E`)
READ(E, cache) = EMPTY
READ(E, db) = E1
WRITE(E2, db)
WRITE(E2, cache)
WRITE(E1, cache) 因此,最后,有过时的E1保存到缓存。
consistency?
提前谢谢。
发布于 2021-04-30 07:33:19
数据库一致性是一个非常重要的话题,这里需要的不仅仅是几行。
这就是说。第一个简单的步骤是在数据库和客户端进程之间添加一个小层。这样的层将负责原子化的进程写操作(写到DB,等待ACK,写到缓存)。
https://stackoverflow.com/questions/67329401
复制相似问题