我们在开发企业应用的时候,很多时候需要用到第三方系统,或者需要和第三方系统交互。那么,这时候如何保障交互的成功率,做好这种类型的交互系统?
业务流程清晰,业务状态明确
首先,和第三方系统的交互,最为重要的是交互的成功率、效率、数据完整性和可追溯。那么,这时候在开发之前,需要把业务逻辑明确清楚,流程有几步,每一步的状态是什么,失败怎么处理,可以怎么样跳转等等,每个业务系统都不一样,需要梳理清晰。
分层明确,边界清晰
在代码层面上,第三方系统提供的接口,自己系统应该在抽象一层,这一层开始会是和第三方交互的真正入口,不能把第三方接口散落到自己程序的各个地方。
如果是HTTP提供的接口,那么自己要封装好通信层。
这样提高系统的可维护性。
清晰的LOG
log必不可少,这是追查问题的主要手段。在前面分层清晰的前提下,添加log,准确辅助定位到出问题的地方。
是通信出了问题,还是第三方系统出现业务问题,还是自己的系统出现问题,需要能在第一时间确定。
数据完整性
很多时候,虽然依赖第三方系统,但是原始的业务数据自己要存储一份。比如,程序利用七牛的图片存储,但是自己的业务系统依然要存储图片的字节内容。这样才能把主动掌握在自己的程序手中,出了问题才不会干瞪眼。
程序开发,需要严密的逻辑,不能靠幸运。
异步调用
异步调用,也就是说和自己的业务逻辑分离开。这样,能够最大程度上减少对第三方系统的依赖,即使对方系统宕机,自己的业务系统依然能够正常运转,只是会不断累积需要对方需要处理的业务数据。
重试次数
从自己的业务出发,和对方约定重试的次数,尽量保持业务成功完成。重试,能够整体提升业务的成功率。
异步调用和重试可以由Spring的线程池框架完成。
完善的报警机制
通过上面的措施,在一定程度上保障业务的成功率。更为关键的是,如果是重要的业务系统,要根据上面的log和业务数据完善报警机制,更加积极的发现错误和进行人工干预。