携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第5天,点击查看活动详情
问题描述
在最近的一次实际测试当中,接收端接收到的字符串莫名其妙的多添加了一堆空格,导致MD5被修改,以至于导致链路失效。
这不禁让我想起了《硅谷》最后一季中,主角就要成功,却被发出的消息的末尾被添加一个句号,而使得主角不断分析,并最终找到导致整个应用都无法逃过的终极原因——都被背后巨大的AI给吞噬掉硕大的企业的场景。
问题排查
此次下载链路有点业务化,分为四块。云端编辑完所有文件之后发送给审核端,审核端进行自动化审查之后转发给边缘段的网络接收器;网络接收器随即直接传输给边缘执行端。
在问题的排查当中,找的每一个人都说问题没有出在他们身上,但是问题就存在于这些链路当中啊!!!你说不是你们的问题,总不会是代码的问题吧。因此关键在于如何排查,以及如何让对应负责部门进行配合。
分析过程:首先云端到审核端的数据经过对比,没有问题。网络接收器端到边缘段出现了问题的代码,这就说明问题出现在 审核端到网络接收端、网络接收端到边缘段;这两段链路当中,或者说这三者当中存在。
……
解决方法
尽管问题出现的可能性被缩小到上述范围,但是未来随着网络环境不断复杂,仍然可能出现类似的问题。因此为了保证程序的健壮性,需要在末端添加一段截取程序,对于接受的文件进行多余字符的截取,但是要做到这一点,就需要保证文件的起止字符需要固定。对于通过json
传输的文件是可以接受的。