MySQL从奴隶

时间:2016-10-16 23:28:35

标签: mysql web-services race-condition database-replication master-slave

我有一个Web应用程序,一个从客户接受订单的订单服务,它首先写入MySQL订单表,然后创建一个事件并将其放在消息队列中,稍后该事件由处理器拾取,基本上做很多事情,比如发送电子邮件确认,安排付款,并为订单准备类似的东西,然后它会更新此订单表中的状态。

所以我遇到的问题是当客户想要在他/她下订单后取消订单时。如果可以取消订单,订单服务将首先接收该请求并检查该特定订单的状态(如果订单已经在去往接收方的路上,那么显然您无法取消) ,但既然它是从Slave而不是Master读取的,那么这个可能发生的小窗口可能会以“正在准备”的形式读取,但实际状态已经变为“Out of delivery”。我想知道除了总是从师父那里读到以外什么是另类的?

[Order service]  ---> [DB] <-----
      |                         |
      |                         |
      v                         |
     [MQ]                       | update status
      ^                         |
      |                         |
      |____[Order processor]____|

0 个答案:

没有答案