如何为外卖业务选择合适的网站平台?
摘要:做网站时会遇到什么问题,做外卖在哪个网站做好,网站备案技巧,有哪些免费的ppt模板下载网站订单,业务的核心模块; 一、背景简介 订单业务一直都是系统研发中的核心模块&
做网站时会遇到什么问题,做外卖在哪个网站做好,网站备案技巧,有哪些免费的ppt模板下载网站订单#xff0c;业务的核心模块#xff1b; 一、背景简介
订单业务一直都是系统研发中的核心模块#xff0c;订单的产生过程#xff0c;与系统中的很多模块都会高度关联#xff0c;比如账户体系、支付中心、运营管理等#xff0c;即便单看订单本身#xff0c;也足够的复… 订单业务的核心模块 一、背景简介
订单业务一直都是系统研发中的核心模块订单的产生过程与系统中的很多模块都会高度关联比如账户体系、支付中心、运营管理等即便单看订单本身也足够的复杂 业务在发展的过程中必然会导致订单量的持续增加订单自身、数据体量、实现流程都需要不断的迭代更新如果在订单流程的研发初期没有相对全面的考量那么很有可能导致中后期的重构
从实践经验上说围绕订单业务建议过度设计轻量级分步实现
在产品初期先做好全面的设计场景和流程上做好可扩展性的保留在数据层面规划好不同体量的应对方案走在订单业务的前面避免被动尽量不要被业务的发展和演变甩在身后
二、订单业务
1、订单体系
订单体系从角色上看主要涉及用户、商户、平台三个核心参与方其订单流程的搭建就是围绕三方的交易场景展开 这里需要说明一些细节商户可以是第三方商家也可以是平台方自己不影响概念上的划分商品也存在多种形式所以用交付来描述可以覆盖物流的定义
用户通过应用端进行商品的选择和下单平台实现订单交易链路和支付能力以及对整个流程的调度商户提供商品和交付能力
在图中只是围绕订单体系做一个框架性的宽泛描述在成熟的订单业务中其复杂程度远超上图下面围绕核心节点来细致分析
2、流程管理
2.1 流程拆分
订单的业务属性是极高的流程本身也比较复杂从不同的参与方来看其流程分段策略完全不一样这里仅站位研发视角把订单逻辑分为创建、支付、交付三个阶段 订单创建围绕用户的下单路径做管理从商品的访问点击并选中到购车下单或者直接下单从而完成订单的创建订单支付各种支付渠道的对接是交易场景的基础功能订单的核心状态即支付成功订单交付在订单支付完成之后开始进行商品的交付流程可能是商家的发货或者服务提供交付成功即订单完成
如果将整个订单场景统筹起来看的话还存在很多隐性的流程与订单衔接的上下游业务还有很多这里只是专注于订单功能自身的边界做划分
2.2 正向流程
在理想的状态下订单从购物车结算下单开始到交易支付完成最终到商家完成交付是非常复杂的流程链路 在实现上订单的正向流程链路都是分段管理的比如购物车、订单创建之后、支付完成、交付等诸多关键节点并不是一个即时的流程
2.3 逆向流程
对于订单这种极度复杂的流程导致订单流程逆向的情况要细致的考虑并且提供相应的解决方案尽量确保程序可以兜底流程逆向人工干预的成本和风险都极高 取消动作用户主动取消订单发起退款流程等商户因为交付失败主动发起流程退回等动作超时情况订单创建后指定时间内没有支付订单支付后指定时间内商家没有交付等多个超时场景节点异常系统平台的在订单调度时的业务异常或者程序异常又或者支付等第三方渠道异常等
这些常见的异常问题在一般的场景下可能不会引发效应问题对于订单这种异步解耦的复杂场景中需要一个稳定的机制快速执行逆向流程比如下单后未支付导致持续锁定库存或者交付超时影响用户体验等
2.4 调度与监控
订单属于核心流程又兼具复杂的特性自然依赖系统平台的调度与监控手段无论是正向还是逆向流程都依赖调度手段提高订单的完成率或者促使逆向流程有序执行在这个过程中需要对订单路径有完整的监控能力 调度机制更侧重订单被动状态的处理多见于各种超时的场景用来提前对用户和商户进行消息提醒触达或者进行订单流程的处理
监控策略更侧重对订单的主动干预处理在发现订单中断或者异常时可以通过产品层面的入口进行主动修复或者系统层面的主动重试当然也不排除最后的手动干预
3、结构设计
围绕订单场景涉及的数据结构非常复杂不论是商品还是支付亦或是订单自身的结构在具体的业务中都会拓展出很多关联表 订单结构的设计和管理基于场景复杂度考虑可能要融合商家、仓储货架、用户、渠道和类型等在订单量增长之后还需要结合业务场景进行数据体量层面的拆分处理
三、技术方案
1、订单ID
订单主体的唯一ID标识在数据体量不大的情况下使用表的自增ID主键即可从长期看的话并不友好如果订单量比较大可能涉及分库分表的流程则需要制定ID生成策略
UUID生成唯一字符串识别码订单ID直接使用即可雪花算法分布式ID生成算法策略生成的ID遵循时间的顺序自定义ID除了唯一的属性外在订单ID中添加其他的关键业务标识
2、并行与异步
并行操作在订单详情的加载过程中涉及到的查询信息非常多比如商品、商户、订单、用户等可以通过并行的方式提高响应的时间如果采用串行的方式则接口性能会差很多 异步操作订单是个复杂的流程显然不可能在一次流程中完成所有逻辑流程分段异步常规手段就是借助MQ消息的方式同样可以极大的提升服务性能不论是订单的正逆向流程都可以基于状态、事件、动作进行异步解耦处理 3、超时问题
订单超时问题的本质在于指定时间段之后需要执行一个动作比如最经典的场景下单之后超过15||30分钟未支付订单自动取消并且被关闭释放商品的库存并通知用户
实现一个动作延迟执行的方式有很多比如延期队列过期监听消息延时消费等不过这些方式在复杂的订单系统中并不常见主流的话还是采用定时任务调度的方式 任务调度时对订单的处理同样要确保业务流程操作的幂等性数据层面的一致性等问题如果出现异常单则进行重试分析异常原因不断优化流程也同样重要
如果订单体量大任务调度能完成吗
订单体量和订单实时量不是一个概念系统沉淀的订单量和任务要处理的量不是一个等级常规的数据体量做好分库分表的设计和查询优化即可不会成为调度任务的瓶颈问题
如果订单数据实时体量大比如每天超千万的水平
这就更不是应用的问题了订单体量能达到每日千万的规模公司会提前很长时间就把数据团队拉到应用团队中解决这种核心的棘手问题此前在数据公司搬砖时每日单量刚过百万就安排数据团队做解决方案了
4、分布式事务
订单涉及支付对接、库存管理、结算对账等各种复杂的流程自然对数据一致性有极高的要求如果数据层面出现问题导致异常单出现难免需要人工介入处理所以对流程的各阶段做好细致的事务和逻辑管理极其重要 订单流程是异步解耦的方式推进的在分布式事务的策略上追求的是最终结果一致性即可不过这并不妨碍在分段的流程中进行局部的事务管理事务成功流程正向推进事务失败流程重试或逆向回滚
四、数据方案
1、转化分析
经典的订单指标体系用户下单过程的路径统计从而深度的分析转化率问题不断的对流程和场景优化从而提高成交量 交易的转化路径分析是产品和运营重点关注的指标体系在数据层面埋点采集的数据通常是上传第三方平台方便进行用户和业务分析并且有助于同类客群的营销推广
2、分库分表
数据在到达一定体量之后需要进行分库分表的操作从而解决各种性能方面的问题将订单数据按照特定的维度进行计算从而将数据分流到不同的库表中解决读和写的瓶颈 基于订单ID计算拆分的逻辑是最常见的在特殊情况下也会基于用户ID或商户ID进行计算从而将相关的数据堆放在一起如果有必要也可以考虑多维度拆分的多写模式
3、数据同步
订单数据分库分表虽然解决存储问题但是也带来了很多查询方面的阻碍通过搜索引擎来解决查询问题也是常用的技术选型 订单数据在库和搜索引擎之间同步的方法有很多同步双写对数据的实时性要求极高异步解耦流程存在轻微的延迟定时任务存在明显的时效问题组件同步采用第三方数据同步组件订单场景的话推荐同步双写的方式。
ENDENDEND
