V2EX dongfuye1
 dongfuye1 最近的时间轴更新
dongfuye1

dongfuye1

V2EX 第 508556 号会员,加入于 2020-09-17 16:49:08 +08:00
dongfuye1 最近回复了
2022-05-31 07:53:15 +08:00
回复了 dongfuye1 创建的主题 分享创造 首个彻底解决缓存和数据库一致性问题的方案
@swulling 分布式锁无法避免版本一致性的问题,这个问题可以参见 ddia 作者关于 redis 锁的论述,他提出的通用方案是应用层引入版本,但本文针对 redis 缓存场景,提出了无需应用层引入版本的方案,这样的方案会更通用
2022-05-31 07:48:47 +08:00
回复了 dongfuye1 创建的主题 分享创造 首个彻底解决缓存和数据库一致性问题的方案
@swulling 你说的删除方案无法解决本文开头提出的问题哈,因为你删除了所有数据,那么你的 ver 重新计数,因此出问题的 5 写入 redis 时,查到的 ver 有可能跟读取数据之前的 ver 碰巧相同而写入,导致一致性问题
2022-05-30 22:27:48 +08:00
回复了 dongfuye1 创建的主题 分享创造 首个彻底解决缓存和数据库一致性问题的方案
@swulling 那么当数据库的数据更新时。你的这个方案需要怎么操作呢?直接删除数据的话,会导致你的版本重复,导致不一致
2022-05-30 22:06:09 +08:00
回复了 dongfuye1 创建的主题 分享创造 首个彻底解决缓存和数据库一致性问题的方案
@hobochen 首先您笼统的说槽点太多,而不能指出任何一个与原理相关的问题,这不是讨论问题的态度。
其次,我看了许多论文,如果你认为文章内容与某篇论文相悖,或者抄袭某篇论文,请指出。
另外,这个库本身代码量不大,目前就是我一人开发,而我的另一个开源库 dtm ,则有三十多贡献者
2022-05-30 21:56:27 +08:00
回复了 dongfuye1 创建的主题 分享创造 首个彻底解决缓存和数据库一致性问题的方案
@swulling 你的这个 idea 和文中做法有相近的地方,但对于中间进程 crash ,自动解除锁定等情况,还是不够的
2022-05-23 16:37:16 +08:00
回复了 dongfuye1 创建的主题 分享创造 首个彻底解决缓存和数据库一致性问题的方案
@Citrus 标题起的有些大,是希望能够吸引更多的读者,但实际内容,确实对得起“首个”“彻底解决”这些词
我从全网搜索的结果来看,是首个。在这方面,关于一致的方案,看到有一篇很深入的,也就是文中给出链接介绍携程的,但是该文中的 update_time 字段方案不够通用,对业务有要求,并且是全量更新缓存,代价大;而锁方案,其实依旧存在问题,参见 https://martin.kleppmann.com/2016/02/08/how-to-do-distributed-locking.html 。本文提出的方案,无需对应用层模型施加限制,按需计算缓存,适用所有的应用模型。
如果您有类似的方案,欢迎讨论,或者给出链接。
性能方面,因为跟常见的缓存方案差不多,没有给详细的分析过程。实际的分析过程其实很简单,对于最终一致方案,每个数据库的数据更新操作,跟常见方案相同,只是把删除缓存变成了使用一个 lua 脚本来删除,对于读取缓存和写缓存的操作,变成了两个 lua 脚本操作,其他不变,因此是高效的。您可以参考文末给出的开源库进行验证哈。
2022-05-23 10:12:05 +08:00
回复了 dongfuye1 创建的主题 分享创造 首个彻底解决缓存和数据库一致性问题的方案
进程内部的锁,加 redis 锁,保证每个时刻只有一个查询到 db
2022-05-22 21:50:01 +08:00
回复了 dongfuye1 创建的主题 分享创造 首个彻底解决缓存和数据库一致性问题的方案
@JRyan 这个锁定时间默认 3s ,可配置。考虑锁定时间过期的情况,两个进程同时更新缓存时,会查看缓存中的锁,只有还拥有锁的那一个进程(即最后锁缓存的进程,会查询到最新的数据)能够更新成功
2022-05-22 09:54:44 +08:00
回复了 dongfuye1 创建的主题 分享创造 首个彻底解决缓存和数据库一致性问题的方案
@ztjryg4 非常正确
2022-05-20 18:07:51 +08:00
回复了 dongfuye1 创建的主题 分享创造 首个彻底解决缓存和数据库一致性问题的方案
@cocong 乱序不一致这一节,就已经回答了最终版本一致的原理了哈。其他强一致的原理也在相关章节讲述了。
有些场景是并发比较大,数据库扛不住,但是在数据写入时,响应时长变大是可接受的,那么这个时候强一致方案就能解决问题
关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     3910 人在线   最高记录 6679       Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 23ms UTC 00:55 PVG 08:55 LAX 17:55 JFK 20:55
Do have faith in what you're doing.
ubao 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