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