范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文

供应链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取余,存到相应的库和表;用户端,建立user_order中间表,根据用户ID分表,此表字段:用户ID,订单号,时间。用户查询时,在此表查询分页排序,再根据订单号去相应的订单表查询详情;商户端,建立merchant_order中间表,字段:商家ID,订单号,时间。商家查询时,查此表分页排序,获取订单号再去相应的订单表查询;站点运营人员,如果想根据商户查,就用3,如果像根据用户查,就用2,如果想要全部订单按照时间排序,也根据时间建立中间表time_order,字段:时间,订单号,在这里查好后再根据订单号去查订单详情。
  所以从对『数据尽可能平均拆分』这条原则来看,按照订单ID取模的方式看起来更能保证订单数据的平均拆分,但我们暂时不要这么快下结论,也要根据不同的业务场景和最佳实践角度多思考不同纬度带来的优缺点。六、总结
  电商平台的需求一直在变化,随之订单系统的架构也会随之变化,架构设计就是一个持续改进的过程,这篇文章还有好多细节未提及,如果你想把订单系统做的更好,需要更加深入系统的每一个环节,比如:容灾、灾备、分流、流控都需要慢慢雕琢,在架构中没有完美的架构只有平衡的架构,不要追求单点的完美,而是要追求多点的平衡。

泰安新泰的房子是未来第二个鹤岗的房价吗?山东省泰安市新泰市新汶良庄煤矿西岭社区的房子3万元一套都卖不出去,想抄房的去买吧,保你赔个底朝天。新泰市的煤炭都快挖没了,有很多塌陷地,新汶矿业集团把很多煤矿工人都分流到内蒙,山西到南街村打工,不会让你吃一分钱亏,并有福利,是真的吗?这个打工的和村民的待遇一样吗,肯定存在着剥削,那么这个问题还是和它们的宗旨相悖共产主义小社区人人想往!社会主义制度讲得是人人平等,这种情况是真的。其实就和有些单位招工一样,供吃供住个体工商户能享受小微企业增值税的税收优惠吗?个体工商户可以享受小微企业的税收优惠政策,既接月计算的月营业额30000元以下,按季计算的季营业额90000元以下,可以享受免交增值税的优惠政策。个体户和小微企业的概念。在我国,当作为农村60后的你打算怎么养老?还能像从前依靠子女养老吗?今年是2020年,而如果是60年出生的话,今年已经满60周岁了。对于在城市生活的人来讲,很多人可能已经退休在家安享晚年了,但是对于农民来讲,因为没有退休的概念,也不可能在60岁的时过年上坟有什么讲究,可以提前吗?人有人的规矩,鬼有鬼的讲究,每年上坟就这几个节令,怎么会乱提前呢?鬼节每年为四个节令,即清明。七月十一。十月初一和除夕,一般新坟是节令的头一天上坟,其它时间不能乱上,不然即使你上坟退休了,把户口迁回农村,对退休金有影响没有?城镇职工退休后,把户口迁回农村,过去是经常有的现象。主要是过去双职工的人员比较少,一方在农村,一方在城镇工作,退休后城镇的一方便把户口迁回农村,去农村养老,这是再正常不过的现象了,为什么感觉现在的中国家庭,特别是40岁以下的家庭基本不看电视?因为工作忙,还需要学习增加自己的工作能力,还有要照顾孩子。还有一部分人是打游戏!一是工作忙,二是电视节目单一,手机可以替代电视。一,电视节目千篇一律。抗日神剧,娱乐至上,漫天广告,有人说60岁到70岁是老年人的黄金阶段,你同意这个说法吗?这个说法是合理的。正常人进入六十岁后,如果没有基础代谢性疾病,其精力能力处于老年人的黄金阶段,在这个阶段,他们走的动,吃的好,睡的香,平时干些力所能及的家务也不费力,还可以做好自己40岁了拿不出一万块钱存款,有人跟我一样吗?如果你在大街上做个采访,随便问一下路人人生40岁,应该有多少存款?估计会有很多人回答你,应该有三十万存款有五十万存款,甚至还会有人说一百万。而实际上呢?人生40岁,连一万块钱存款都养儿防老和干保安养老哪个更靠谱?养儿防老和当保安养老都不靠谱,只有自强不息才靠谱。世间上没有靠谱的定论,佛说求人不如求己。我一个七叔有二儿二女,去算命时说儿子不能给他养老送终,只有靠半子女婿,七叔给人家摊子都推了首付75万,总预算在180万上下,合肥买房有什么好选择吗?强烈推荐买二手房,马鞍山路沿线有几个盘,均价1万多,商业氛围好,有地铁有高架,学区虽然不算顶级,但是世纪阳光和海顿那也算不错的学校,万振逍遥苑等几个楼盘比较老了,海顿公馆,和昌都汇
一碗爱心面让温暖延续70岁以上老人,免费来吃牛肉丸子面!3月6日,山西临汾云丘山中和文化旅游节现场,放在树杈上的大喇叭循环播放,提醒赶会的老人来吃一碗热气腾腾的免费面条。送面的小伙子叫刘俊宏,是山西临竹海游三月,春风和煦,微风不燥,万物复苏,又到了春游的好时节。和闺蜜准备好行妆,我们踏上了去宜宾竹海公园的路程。虽然才是三八节过后的第六天,但是这里的游人却是人山人海。我们刚刚走进公园,冷知识分享了解厦门的市花市树市鸟厦门,海上花园城市,城在海上,海在城中,满眼的诗情画意。这里,四季鲜花盛开白鹭自由飞翔,满眼的碧海蓝天诗情画意,随处是人与自然的和谐相处。不管你是游客还是市民,有必要了解一下厦门的冯清利我送春联到农家我送春联到农家冯清利腊月的花果山,也惧冷畏寒,一直躲在云雾的包裹中不肯露面。看山,山无色听溪,溪无声。清晨的零星小雨,均匀地洒湿了地面,还好,没有结冰。预报说,雨雪要来,我们必须赶货车司机单脚开车还发视频炫耀耍酷?民警让你哭视频加载中华声在线3月15日讯(文视频全媒体记者虢灿实习生王美玉刘若蓉通讯员封跃林王强陈芳)动感的音乐配上摇晃的镜头,画面中却是一只脚在操控方向盘?近日,有网友在短视频平台上传了这图集雪山中畅饮,树屋里会友当咖啡馆卷入小城界面新闻记者界面新闻编辑蔡星卓如果你生活在三四线或更小的城市,会选择去哪里喝一杯咖啡?近日,谁在喝35元一杯的县城咖啡登上热搜,小城咖啡市场受到关注。据中国现磨咖啡行业白皮书,截至清华博士送外卖谋生?本人澄清相关疑问,曾创业失败负债百万在成年人的字典里面从来都没有容易二字,许多人艰难谋生,只为了给自己和家人创造更美好的生活。没有人的人生会一直顺风顺水,而人生如果缺少苦难和挫折,那么并不是完整的一生,对于清华博士莫房地产着力扩内需防风险促保障今年的政府工作报告释放了哪些房地产领域发展的政策信号?在报告今年工作重点部分,有3处提及住房与房地产市场相关问题。在着力扩大国内需求方面,政府工作报告提出,实施城市更新行动。在谈到春日,用味蕾赏花春回大地,万物复苏此时,各类千娇百媚万紫千红的花朵轮番绽放勾勒出一幅春光明媚万物竞发的图景图为昆明市郁金香迎来盛花期。中新社记者李嘉娴摄面对这般美景大家纷纷出游踏春,赏花拍照图为昆顺德农商行IPO候场四年何时敲钟?全面实行注册制之后,排队多年的城商行IPO似乎有了破冰的迹象。近日,广东顺德农商行重新递交招股书,准备在深交所主板上市。本次IPO,顺德农商行预计发行不超过16。94亿股,占发行后季后赛还有戏!雷霆追平湖人独行侠,升至西部第八,湖人降至第十雷霆今天以121107战胜篮网,取得3连胜,战绩来到34胜35负。湖人今天也大胜鹈鹕,战绩也来到34胜35负,独行侠目前的战绩为34胜35负,所以三支球队也打成了平手。由于雷霆相互