游戏陪玩app开发,数据不一致问题的应对策略
在游戏陪玩app开发中,数据的一致性可以分为两种情况,一种是缓存中存在数据,并且缓存中数据值和数据库中的值一致,另一种就是缓存中不存在数据,数据库中的值和新数据值一致。那么面对数据不一致问题,应该采取哪些应对策略呢?
一、针对读写缓存
所谓的读写缓存就是数据的增删改在游戏陪玩app开发的缓存中进行,并通过同步直写或异步回写策略将数据同步到数据库中。
1、无并发情况
(1)如果是利用同步直写策略就得考虑数据库和缓存数据更新顺序的问题,如果是先更新缓存,再更新数据库,可以采用消息队列+重试机制策略处理数据不一致问题。
(2)如果是先更新数据库,再更新缓存的情况,也可以采用消息队列+重视机制的策略处理数据不一致问题。
2、高并发情况
(1)针对写+读并发类型的数据更新,需要对缓存的读取记录进行保存,然后通过延时消息比较发现数据不一致问题,并进行业务补偿。
(2)针对写+写并发类型的数据更新,需要利用分布式锁保证一个时间段内只有一个线程去更新数据库和缓存,保持数据的一致性,对于没有拿到锁的线程进行延时处理。
二、针对只读缓存
所谓的只读缓存是指新增数据时直接写入游戏陪玩app开发的数据库,更新数据时先删除缓存。
1、无并发情况
由于只读缓存中更新数据库和删除缓存值分成两步进行,所以在无并发的情况下,就有可能出现步骤一成功,但步骤二失败的状况,我们可以采用消息队列+异步重试的解决策略保证数据的一致性。
2、高并发情况
在高并发场景中,游戏陪玩app开发的数据库层面读写并发会导致数据库和缓存中数据不一致的情况
(1)如果是先删除缓存再更新数据库的情况,我们通过设置缓存过期时间+延时双删的方式进行数据不一致的处理;
(2)如果是先更新数据库再删除缓存的情况,我们可以通过延迟消息、异步删除、加锁、删除消息写入数据库等方式保证数据的一致性。
上述内容中的应对策略只是保证了游戏陪玩app开发中最后结果的数据一致性,其实还可以通过使用Redis分布式读写锁、串行化等强一致性策略实现业务层的数据强一致性。
发表评论 取消回复