写点什么

多业务模式下的交易链路探索与实践

  • 2022 年 8 月 05 日
  • 本文字数:2120 字

    阅读完需:约 7 分钟

一、业务背景

转转作为国内头部的二手闲置交易平台,从 2015 年成长至今,业务模式由 C2C 拓展至 B2C、C2B、B2B、C2B2C 等多模式并存的新格局,品类覆盖手机、图书、游戏等三十余种。


转转目前采用的是中台模式组织结构,中台负责提供通用的交易能力,灵活快速响应业务需求;业务方负责前台探索创新,为用户提供有价值的服务。

二、交易中台面临的问题

交易中台订单系统承载了全公司多数业务的通用订单流转能力,但是各业务模式的交易链路复杂多样、同中有异,例如下图:



  • 1、不同业务模式交易链路主节点有差异,且锁库存、发货、结算等节点也有差异

  • 2、需要同时支持多种业务模型共存,且互不影响

  • 3、交易链路可拓展,节点可复用,维护成本低,响应速度快,满足业务日常快速迭代

  • 4、链路稳定,数据准确,流程可视化,能快速定位问题


显然传统硬编码的方式已无法满足需求,FSM 有限状态机呼之欲出。

三、交易链路实践与探索

3.1、交易链路实践之 FSM 有限状态机

FSM 有限状态机是什么?

FSM 有限状态机(Finite-state machine, FSM), 是转转交易中台提供的一个通用状态流转方案,用于在有限个状态之间通过事件动作转移的数学模型。常用来描述对象在它的生命周期内所经历的状态序列,以及如何响应外界的各种事件等。

FSM 方案能做什么?

FSM 可快速搭建任何有流转的单据链路,同时解决链路相关的离线任务、事务消息等问题。

FSM 的四要素

FSM 将交易链路的状态流转进行了抽象和结构化,主要分为 4 个要素,即当前状态(现态)、事件、动作、目标状态(次态)。其中“现态”和“事件”是因,“动作”和“次态”是果,如下图所示:



  • 现态:指当前所处的状态。

  • 事件:又称为“条件”。当一个事件发生,将会触发一个动作,或者执行一次状态的迁移。

  • 动作:条件满足后执行的动作。动作执行完毕后,可以迁移到新的状态,也可以仍旧保持原状态。动作不是必需的,当条件满足后,也可以不执行任何动作,直接迁移到新状态。

  • 次态:条件满足后要迁往的新状态。

FSM 实战

在转转交易中台订单系统,抽象了符合交易场景的状态角色:


  • 状态关系:初始状态、目标状态

  • 角色:不同角色有不同的操作权限,比如卖家、买家、系统、客服

  • 操作:对应事件 Event

  • handler:对应动作 Action 实现


FSM 可视化交易链路

运营后台可查看指定交易链路 FSM 状态机的状态流转全景图,如下图:



FSM 解决了交易主链路节点的流转问题,但是针对无状态的单节点子链路不适用,例如下单节点,包含商品、用户、地址、库存、促销、埋点等多维信息的校验与整合。那么如何在保障下单链路的拓展性、复用性、稳定性与高性能并存呢,请看下面的并发模型探索与实践。

3.2、交易链路实践之基于 future 的分阶段并发模型

关于交易下单场景,外行人看就是创建一个订单,一个 insert; 其实不然,其中的逻辑复杂度远不止这些,我们来看下单需要做哪些逻辑:


  • 信息查询(商品、用户、地址、库存、活动、红包、业务线、标签等)

  • 校验(库存校验、地址校验、红包校验、商品周期校验、服务校验、价格校验、积分校验、购买次数校验等)

  • 风控拦截

  • 订单信息组装

  • 锁库存类(虚拟库存、实物库存、服务库存、锁红包、锁积分)

  • 活动预算扣减

  • 持久化(创建订单,创建支付单)

  • 操作流水,日志埋点等等


以上只列了关键节点并不完整,意在表达下单逻辑的复杂性。

a、传统过程化串行模型:


显然,传统的过程化串行模型,无论从性能方面,还是从代码的灵活性、拓展性性方面已经无法满足我们的需求,所以这里我们下单采用了“基于 future 的分阶段并发模型”

b、基于 future 的分阶段并发模型:


相较于传统过程化串行模型,有如下优点:


  • 多线程使接口整体性能大幅提升;

  • 将代码更具功能进行了抽象和结构化,分割成相邻状态的最小单元,当于搭建乐高积木,复用性显著提升;

  • 拓展性与可维护性得到了质的飞跃;


但也存在一些缺点:


  • 并发严格按照分组划分,组内耗时受约于最长任务耗时

  • 分组划分下,线程池利用率不饱和

3.3、交易链路探索之基于事件驱动并发模型

转转公司 Avenger 系列提供了一个更加高效的并发组件(Avenger-Ultron),比原有的分阶段并发模型更加高效。



目前,该并发模型已广泛应用于公司内各业务线的复杂并发场景(一次用户请求接口内部需要聚合几十次 rpc 查询的信息)。


如果说,从传统过程化串行模型,进化到基于 future 的分阶段并发模型,是从 0 到 1 的过程;那么从基于 future 的分阶段并发模型,进化到基于事件驱动并发模型,可以看作从 1 到 100 的进步。最后加上拓扑图、监控、熔断、降级等周边插件 or 工具的完善,可实现 100 到∞的跨维度提升。

四、总结

并发模型解决无状态的复杂并发场景(如商品列表页、详情页、首页等),而 FSM 主要解决复杂业务场景交易链路状态流转的问题,但 FSM 的应用场景不止于交易订单,还可用于其他有状态的链路场景,比如 OA 工作流,质检流水线等。


FSM 只是一个框架,还需要搭建一整套基于它的外围业务逻辑,在交易链路状态流转的过程中,业务逻辑才是我们的肌肉。业务逻辑与框架共同组成了我们交易中台的技术体系,从而让技术成长更加健康,这也许就是中台的魅力。




作者简介

郭世杰,转转交易中台研发工程师


转转研发中心及业界小伙伴们的技术学习交流平台,定期分享一线的实战经验及业界前沿的技术话题。


关注公众号「转转技术」(综合性)、「大转转 FE」(专注于 FE)、「转转 QA」(专注于 QA),更多干货实践,欢迎交流分享~

用户头像

还未添加个人签名 2019.04.30 加入

转转研发中心及业界小伙伴们的技术学习交流平台,定期分享一线的实战经验及业界前沿的技术话题。 关注公众号「转转技术」,各种干货实践,欢迎交流分享~

评论

发布
暂无评论
多业务模式下的交易链路探索与实践_中台_转转技术团队_InfoQ写作社区