最近接了个前人留下的坑:go语言写的Redis数据迁移项目。

按道理,吐槽前人的项目其实并不太好,但这位仙人呢,做的已经不能是it works就走的境界,而是达到糊弄过去,日后根本没办法用的状态。对于此人和此项目,倒也懒得评价什么,就说说文章标题:把一做到四吧。

项目因为涉及数据迁移,可能对现网的Redis造成压力,测试都是定时在夜里凌晨的时候跑的,所以初期几天,都是第二天看结果的。

经过实测发现,原有的项目编译的程序因存在以下几个问题,根本不可用:

  1. 程序没有进度输出
  2. 报错机制不打栈数据,报错只让人知道错了,没有栈数据,无法定位具体是代码哪句报错
  3. 仅单节点Redis数据迁移备份可用,所谓的集群支持根本无效,然鹅,持续运转后会随机挂掉,根本无法达到全部数据迁移

项目由于是备用方案,所以最初未能得到完备的实测。而真正需要使用时,才发现还真是个暗坑。

这个一,就是最初的需求:Redis数据迁移。

那么四,从何而来?

本次的需求是:阿里云的Redis迁移到AWS的Redis,二者的状态,阿里云的Redis是魔改用Proxy实现的,对程序来说,是单点Redis。而AWS的Redis,则是集群。

那么本次项目的目标就是实现单点Redis迁移Redis集群的。

但只实现这一点,日后呢?如果有一天要从AWS迁移回阿里云的Redis呢?那就是集群迁移到单点。那这样扩充逻辑后,实际需要完成到什么度,才是我认为的状态?

这,就是四:单点到单点、单点到集群、集群到单点和集群到集群。并且要实现:进度可见和异常状态报错清晰明了。

从一做到一,是最基本的本分。做到四,做到极致,才是我以为优秀的人应当做到的。把一个冷门,使用率很低的项目,做成完结版,做成从此往后,不需要再修改就能通吃兼容全部场景的精品,是一个优秀的人对待项目应当持有的专业的态度。

我,只是个二把刀程序猿,但我希望我手下的每一个项目,都是极致而完美的。

共勉,希望更多的人,能理解这样的态度,并把这种态度,用到工作生活各个方面。



Related Posts: 把一做到四 :

2
留言

老黑猴子
老黑猴子

现在做到几了