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

一、业务背景

转转作为国内头部的二手闲置交易平台,从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),更多干货实践,欢迎交流分享~

猜你喜欢

转载自juejin.im/post/7128227554053341221
今日推荐