耦合问题
有些时候我们在进行接口调用的时候,比如说一个push推送接口,有可能会涉及到不同渠道的推送,以我目前业务场景为例,我做结算后端服务的,会与金蝶财务系统进行交互,那么我结算后端会涉及到多个结算单类型,如果每一个种类型的结算单都去暴露一个contoller接口给前端提供,而且其实对接第三方的接口,有些接口是共通的;
前端涉及到的问题
- 需要调用后端多个controller,不同接口不同的传参数,如果遇到后端接口修改,会涉及到多个页面的修改,耦合度很高;
- 需要对多个按钮设置权限配置;
后端涉及到的问题
- 需要每个业务接口,都去写一个对接第三方接口的push推送方法,无形中增加很多重复的代码,耦合度也很高;
- 如果涉及到第三方服务接口改造,后端接口也需要进行更改,会修改大量代码;
如何解决
- 创建对接第三方服务的微服务,站定为tps服务,该服务只作为一个后端微服务,与第三方服务进行对接,并且合理封装调用参数,将公共参数提出进行封装;
- 后端其余业务系统对接这个独立的微服务,比如订单、结算、供应商系统对接这个服务,由tps服务统一提供对接接口,其余服务实现这个tps提供的feign接口;
- 业务系统只需要关注service层业务的实现,无需处理对接的业务逻辑;
大致的流程图就是这样的