大三下学期发现学校(二本学院)似乎没啥好学了的(2018年) ,于是找学长内推了一份工作,然后从PHP开始做起,做了三个多月thinkPHP ,在一个月内使用 workman 构建了一整套基于微信api的客服系统,以及一系列微信公众号管理啥的。
2019年5月份开始接手公司核心业务的构建,开始接触 Go 语言,我们公司是做 SDN 网络提供的,一个还算蛮新鲜的概念,而最大的门槛是既要懂软件,也要懂二三层的网络以及一系列的协议,所以很多网络工程师半路转软件的 “野路子” ,而“野路子”写出来的代码,能用,但是确实只有他们自己能维护,于是我开始学习了一些网络基础,想着帮他们弄出一套走正规软件流程的系统。
学go学的还蛮轻松的,刚刚不是说原本的代码很“野路子”吗,在学了一个多月go之后,我开始翻看代码以及阅览业务系统,然后发现一个接口居然需要整整2s多才能有反应,起初我想着有可能是这个接口所需要用到的数据量可能比较多,毕竟这接口会收集全国各地我们设备的运行状态。但是说实话,越想越不对劲,因为数据源其实就在后端的另外一个模块上,最大的延迟就是RestFul API上了,再怎么说也不会拖到2s 。
于是我开始翻看代码,发现这个接口会查询5次数据库,每查询一次数据库都要从另一个模块请求数据,然后当所有时间加起来时,最大的时延有可能会达到3s , 于是开始着手优化,把所有请求改成了go语言应该有的样子: 并发 ,使接口的最大时延取决于最长的那一次请求模块数据,于是这个接口的性能得到了质的提升,从最低2s降低到了最低200ms , 至于那个模块因为是使用Java写的,我实在对Java不怎么感冒,于是就没去碰了。
之后公司突然给了我一个项目,要我去写一个控制ovn的restful api 服务,我翻看了以下GitHub发现似乎有api 给我用,于是就开始着手编码了,当时也没想到这api是没完成的,于是在补齐api的间歇开始给ebay的go-ovn项目提交了代码,这也是我人生中第一次提交pr ,之后陆陆续续的贡献了1000多行代码,也算是给开源项目做过贡献了。
而后给这几个项目建立CI/CD 流水线,建议了各位在自建的 GitLab 上使用 issue 进行问题汇报,带头公司的 TDD 进程, 以及对公司 git workflow 的建议等都是一些没啥好说的故事了。
最近一个项目是做完的是一个基于 go-micro 的微服务,具体业务我也说不得,最大的亮点可能是在设计的时候使用了nats 来进行server与client端消息的推送以及订阅,我因为毕业设计的问题导致3个月没有在公司编写代码,只参与了后端与客户端对接流程的设计,以及客户端的主体代码框架等,而后我毕业设计结束之后,后端与客户端大体完成,还差一个用户验证模块,于是我基于 casbin 构建了一套微服务的jwt鉴权模块,我们是使用mongoDB 的,而官方的casbin 当时没有mongoDB 的适配器,你以为我要说我写了一套吗23333,并没有,我也是从GitHub上整了一套casbin-mongo-adapter 来做适配工作,有轮子就别折腾自己,这是永远的道理。
这就是我这两年来的一些经历了,最近公司没啥事给我做了,我也觉得我也差不多是时候找些新工作来做了,所以,如果各位寻找 go 语言的远程开发者时,可以考虑一下我这位不知道算是应届生还是社招人员的小菜鸟。