订单系统设计

我们每天都在使用下单。但是订单是如何生成的呢,又是如何推送到下游的各个系统的?
在这里插入图片描述

最重要的保证:

订单系统的低延迟,高可用的,不丢单问题。

万级和千万级架构是不一样的。

思路:
首先,设计一个简单的订单系统。
分析哪几个环节会丢单。
日万级如何优化。
日千万如何升级改造。

简单系统:
在这里插入图片描述
只有前台和后台,前台结算页提供用户去结算。当后台收到前台用户点击去结算的操作时,就会处理下单服务。

起初,订单会被处理到后台的数据库中,然后异构数据到缓存中。以此提供用户在我的订单中进行订单查询。
当用户支付完成后,收银台发送消息给下单的服务,进行数据库和缓存中的订单状态的修改。这样一个简单的订单系统就完成了。

真实的订单系统会有更多的业务,使得系统更加复杂。前面只是一个示例。

接下来,我们再看看这个系统中,哪些环节可能会出现丢单的问题。其实现在后台系统研发架构已经很成熟了。但是如果系统挂了,就是挂了。

所以关键点应该聚焦在写数据库,和接收和发送订单消息的环节上。

总结为3步:

1.

关键逻辑不要使用读写分离的查询方式,避免从库同步延迟造成订单查询异常。
比如
在这里插入图片描述

创建订单后,要创建支付单,但是在反查订单的时候由于主从延迟,没查到订单信息,这就可能会造成创建支付单的失败。

2

关键逻辑也不要使用缓存来进行订单的查询
在这里插入图片描述
这样做,同时是为了避免因为缓存延迟造成订单反查失败。

订单补偿不要粗暴的使用消息队列的方式࿰

  • 2
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值