在做大型的分布式项目的时候,人数的增加,项目的复杂性增加,导致比独自开发小项目的时候更容易遇到问题。遇到问题的原因会有很多,这里记录几条自己最近工作过程中出现的。
问题
- 没有沟通好导致的问题,没有get到说话人的重点
我是做支付系统的,财务系统会调用支付系统的时候,会调用转支付的服务,转支付有同步返回的结果,有时候同步不能立刻给结果,可以在后续的异步通知中处理。但是大多数时候同步都有结果的,异步的结果只有在支付成功的时候才有。
当时电话中财务有问我:“所有的转支付都走回调了”,我回答:“可以”。
其实我有点忘了当时这句话,没有立刻听到他的意思,然后财务系统所有的结果处理都在异步通知那边了。最后就是一些转支付失败的记录没处理。
这个错误源于自己沟通的时候,不够认真。短租系统那边异步的处理和同步的结果处理是一样的… 分时系统的也是,放松了警惕,然后财务那里把结果处理放在异步了。
组长说以后不确定的东西,不要回答的太确定,到时候都是你的责任。
- 代码被其他人不小心覆盖出的问题,代码合并的时候太多冲突不注意
这就是分布式协作常碰到的问题,有时候好几个分支一起开发,分支的代码并不是严格的某个分支就在其它分支之前,关系比较复杂,情况很多,不小心就导致了代码被覆盖的情况,很可能就出现小细节被疏忽的情况。
上次测试给我提了一个bug,中午刚解决,下午又有问题了,因为调用我的接口系统说他的代码被覆盖掉了一部分,所以没有调用。
- 依赖第三方系统,却对第三方的系统不够熟悉导致的问题(状态码太多,第三方业务不了解)
比如说app内集成了支付宝的支付,很大情况下要和支付宝进行配合,但第三方系统的文档不一定能及时更新,而且文档也不能说明所有的情况,业务复杂,文字不容易一下子就说得清。
对于这种只好不断的去了解第三方系统,尽可能的了解第三方的设计要点。
- 自己内部一些代码不容易被测试覆盖到,但在线上才存在的问题
测试大部分情况都是只测业务,对你的代码不够熟,但有些情况在测试环境下是很难出现,比如测试环境下支付宝支付都是正常的,只有线上才出现一些问题,虽然测试可以帮我们避免不少问题,但是自己写的功能性代码,最好亲自实测一下。
最后
最近测试那边一直传过来小问题,记录一下。