专栏电商日志财经减肥爱情
投稿投诉
爱情常识
搭配分娩
减肥两性
孕期塑形
财经教案
论文美文
日志体育
养生学堂
电商科学
头戴业界
专栏星座
用品音乐

供应链OMS设计

  一、概述
  订单系统作为电商系统的纽带贯穿了整个电商系统的关键流程。其他模块都是围绕订单系统进行构建的。订单系统的演变也是随着电商平台的业务变化而逐渐演变进化着,接下来就和大家一起来解析电商平台的生命纽带。
  订单系统的作用是:管理订单类型、订单状态,收集关于商品、优惠、用户、收货信息、支付信息等一系列的订单实时数据,进行库存更新、订单下发等一系列动作。订单系统业务的基本模型涉及用户、商品(库存)、订单、付款,订单基本流程是下订单减库存,这两步必须同时完成,不能下了订单不减库存(超卖),或者减了库存没有生成订单(少卖)。超卖商家库存不足,消费者下了单买不到东西,体验不好;少卖商家库存积压或者需要反复修改商品信息,反复麻烦,体验也不好。
  订单管理就是从电商平台上获取买家订单,对订单进行一些处理后,将订单分配给仓库发货。电商订单的整个链路大致如下图所示,在复杂的商业模式下,商家订单类型多样,不同类型的订单的处理不尽相同。本文将探讨OMS系统关于B2C订单处理的产品设计思路。
  二、订单基本概念
  设计订单系统时包含几个大的方向需要考虑,这些内容决定了订单系统的稳定性和可持续性。
  订单的多样性特点
  主要由来源和操作的多样导致了订单多样性点。
  订单字段
  订单字段包含了订单中需要记录的信息,他的作用主要用于沟通其他系统,为下游系统提供信息依据。
  订单信息
  订单号作为订单识别的标识,一般按照某种特定规则生成,根据订单的增加进行自增,同时在设计订单号的时候考虑订单无序设置(防止竞争者或者第三方来估算订单量)。订单号后续用作订单唯一标示用于对接WMS(仓存管理系统)和TMS(运输管理系统)时的订单识别。
  订单状态
  订单状态在下面章节会详细描述
  用户信息
  指买家的相关信息,包括名称、地址、手机号。O2O还会多一种情况就是自提点,这样地址则会变为自提点的地址。地址信息在后续会作用在WMS和TMS上用于区分区域和配送安排。
  商品信息
  商品的基本信息和库存,金额由于比较特殊所以我把金额独立在商品信息以外说,不过逻辑上其实都属于商品信息范畴。商品信息主要影响库存更新和WMS产生。
  金额信息
  订单产生的商品信息,这里面除了要记录最终的金额,过程金额也需要记录。比如商品分摊的优惠金额、支付金额,应付金额等。在后续的订单结算、退换货、财务等环节都需要使用。
  时间信息
  记录订单每个状态节点的触发时间。
  用户信息:用户帐号,用户等级。订单基础信息:父订单与子订单、订单编号、订单状态。收货信息:收货地址、收货人姓名、联系电话、邮编,商品信息:SKU信息、规格、商品数量、价格、商品图片、所属商家。优惠信息:优惠券、促销活动、虚拟币抵扣金额,支付信息:支付方式、支付单号、商品总金额、实付金额、运费、虚拟币抵扣金额,促销优惠金额、优惠卷优惠金额、总优惠金额。物流信息:物流公司、物流单号、物流状态。其他信息:发票信息、下单平台、分销渠道。三、订单流程
  订单流程是指整个订单从产生到完成整个流转过程,包括了正向和逆向流程的过程。
  正向流程
  商品下单后流程:在订单过程中进行安全校验,主要是检测用户是否在黑名单上,用户购买的行为是否正常等,当检测到不正常时,终止下单。从商品中心获取商品信息(SKU、规格、价格等信息)从营销中心获取商品、订单促销信息(优惠券、促销活动、判断是否满足优惠条件,计算出优惠金额)。在会员中心获取会员权益,例如平台抵扣积分,折扣条件等。在调度中心校验销售层库存,按照规则锁定库存区域。根据拆单规则(商家,仓库,订单类型)将订单拆分为若干子订单。根据运费模板计算运费,根据商品金额,运费,优惠金额计算应付金额。生成订单,订单状态为待付款。
  在存储订单信息中,主要包含以下内容:用户信息、订单基础信息、收货信息、商品信息、优惠信息、支付信息、物流信息、其他信息等等。
  订单内容复杂精细,在存储时,除了表结构的设置,还应该注意信息冗余。特别是商品信息,由于商品的内容不断发生编辑变化,要保存下单快照,避免过长时间后,商品信息丢失。
  这里面主要是涉及主流电商系统中的通用订单流程,部分细节可以根据自己平台的特殊性进行调整。
  需要注意的地方订单生成环节存在超时未支付自动取消的过程,库存的占用会在订单取消后释放。如果选择COD(货到付款)则支付环节相应转移到订单配送之后,而过程中所有与款项相关的逻辑变为只操作金额数字,不对结算和账户进行打退款操作。金额分摊需要到商品订单系统审核主要对恶意用户或者刷单情况进行处理。系统可根据白名单、黑名单、消费频次、促销品购买量方面做风控规则。如果后续会进入到人工审核,则规则上可以适当从宽。当触发规则需要进行订单退订的行为。此处设计时要小心对用户体验的损害,往往前台文案上说明当前节点是审核状态或者是等待接单。传统电商则是通过关联第三方物流的物流信息进行跟踪。预售等货和移仓需要做成SOA服务,以便在交易页面计算预计时间和预计到货时间。移仓处理依赖仓库的情况,也会涉及到后续拆分和合并包裹的逻辑。订单产生时先要判断报缺情况,如果出现报缺问题则要考虑整单报缺、部分报缺、换货或者换转退的情况(库存,仓促调拨和退款)。报缺情况分为系统报缺和实物报缺,这是承接但相对独立的两个环节。电商系统要考虑7天无理由退货的情景,即订单状态完成后申请退货。此时主要涉及的是金额上的计算以及一些财务程序(如发票等)问题的处理。父订单和子订单:
  如果从购物车选中多件商品时,例如选中三个商家的商品,会将这次购买行为拆分为三个订单,这次整体购买行为记录在父订单下。当系统首次提交订单结算时,会合并自订单,针对父订单进行结算,当提交提交订单后,结算中断,或者结算之后,系统在更新订单状态,物流跟踪,针对的是子订单。
  逆向流程
  逆向流程指订单发生取消、退货等情况时引发的订单流程过程。
  触发逆向流程的触发主要有几种情况:用户自主取消订单(整单)风控系统触发取消订单(整单)客服接到客诉仲裁后触发取消订单(整单)超时未支付取消订单(整单)换货报缺转为退单(整单、部分报缺)
  关注点订单状态(某一节点后如订单产生后不允许取消订单)当退单被商家拒绝后需要转入客服仲裁的环节部分退的订单促销一般保持享用状态,但金额按照分摊的金额进行退款
  订单状态
  从订单状态设计目的和存在价值去分析和理解它背后设计机制:维度及维度颗粒度大小。
  正向和逆向流程维度正向订单:已锁定、已确认、已付款、已发货、已结算、已完成、已取消等正向预售订单:预付款已付未确认、已确认未付尾款(变更)正向问题单:未确认、未锁定、未发货、部分付款、未付款等逆向退单:待结算、未收到货、未入库、质检不通过、部分收货、已取消、客户已收货等逆向换单:完成、已结算、客服已收货等
  服务对象维度顾客用户:待付款、待发货、待收货、待评价、买家已付款、交易成功失败、卖家已发货、退款成功、交易关闭、ERP等其他交互系统:已锁定、已确认、已分仓、已分配、已出库、已收货、已完成等等待买家付款、待付款和待发货订单、退款中的订单、定金已付、买家已付款、卖家已发货、交易成功、交易失败、异常订单
  订单推送
  当状态发生变化时,需要将对应的变化情况告知给相关人员以便了解当前订单的情况,这就是订单推送的作用。
  订单推送的触发依赖于状态机的变化,涉及到的信息包括推送对象(用户、物流人员、商家)推送方式(push、短信、微信)推送节点(状态改变)四、履约单
  商城订单支付后,同步订单信息生成履约单;通过业务相关节点(打标签、物流商匹配、报关规则匹配、拆合单、配货)处理后推送履约订单至WMS内进行履约流程。五、订单系统设计的挑战和实践
  订单系统需求演变
  第一步:实现购买流程实现订单的创建、发货、确认等信息闭环支持订单审核(初期可支持人工审核即可)支持用户端显示订单相关信息支持促销金额的计算
  第二步:提供服务提供订单分布式服务支持跨平台交易单生成(即同一个大交易单内既有商家商品又有自营商品或者是多个商家的商品)支持拆单、合并逻辑(配送单、支付单等)提供更丰富的订单推送服务,完善订单状态
  第三步:支持不同营销手段下的订单类型
  平台发展到足够大的规模,提效、稳定变成一个重要的话题。可以提供不同营销场景下的订单,如:团购、预购等。
  订单系统架构的演变
  最佳实践
  实践1:重试和补偿多个机器重试不能同步正在重试的服务也可能宕机,需要保存状态
  实践2:幂等性重试必须带上唯一的有意义的ID每一个服务的调用都必须是幂等的
  实践3:一致性实践订单系统有强一致性需求无单点故障的分布式系统的一致性是非常困难的问题
  系统优化
  数据库读写分离
  基本的原理是让主数据库处理事务性查询,而从数据库处理SELECT查询。数据库复制被用来把事务性查询导致的变更同步到集群中的从数据库。当然,主服务器也可以提供查询服务。使用读写分离最大的作用无非是环境服务器压力。
  好处增加冗余增加了机器的处理能力对于读操作为主的应用,使用读写分离是最好的场景,因为可以确保写的服务器压力更小,而读又可以接受点时间上的延迟。
  数据库分库分表
  不管是采用何种分库分表框架或者平台,其核心的思路都是将原本保存在单表中太大的数据进行拆分,将这些数据分散保存到多个数据库的多个表中,避免因为单表数据量太大给数据的访问带来读写性能的问题。所以在分库分表场景下,最重要的一个原则就是被拆分的数据尽可能的平均拆分到后端的数据库中,如果拆分的不均匀,还会产生数据访问热点,同样存在热点数据因为增长过快而又面临数据单表数据量过大的问题。
  而对于数据以什么样的纬度进行拆分,大家看到很多场景中都是对业务数据的ID(大部分场景此ID是以自增长的方式)进行HASH取模的方式将数据进行平均拆分,这个简单的方式确实在很多场景下都是非常合适的拆分方法,但并不是在所有的场景中这样拆分的方式都是最优的选择。也就是说数据如何拆分并没有所谓的金科玉律,更多的是需要结合业务数据的结构和业务场景来决定。
  下面以大家最熟悉的电商订单数据拆分为例,订单是任何一个电商平台都有的业务数据,每个平台用户提交订单都会在平台后端生成订单相关的数据,一般记录一条订单数据的数据库表结构如下:
  订单数据主要由三张数据库表组成,主订单表对应的就是用户的一个订单,每提交一次都会生成一条主订单表的数据。在有些情况下,用户可能在一个订单中选择不同卖家的商品,而每个卖家又会按照该订单中自己提供的商品计算相关的商品优惠(如满100元减10元)以及按照不同的收货地址设置不同的物流配送,所以会出现子订单的相关概念,即一个主订单会由多个子订单组成,而真正对应到具体每个商品订单信息,则保存在订单详情表中。
  如果一个电商平台的业务发展健康的话,订单数据是比较容易出现因为单个数据库表中的数据量过大而造成性能的瓶颈,所以需要对他进行数据库的拆分。此时从理论上对订单拆分是可以由两个纬度进行的,一个纬度是通过订单ID(一般为自增长ID)取模的方式,即以订单ID为分库分表键;一个是通过买家用户ID的纬度进行哈希取模,即以买家用户ID为分库分表键。
  方案每个订单指定唯一的订单号,订单号哈希除以32取余,存到相应的库和表;用户端,建立userorder中间表,根据用户ID分表,此表字段:用户ID,订单号,时间。用户查询时,在此表查询分页排序,再根据订单号去相应的订单表查询详情;商户端,建立merchantorder中间表,字段:商家ID,订单号,时间。商家查询时,查此表分页排序,获取订单号再去相应的订单表查询;站点运营人员,如果想根据商户查,就用3,如果像根据用户查,就用2,如果想要全部订单按照时间排序,也根据时间建立中间表timeorder,字段:时间,订单号,在这里查好后再根据订单号去查订单详情。
  所以从对数据尽可能平均拆分这条原则来看,按照订单ID取模的方式看起来更能保证订单数据的平均拆分,但我们暂时不要这么快下结论,也要根据不同的业务场景和最佳实践角度多思考不同纬度带来的优缺点。六、总结
  电商平台的需求一直在变化,随之订单系统的架构也会随之变化,架构设计就是一个持续改进的过程,这篇文章还有好多细节未提及,如果你想把订单系统做的更好,需要更加深入系统的每一个环节,比如:容灾、灾备、分流、流控都需要慢慢雕琢,在架构中没有完美的架构只有平衡的架构,不要追求单点的完美,而是要追求多点的平衡。

科莫多巨蜥的毒液到底有多可怕?2009年,一名31岁的渔民安瓦尔,在印尼科莫多岛上采摘水果,结果不小心从水果树上掉了下来,刚好踩到了一只巨型蜥蜴,蜥蜴瞬间就朝他扑了过去,咬住了他的腿,之后又咬住了他的手臂,身体武汉未来的房价会涨到100000元平米吗?这个问题的答案是肯定的!以目前的趋势,未来武汉房价必然达到10万的水平,只是时间长短的问题。2010年至2017年,短短七年间,武汉的房价已经翻了3番,目前,武汉部分高端楼盘如洞庭兰州青白石片区,中央公园怎么样?兰州北拓的黄金区域,目前基础交通还跟不上建设需要,交通滞后可能会成为十四五期间兰州青白石片区发展的的最大障碍!不过就兰州地理位置和城区格局而言,青白石片区是离主城区最近的待开发区域农民为什么不在国家统计失业范围之内?中国有四个儿子,大儿子叫工人,二儿子叫子弟兵,三儿子叫公务员,四儿子叫农民,所以四儿子就没有纳入统计失业包括养老金范围,因为四儿子有金山银山还有三分地。农民有土地,这是农民可以赖以农村成立社区是什么意思?很多农村驻有村委会办公室,同时也驻有社区管理委员会办公室,特别是在城市郊区的农村和街道的农村都同时设立了村委会和社区管理委员会,很多人弄不明白是怎么回事。那农村成立社区是什么意思呢农村里的剩男,为何一剩再剩呢?到底是什么原因?男女比例失调。计划生育只要一个孩子时,受封建思想影响,都拚命要男孩,等他们长大了,很难找到媳妇。一,农村姑娘远嫁,二,女孩见少,三,彩礼高,四,剩男挣钱少。我就一大龄剩男!个人亲身抖音付费直播试水,看直播要给钱了?我们应该如何思考?使劲收,最好是家人们看的话,一分钟100块钱。毕竟粉丝听话的很。毕竟人设都设计好了打PK,卖货摆错价格,怒亏2个亿回馈粉丝。没事就怼工厂,怼员工反正就是赔钱回馈粉丝。赔完还得补交税马上就要退休了,退休工资才3650元太少了,怎么办?3600不少了。我企业工龄32年,退休时退休金只有2200,涨了这么多年还不到3000。知足常乐吧!如果身体不好,这些钱也够生活了,如果身体还可以,就找一些力所能及的工作,打打工补南宁五象新区未来的发展潜力很大吗?五象新区无法成为国家级新区!!!目前看来,五象新区的潜力也就这样了。我们对比一下贵阳的贵安新区,贵安新区的面积是1700平方公里,由贵阳市的郊区和安顺市合并得来。是全国第8个国家级如果把三峡大坝加高10米,截留更多的洪水,可行吗?我国的三峡大坝,作为当今世界上最大的水利枢纽工程,位于湖北省宜昌市上游,距下游葛洲坝水电站38公里,三峡大坝全长2309米高185米,呈梯形形状,集发电旅游航运调控洪水于一身。三峡大家有经历过亲人去世吗?是怎样走出痛苦和想念的?2018年9月1日下午3点8分,我的妻子在医院里停止了呼吸。她的眼睛没有闭上,我流着泪,帮她合上了双眼。我永远失去了我最亲近的爱人,孩子永远的失去了妈妈。一位好妻子,好女儿,好姑妈
少吃点糖,给身体带来的好处有这么多!近年来,中国人对糖的消耗量居高不下,有调查显示,每个中国人在这一年里吃下了19。6公斤的糖,相当于每天吃了50克糖。与30年前相比,中国人的糖摄入量整整上升了5倍。各科医生提醒你少近视到底该怎么护眼?试试这样做近视不是突然就几百上千度的,高度数近视都是因为长期对眼睛不重视,日复一日的度数就上去了,所以不管你现在是近视还是不近视,低度近视还是高度近视,保护眼睛都是很有必要的。补充蛋白质。巩头皮屑多怎么办?很多人都会发现自己在梳头发的时候,头上会掉下像雪花一样的头皮屑。那头发长头皮屑该如何护理呢?下面我们就来了解一下头皮屑过多的2种护理方法。按摩法用按摩法治疗头屑过多,往往可收到较好NBA西部第一掘金本赛季三杀勇士2月3日,NBA常规赛,掘金134117大胜勇士。勇士能否冲击本赛季的季后赛,对于勇士而言还是一个未知数掘金队的战绩高居联盟第一,实力出色。毫不夸张地说,掘金很有希望竞争本赛季的总步行者想用ampampquot火箭登ampampquot的经典战术绝杀湖人,施罗德精彩走位将其破解2月5日,湖人112111险胜步行者后,拿到两连胜,排名升至西部第十二,与西部第四的胜场差也缩小到了3场。从第十三的雷霆到第四的独行侠,胜场差仅有3场,西部竞争之惨烈,令人唏嘘。此华熙生物赵燕保护中国民族文化,助力推进文化自信与民族自信日前,华熙生物董事长赵燕出席央视财经频道重磅节目遇见大咖,分享华熙生物(688363。SH)的企业成长历程和经营管理理念。在华熙生物的发展历程中,始终坚持在自身发展同时,积极承担企三非洲旅游必去的十大著名景点毛里求斯岛毛里求斯素以风光旖旎著称于世,白色沙滩和碧蓝的海水干净得出乎想象,欧洲富豪把它称为欧洲的后花园。大文豪马克吐温曾经这样形容毛里求斯这儿是天堂的原乡,天堂原是仿照毛里求斯岛而建的。毛这个元宵,江南灯会为长三角带货对于熬过寒冬迎来春天的长三角旅游市场,今年的春节格外热闹。这个元宵,各地灯会无疑将成为市民游客的打卡地。灯火潮带动旅游潮作为国家级非物质文化遗产项目,2023年豫园灯会以山海经为蓝黄山市1月迎客212万人次2月开局良好大皖新闻讯日前,记者从黄山市文旅局得知,1月份,黄山全市纳入监测的66家景区景点共接待游客212万人次,同比2022年增长187,较2019年同期增长50。3,创单月历史新高。其中可能成为背景板?亚历山大谈对阵湖人要像今晚一样平常心对待直播吧2月5日讯今日NBA常规赛,雷霆153121大胜火箭。赛后亚历山大接受采访,谈到即将对阵湖人,而这场比赛因为詹姆斯有可能成为历史得分王备受关注,说道不管在哪种情景下,只要我们俄罗斯运载火箭完成组装央视新闻客户端当地时间2月4日,俄罗斯国家航天集团发布消息称,用于将进步MS22运输飞船送入太空的俄罗斯联盟2。1a运载火箭已在位于哈萨克斯坦拜科努尔航天发射中心完成组装,即将发射
友情链接:快好找快生活快百科快传网中准网文好找聚热点快软网