涉及多厂商对接的兼容性设计
兼容多厂商对接
- 数据模型抽象:针对业务场景,充分解构,提取出领域模型,能灵活地覆盖各种厂商。
- 程序结构抽象:归纳不同厂商的对接方式,沉淀出重叠的逻辑,形成可复用部分,将这块逻辑下沉到平台;对于各厂商的差异部分,需在平台预留SPI扩展点,厂商各自实现,利用策略模式,利用数据标识来动态选择具体的执行策略。
优化
- 事务内部不能包括RPC和三方调用,可以把数据写入上下文,最后落库时加事务【事务方法一定要跨类调用,且事务所在类一定要基于interface来实现,避免事务失效】。
- 业务操作需要考虑幂等:
- 更新时推荐乐观锁:可基于版本,也可基于字段(看能否容忍ABA问题);
- 可以基于唯一性主键约束;
- 某些场景可以考虑加分布式锁;
- 流程化的代码考虑用BPM,不做要求,但代码要清晰地表达出主流程,避免大方法;
- 方法和变量的命名要做到准确、自描述;方法入参过多则尽量封装为对象;方法返回值可以通过Optional容器处理判空逻辑;
学习使我充实,分享给我快乐!