系统兼容性升级,同步转异步兼容升级思维转变

本文中心:

同一个流程升级功能

一种是在原来接口上修改.影响所有接口.

如果发现对老功能存在不兼容的问题,那么记住要转换思维,要写到新的接口上.

例子:

   结束计费按钮.

   服务端需要做.

  1.  获取订单信息

2. 结束账单. 同时返回账单信息.(幂等接口,账单已结束就直接返回,即时第二次调用时位置信息是新的,也直接返回, 对信息不校验)

3. 然后向收银台收单

4. 结束订单,修改订单状态.

问题:

1. 接口太重了.影响成功率.

2. 开发周期短,一期先上同步.二期怎么改回异步.

担心:

       1. 乘客端调用 finishOrder

2. 进入支付页面.

第一个想法:

       1. 将接口异步化,然后前端使用异步化. [ 对乘客无感知,还是转菊花]

       2. 菊花背后是 状态轮训+tcp 通知. 局部接口的状态查询可以快速点. 比如支付成功之后回调的查询.

       3. 服务端接收到请求,除了位置判断外直接返回. 其他复杂操作异步化执行.

问题: 一旦这个功能改造后,老版本就会出现问题.  

         1. 如果异步化没有执行成功或者前端先进入下一个流程尝试支付. 都会被收银台拒绝, 无此 outTradeId.

          所以想着想着必须一期就上一个轮训接口,否则升级二期成异步之后,老版本就会有问题.

正确解决方案:

   1. 既然老版本会影响.那么就应该新开一个接口. 老接口的行为方式不变,还是同步. 新接口采用新的方案,采用异步的方式.这样就不会不兼容了. 原接口上功能升级不能不兼容,那么就不要想着在原接口上兼容升级. 不要太轴,总能想到解决方案. 不要太关注细节.

 

 

 

  

原文地址:https://www.cnblogs.com/fei33423/p/8081944.html