版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、idid(自增id主键)idid(自增id主键)本文就其中一个问题:设计一个电商平台的积分兑换系统,来详细阐述一下。文中会详细指出在系统设计的时候要考虑哪些要点,给大家展示出来这类问题思考的一个过程。2、业务需求的描述假设面试官现在给出来对于这个电商平台的积分兑换系统的相关需求如下:用户在电商平台里平时通过购买商品、晒单评论可以有不断的积累积分积累到足够的积分后,就可以在电商平台的积分兑换页面中,选择使用自己的积分来兑换一些礼品需求其实就这么简单,那么面试官说了,针对这个业务场景给出你对这个机制实现的思考过程以及这里要注意的一些地方。3、对业务流程的思考如何思考?首先,用户不停的购买商品以及晒
2、单评论,会不断的获取积分,那么是不是需要一张积分表,专门用来存储每个用户的积分呢?没错,这个表是一定需要的,可以现场给出下述的表结构。积分表:user_id(用户id)credit(积分)继续来看,假设在积分兑换页面,用户选择用自己的20000积分兑换一瓶洗发水,后台的逻辑应该如何设计呢?这个也是必须得现场给出一个思考过程的,这个其实看起来简单,但是很多年纪较轻,经验不足的朋友,可能没法快速思考出来。首先你要用20000积分去进行兑换,那么一定是必须要在积分表里扣减掉这20000积分的吧?所以在流程设计中,首先就得有一个20000积分扣减的过程。其次,你用这20000积分兑换了什么东西呢?所以
3、你是不是还需要一张单独的表,叫做积分兑换记录表,记录下来你这个用户本次用多少积分兑换了一件什么商品?这个积分兑换记录表的结构如下所示,你是不是需要在下面的那个表里插入一条记录,说这个用户本次用多少积分兑换了哪个商品?积分兑换表:user_id(用户id)exchanged_credit(用于兑换的积分)product_id(兑换的商品id)最后,光是插入上述那条积分兑换记录是不够的,你必须得调用仓储业务模块的接口,通知仓储业务模块新增一条发货申请,而且应该是积分兑换对应的发货申请,这样保证仓库可以准备对应的商品进行发货。这个发货申请大致对应如下的表结构:发货申请表:id(自增id主键)type
4、(发货类型,1:购买,2:积分兑换)credit_exchange_id积分兑换表的id)product_id(要发货的商品id)其实这里的发货申请表简化了很多,按理说还得有发货商品的数量等等字段,但是这里可以简化处理也没事,毕竟是面试现场。简单画出来这个流程大致如下所示。4“如果把上面那整个业务流程给面试官说了,就完事了吗?当然不是!你可以站在用户的角度考虑一下,你是不是肯定还需要查看积分兑换的记录?这个在积分兑换表里可以查看到你用多少积分兑换了什么商品。但是你兑换商品的物流配送进度,能查看到吗?不能。所以你应该在业务流程里再考虑进去对应的物流配送的逻辑。通常来说一个基本的逻辑,就是在生产发
5、货申请单的时候,需要调用第三方物流公司的接口申请一个物流单,这样仓库管理员打包准备好商品,坐等物流公司商品收快递就可以了。物流公司会根据物流单去进行配送,这个配送地址当然是用户自己在电商平台选择的自己的某个地址。此时发货申请单的表结构是不是如下所示?发货申请表:id(自增id主键)type(发货类型,1:购买,2:积分兑换)credit_exchange_id(积分兑换表的id)product_id(要发货的商品id)express_no(物流单号)所以在生产发货申请单时,先得调用第三方物流公司的接口申请一个物流单,这样发货申请单中是有一个物流单号的,而且每个积分兑换记录都通过id跟发货申请单
6、关联起来。这样在页面上对每个兑换记录,是不是可以找到发货申请单中的物流单号,然后根据物流单号调用第三方物流公司的接口,去获取配送的进度?这就是一个非常典型的业务系统的技术实现的逻辑思考,一个经验丰富合格的工程师,往往都具备了一定的业务思维,可以很好的根据业务系统中的用户逻辑来考虑,反推自己的系统技术实现逻辑。上述整个过程,如下图所示:须增发炎申酒和分M簿表后指申谙妾款即榭流单宜看物源序历出度查看物流单号查看租分科换记录/方、新坞世疗先换出录第三方物流公司系统须增发炎申酒和分M簿表后指申谙妾款即榭流单宜看物源序历出度查看物流单号查看租分科换记录/方、新坞世疗先换出录第三方物流公司系统仓储模提和用
7、慢块扣减双分理分表5iw业务流程整个捋顺之后,接下来就涉及到技术的考虑了。你得考虑一下,这种业务系统里怎么能没有事务呢?扣减积分、新增积分兑换记录、新增发货申请单,这三个步骤必须是要么一起完成,要么一起失败的。也就是说,这三个步骤必须是在一个事务里的。现在有一个问题,对一个电商平台自身的业务系统来说,仅仅包含积分服务。但是仓储服务一般是独立部署的一套系统,或者是一个独立的服务。也就是说,扣减积分和新增积分兑换记录可以在一个服务里是一个事务,但是新增发货申请单,他是在另外一个服务里的,这个事务如何保证呢?有朋友可能马上回答:用分布式事务啊!先别急,咱们可以先用最简单的模式来实现一下。比如积分服务
8、在一个事务代码块中,先执行扣减积分、新增积分兑换记录两个步骤。然后记住,在事务代码块中,最后一步调用仓储服务的接口,如果接口调用成功,那么就可以提交事务了。如果接口调用失败,那么就抛异常让事务回滚,这样可以不可以?这个流程如下所示:积分服务事务-扣减积分-新增积分兑换记录-调用仓储服务66上述设计其实理论上是没问题的,但是这里你忽略了一个问题,在这个业务场景中,积分服务是没有必要同步调用仓储服务的。因为积分兑换是一个用户执行的操作,假设你的仓储服务在生成发货申请单的时候调用第三方物流公司的接口,被卡住了,或者失败了,怎么办?此时可能导致用户在页面上看到积分兑换按钮点击之后,卡在那儿可能几十秒都
9、无法执行成功,所以这个系统如此设计是错误的。那应该怎么做呢?你必须得在这里引入消息中间件进行异步化的解耦,保证用户点击积分兑换按钮之后,尽快返回。如下图所示:去我申席妻去我申席妻到这里就OK了吗?还没呢!一旦引入消息中间件之后,好处是用户点击积分兑换按钮,直接就是在积分服务里扣减积分以及新增积分兑换记录,然后发送一条消息到消息中间件里就结束了,速度很快,保证了用户体验。但是坏处就是,万一仓储服务执行新增发货申请失败了怎么办?这个时候就需要引入可靠消息服务了,他需要去保证仓储服务一定会完成新增发货申请这个事。具体的流程如下:积分服务发送消息给可靠消息服务,可靠消息服务在消息表中新增记录,然后发送
10、消息到MQ(消息中间件)然后仓储服务消费消息新增发货申请单,如果成功就回调可靠消息服务的一个接口说自己成功了,可靠消息服务就可以更新本地消息表中的记录状态为成功如果仓储服务长时间没通知可靠消息服务自己成功了,可靠消息服务不停的重试再次发送消息通过这样的设计,就可以保证可靠消息服务一定会无限次重试保证让仓储服务成功执行。再加上重试机制后,整个流程图如下所示:一回弼通知一可靠消现崩翦望最爱法.鬻疑耶捌流箱一教玷酶L畲储聪.第三:鬻”司口却liJJ新噌坦分兑粮记录到错炭黄申请IJ1积分表现外兑推表斐集市潘夫查看榔流甲母宣看猊方兑揽记录34*用户宜看梅定配法治匿8”最后一个问题,如果仓储服务卡在第三方物流系统申请物流单的环节,长时间阻塞,所以没回调通知可靠消息服务。但是可靠消息服务过了一段时间,感觉没收到回调通知,就自己重试发送了消息,这样岂不是会让仓储服务新增两条发货申请单?因此我们还要保证仓储服务新增发货申请单的幂等性,其实也非常简单,回顾一下发货申请单表的结构:发货申请表:id(自增id主键)type(发货类型,1:购买,2:积分兑换)credit_exchan
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026湖南长沙市岳麓幼儿教育集团第十五幼儿园教师岗位招聘考试参考题库及答案解析
- 2026年蚌埠安徽神通物流集团公开招聘工作人员1名考试参考题库及答案解析
- 2026陕西氢能产业发展有限公司所属单位招聘(29人)考试备考题库及答案解析
- 2026浙江台州椒江区社会事业发展集团有限公司招聘工作人员8人考试参考题库及答案解析
- 2026年观音阁镇卫生院公开招聘中医师、中药师备考题库完整答案详解
- 南昌印钞有限公司2026年度招聘备考题库完整参考答案详解
- 中医护理在肩周炎康复中的应用探讨
- 2026年温州护士学校关于招聘高中英语教师(非事业编)的备考题库及1套参考答案详解
- 2026年重庆两江新区人才发展集团某项目外包员工招聘备考题库及参考答案详解一套
- 2026年浙江省之江监狱招聘备考题库及1套参考答案详解
- 四川农商银行2026年校园招聘1065人考试题库附答案
- 大仲马课件教学课件
- 2025至2030尿素硝酸铵(UAN)行业产业运行态势及投资规划深度研究报告
- 集团公司年度经营状况分析报告
- 2025蜀道集团下属四川金通工程试验检测有限公司招聘18人考试参考题库附答案解析(夺冠)
- 2025四川长江担保集团有限公司下属子公司宜宾和正融资担保有限公司第三批员工招聘1人笔试历年参考题库附带答案详解
- 浙江省台金七校联盟2025-2026学年高一上学期11月期中联考语文试题含答案
- 医院抗菌药物合理使用管理记录
- 2025年热科院笔试试题及答案
- 物业管理员实操简答试题附答案
- T-CSF 0114-2025 城市绿地植物物种多样性评价规范
评论
0/150
提交评论