业务模块系统设计的思考

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/piqianming/article/details/81976358

 关于同步异步混合系统设计的一点思考

       本系统设计的异步同步混用的场景,在设计时,首先一点就是能够将整体的处理逻辑进行拆分成小单元,然后再将小单元打乱重排,保证串行和并行的合理性,串行前后单元的依赖关系,避免并发过程中状态的相互依赖。

 

  • 串行的场景

如上图,串行的场景是一个较为简单的实现方式,为了降低业务改造的难度,并行化的过程也可以串行话解决。   

    1.接收处理,状态为初始化的状态,这是一个系统的入口
    2.状态A,状态B,状态C就是处理事件A,事件B,事件C的三个不同阶段所对应的状态,处理,A,B,C三个时间的结果只有三种,要么就是可以update状态重新跑一下的异常,要么就是成功后轮转到下一个状态,要么就是失败(这种就是终态,不可逆的情况)
    3.处理A,B,C的的核心接口是一个对外的方法,至于说调用处理相应事件的方式,可以基于业务考虑。可以是定时任务,可以是人工审核,可以是异步消息处理。

针对上边的描述,在接口设计时,主要提供一下几个接口以实现核心逻辑:

  •       create   : 受理某个事情的总入口
  •       processA : 处理A事情的入口
  •       processB : 处理B事情的入口
  •       processC : 处理C事情的入口
  •       query    : 提供查询方案
  •       modify   : 提供底层变更接口,上层可以基于业务逻辑,控住状态的变更方向
  • 串并行的场景

串并行的场景是深刻剖析业务逻辑,在拆分业务时,能够清晰把握前后依赖关系的一种思路。如下是串并行状态流程图:

串行的场景中,对于状态的流转同样也是串行的,因此一个字段就可以满足要求,但是,并行化后,一个字段显然无法满足这种需求。

所以针对并行化的B分支和C分支需要单独设置状态,至于说串行的A分支可以在B,C的状态上进行变更操作。

另外需要注意的一点:并行化的操作需要同一记录进行锁操作。

猜你喜欢

转载自blog.csdn.net/piqianming/article/details/81976358