消息队列在电商中的应用的几个问题,比如在下单,秒杀场景中使用的疑惑。

zhzh1126 2017-05-17 07:27:19
1.下单
场景说明:用户下单后,订单系统需要通知库存系统。
引入应用消息队列后的方案,如下图:

订单系统:用户下单后,订单系统完成持久化处理,将消息写入消息队列,返回用户订单下单成功。
库存系统:订阅下单的消息,采用拉/推的方式,获取下单信息,库存系统根据下单信息,进行库存操作。
假如:在下单时库存系统不能正常使用。也不影响正常下单,因为下单后,订单系统写入消息队列就不再关心其他的后续操作了。实现订单系统与库存系统的应用解耦。
2.秒杀
流量削锋也是消息队列中的常用场景,一般在秒杀或团抢活动中使用广泛。
应用场景:秒杀活动,一般会因为流量过大,导致流量暴增,应用挂掉。为解决这个问题,一般需要在应用前端加入消息队列。
可以控制活动的人数;
可以缓解短时间内高流量压垮应用;

用户的请求,服务器接收后,首先写入消息队列。假如消息队列长度超过最大数量,则直接抛弃用户请求或跳转到错误页面;
秒杀业务根据消息队列中的请求信息,再做后续处理。

问题:
订单:如何保证消息一定被正确处理,下订单之后需要付款,那么在线付款的时候如何保护发送的消息已经被处理成功呢?是否是需要去查询订单处理状态?然后再判断是否可以付款?
秒杀:也基本上是同样的问题,如何保证消息队列里的消息都被处理成功?如果秒杀商品有100个,当请求达到100个的时候,不再允许请求了,那么如果这100个请求中有消息没有被处理成功,如何解决?后续付款问题同下单中的问题。
...全文
2855 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
爱吃火锅的S 2017-08-11
  • 打赏
  • 举报
回复
赞同一楼。。
  • 打赏
  • 举报
回复
楼上回答正确。
tianfang 2017-05-17
  • 打赏
  • 举报
回复 5
问题: 订单:如何保证消息一定被正确处理,下订单之后需要付款,那么在线付款的时候如何保护发送的消息已经被处理成功呢?是否是需要去查询订单处理状态?然后再判断是否可以付款? 答: 用户下订单,不能保证成功,只有库存系统检查并分配商品,调整库存之后,才是成功的订单。只有成功的订单,才能付款, 秒杀:也基本上是同样的问题,如何保证消息队列里的消息都被处理成功?如果秒杀商品有100个,当请求达到100个的时候,不再允许请求了,那么如果这100个请求中有消息没有被处理成功,如何解决?后续付款问题同下单中的问题。 答: 秒杀是先把秒杀请求进队列,秒杀逻辑处理将库存分给前100个请求,生成成功的订单,一般的还有产生几十个秒杀排队订单(单独于标准订单,如果前100个中有未付款被取消,则排队订单有效),再后面的就都通知失败 请求是一直允许的,只是不生成订单,信息会返回商品无库存。
Jshop小程序商城,是一款开源的电商系统,包含微信小程序、支付宝小程序、APP、公众号和H5端,为大小企业提供移动电子商务优秀的解决方案。 后台采用Thinkphp5.1框架开发,执行效率、扩展性、稳定性值得信赖。并且Jshop小程序商城上手难度低,可大量节省定制化开发周期。 前台H5使用Vue开发,在页面的打开和渲染效率上更快,下单流程流畅自然,可大大增加用户体验,提升订单量。 强大的促销引擎,多种促销方式自由搭配,满足各种场景的促销方式需求,做活动更灵活简单,并且在促销的扩展上也非常方便。 最新uniapp简约模板介绍 uni-app简约序模板,全新UI设计,更多交互细节,我们倾尽全力为您提供更加流畅舒爽的体验,增加对支付宝小程序、APP的支持,实现一个后台,管理5个前端。 同时又实现了一套前端代码,发布多个平台,为您的业务可以提供更加强有力的支撑! 关于开源 这不是一款免费的系统,商用记得授权哦。 之所以不彻底免费,一方面是可以让我们有持续维护下去的动力和资源,另外一方面也是不想让您有后顾之忧,避免后期尴尬。 我们的团队水平有限,也是在探索学习,在改进。之所以开源,就是为了方便大家,也是为了提升下该项目的质量,我们相信有您的参与,可以使我们的系统更加完善和健壮。 功能介绍 商品管理,单规格、多规格商品管理,品牌、分类管理、商品评价 订单管理,订单支付、发货、取消、售后等 会员管理,会员列表,消息管理等 运营管理,广告管理、文章管理 微信管理,小程序管理、微信公众号管理、模板列表、公众号菜单管理 促销管理,商品促销、订单促销、优惠券、团购秒杀、拼团列表 财务管理,支付单、退款单管理、提现管理、账户资金管理 控制面板,计划任务、插件、图片、地区、消息、店铺配置、支付方式、配送方式、物流公司管理。信任登录插件、阿里云OSS插件、阿里云短信插件、微信消息模板插件、分销心、PC设置 门店管理,门店列表。门店核销、店员管理、提货单管理。 智能表单,表单列表、表单统计、表单提交管理、表单小程序码等 统计报表,商品销量统计、财务收款统计、订单销量统计 页面管理,布局管理,页面可视化操作 H5端说明 H5端采用Vue开发,数据和页面分离,封装APP时体验效果也更好。H5端可以放在离客户最近的地方,比如单独服务器、电脑桌面、PAD、手机、广告机等。 智能表单说明 智能表单包含有:订单、付款码、留言、反馈、登记、调研这几种类型,可实现店铺收款、门店内扫码下单、活动预约、活动预定、会议登记、在线报名、上课签到等等。 智能表单可以为您的线上线下结合提供更强大的助力。 目录结构 初始的目录结构如下: wwwroot  WEB部署目录(或者子目录) ├─addons                应用插件目录 ├─application           应用目录 │  ├─api                api接口模块目录 │  ├─b2c                前台模块 │  ├─common             公共模块目录 │  ├─crontab            定时任务目录 │  ├─job                任务队列目录 │  ├─manage             后台管理目录 │  ├─wechat             接收微信消息目录 │  ├─command.php        命令行工具配置文件 │  ├─common.php         公共函数文件 │  ├─tags.php           应用行为扩展定义文件 │ ├─config                配置文件目录 ├─h5                    前台H5源码 ├─public                WEB目录(对外访问目录) │  ├─install            自动安装目录 │  ├─static             前台静态文件 │  ├─wap                前台手机端运行目录 │  ├─index.php          入口文件 │  └─.htaccess          用于apache的重写 │ ├─thinkphp              thinkphp框架系统目录 ├─update                版本升级包 ├─extend                扩展类库目录 ├─runtime               应用的运行时目录(可写,可定制) ├─vendor                第三方类库目录(Composer依赖库) ├─wechat_app            微信小程序源码

25,985

社区成员

发帖
与我相关
我的任务
社区描述
高性能WEB开发
社区管理员
  • 高性能WEB开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧