[TOC]

放春节长假的前一晚,线上有需求留在公司加班,下班回来已经快到凌晨睡不着,兴起干脆把总结也写了。

在学习上,今年收获比较多的主要是两个事情,一个是加入了夜读小组,不管是跟着群里大牛们学习阅读源码,还是日常交流,都学到不少有深度的知识和技能。另外是维护beego的项目和部分生态,主要是在修复issue上学习到比较多,了解使用者的应用场景和发掘一些可以改善的地方,19年这块会逐步整理和完善。之前学了一分部然后被搁置的6.824分布式的课程,在今年工作中派上了用场,也激励了自己19年得把lab都给补完。
在对Go语言学习上,工作之余会看Go源码,跟着雨痕老师脚步学习其内部的实现,实际底层代码量还是非常多的,一个模块通常得花上2-3天,是个苦活。我的学习路线还是类似缓存策略,从用得最频繁的出发去看,然后再系统看,用脑图搭建好整个 $GROOT/src下的架构体系,这样方便后续开发时候的快速查阅,我的学习方法是先google其他开发者相关模块的源码剖析文章,有个初步了解再深入学(这点经过这一年的实践验证,还是十分有效的,特别是对于学习时间没那么宽裕的工作党来说)。
源码内部隐藏着挺多有意思的“彩蛋”。比如,在有些代码内部作者会把部分实现思想和出处标注在注释,我们能拓展阅读,代码中间还有不少TODO标签,可以让我们提前知道其演进的方向。 还有平时最顶层的封装有时并不一定是”最优解”,只能说是通用解,通过学习底层的结构,可以自己把底层函数封装按业务需求进行再次封装。说到需要吐槽的地方,大概就是interface{},底层实现有大量接口的使用,阅读源码时候常常会因跳到接口被断了得重头去找接口的实现。

在工作上,今年工作内容有一些变化,从原来的Api builder开始转做平台组件的开发,主要是支撑大数据业务的工作。实践之后发现利用cobraviper配合,能极高效地开发出运维友好的命令行组件。今年大部分时间都花在了一个分布式任务平台的开发上,平台涉及的组件还是比较多,从监控到大数据生态再到云服务都有,所以借此机会点亮了不少组件的技能树,也希望明年通过平台版本的优化迭代,更深入的学习,提高这些组件的技能点。
另外,原来的业务API的开发工作大大减少,主要的API开发工作是对线上压力较大的接口用Golang进行重构,对性能要求较高,因此也具有不小挑战。.虽然Go语言本身不是银弹,但是实际使用中,用它来提高接口性能还是非常方便和有效,在路由处理这一层相比于php和python,实际线上压测在没有进一步优化的情况下,也能有10倍以上的性能提升。对于这两块的开发经验会在年后把平台迭代完空闲再单独写相关的经验总结。

最后,再说说自己19年的期望。个人计划把目前作为主力语言的Go语言继续深入学习,特别是通过底层的学习能给上层应用提供更多的优化方向和能力。阅读Go源码这块会继续坚持,此外会逐步阅读数据库相关源码,包括etcd,RocksDB,redis,今年也计划用Go实现一版基础的Redis(加强版的kv数据库)。课程这块加油把824的raft后面的实验补完,提炼一版更加精简的raft实现,由于后面业务会涉及分布式文件存储相关的内容,C++也需要重新扎实一遍,预计在下半年跟着邓俊辉的课程过一遍,正好把数据结构和算法(邓公的课程强力推荐)重新复习。

文章目录