在一些电子商务网站上,一件商品只剩下一个数量。如果购买了该项目,则主数据库(用于写入)将被更新为数量0。由于在主从同步中涉及一些时间延迟,所以当第二个客户请求关于同一产品的信息时,从数据库(用于读取)可能不被更新。他/她可能仍然会看到过时的数据,即一个可用数量。以下是几个问题:
1)让所有与客户相关的查询都命中主数据库(以获得更新的结果)是不是一个好主意?
2)如果没有,而且主从同步肯定会有一定的时延,这样怎么提升客户体验呢?
发布于 2016-04-17 03:23:16
让我们从一个简单的例子开始:只有一个master数据库。
我们都在搜索产品,我们都看到了最后一项。你买了它。我比你多考虑了10秒钟,然后点击购买。太迟了!所以我收到一个错误,说“哦,那个商品已经没有库存了。”
在主/从模式下,这是完全相同的体验,只是发生的时间窗口稍微大了一点。所以你真的没办法防止这个问题。那么,您不希望所有执行读查询的客户都掌握它。您想要的是通过master进行写入,如果由于过期状态而导致写入失败(oops,can't buy),则向客户道歉。
在显示项目的UI中,你可以警告用户只剩下1个项目,这会让他们预料到这个错误,并在发生时不那么沮丧。
https://stackoverflow.com/questions/36660892
复制相似问题