2013 年,我负责的其中一块业务是日志数据的采集。当时用了一个百度内部自研的 BigPipe 传输系统。为了保证支持断点续传,我们会在本地保存一个 Mark 文件,这个 Mark 文件记录了当前所传输的文件位置,以便在机器死机重启时,可以继续按照 Mark 文件的记录进行传输。但这个 Mark 文件带来了不少麻烦——有时候莫名其妙的丢了;更严重的是 OP 在进行机器扩容时,经常把整个文件目录复制到新机器上,这样就把 Mark 文件一并复制了过去,而新机器上的传输点显然不是 Mark 文件所记录的,于是就导致数据传输错误。而每次数据错误,进行数据恢复的代价很大,OP 同学痛不欲生。为了解决这个问题,我把相关的同学召集到一起想办法,我说既然 Mark 文件这么容易出问题,我们能不能干掉 Mark 文件?大家的第一反应是不行,没了这个 Mark 文件怎么跟踪传输位置?我说可以把这个位置点信息记录在数据库中,通过机器 IP 地址来作为 Key 查询和更新。最终在内部达成一致,又找存储团队的同学来协商具体方案。经过一番周折,最终上线了。上线之后,半年内就再也没有出现过 Mark 点所带来的问题了,团队小伙伴也非常有成就感。3