2016-04-16 57 views
0

在某个电子商务网站上,项目只剩下一个数量。如果购买了该项目,则主设备(用于写入)数据库将用数量0进行更新。由于主从同步中涉及一些时间滞后,因此第二台设备(用于读取)数据库可能不会更新客户请求关于同一产品的信息。他/她可能仍然会看到陈旧的数据,即可用的数量。几个问题是:主数据库和从数据库

1)让所有客户相关的查询命中主数据库(更新结果)是一个好主意吗? 2)如果不是,主从同步肯定会涉及一定的时间滞后,那么客户体验怎么能够提升?

回答

0

让我们从一个简单的案例开始:只有一个主数据库。

我们都搜索产品,我们都看最后一个项目。你买它。我认为它比你多10秒,然后点击购买。太晚了!所以我得到一个错误,说“糟糕,该项目不再有货。”

在主/从中它是完全相同的经验,只是它发生的窗口稍大。所以真的没有办法阻止这个问题。那么你不希望所有的客户都在阅读查询。你想要的是通过主写入,如果由于过时的状态而写入失败(oops,不能购买),那么向客户道歉。

在用于显示项目的用户界面中,您可以警告用户只剩下1个项目,这会让他们预期发生此错误,并且在发生错误时不会感到不安。

+0

我在某处读过这篇文章 - 解决此问题的另一种方法是将读取分为关键读取和非关键读取。所有与在最近x分钟内更新的行相关的读取都应该碰到主数据库,否则从属数据库就足够好了。但是,如果有任何请求发出 - 我们如何确定它是否是关键读取? –