这是我参与「第五届青训营 」伴学笔记创作活动的第 32 天
本篇文章归档于 “第五届字节跳动青训营”,主要是为了完成和记录掘金的 “伴学笔记创作活动” 活动,如果你对我的其他文章感兴趣,可以去我的 专栏 中逛逛看有没有你想要的东西。
- 第 1 篇 - Kitex 口水话
- 第 2 篇 - Hertz 口水话
- 第 3 篇 - 微服务口水话
- 第 4 篇 - Kafka 口水话
- 第 5 篇 - BMQ 口水话
- 第 6 篇 - RecketMQ 口水话
- 第 7 篇 - 数据库口水话
- 第 8 篇 - RDBMS 口水话
- 第 9 篇 - TOS 口水话
- 第 10 篇 - tinyTikTok 环境配置
- 第 11 篇 - tinyTikTok 规范设计
- 第 12 篇 - tinyTikTok 项目管理
- 第 13 篇 - tinyTikTok 认证授权
- 第 14 篇 - tinyTikTok 服务功能
- 第 15 篇 - tinyTikTok 测试分析
- 第 16 篇 - tinyTikTok 项目总结
放在前面的话
先把结果放前面吧,tinyTikTok 最后成了一个半成品,虽然这不是我想看到的,但也只能接受这个结果了。
tinyTikTok 完成度
代码的基础功能都实现了,也能正常跑通,但没空检查环境配置,不敢保证其他人能正常跑通(果梅纳塞
我认为值得一提的:
- 代码结构:参考的 k8s 一类的顶级项目,是一个兼具扩展性和维护性的项目;(这是所有项目都会面临的一个问题,如果经验不足,很容易发生过度设计
- 代码注释:所有函数和复杂代码几乎都写上了注释,可读性比较高;
- 认证服务:根据客户端的 query,判断这是一个高度信任的场景,所以采用的 OAuth 密码式认证;
- 服务解耦:分为四层:model、controller、service 和 store,每层都能无痛扩展,但需要注意不能循环 import(如果写了屎山,估计也会被报错hhhh;
- 应用架构:抽象了一层 app 接口,用于统一构建应用,这样启动服务就不需要反复造轮子了;(当然,写到后面发现没时间写下一个服务了
- ID 生成器:用雪花算法完成了一个 ID 生成器,只要保证 machine ID 唯一,就能保证生成 ID 唯一,而 machine ID 在微服务配置中可以预定义;(原本有做微服务打包部署的打算,依然是时间不够
- 静态代码检查:利用 golangci-lint 去定义规则,对代码先进行一轮静态代码检查,可以说是项目的底线。
我认为不足的地方:
- 中间件选型:采用了 gin-jwt 而不是 oauth2 做认证,gin-jwt 每次都会校验 token,对于 tinyTikTok 这种高并发应用并不合适;
- 代码风格:项目受到腾讯大咖的关注(非常荣幸),被一眼识破第一次写 gin,有一股 java 味儿;(确实撸 tinyTikTok 前这段时间一直在玩 Java 和 C++ hhhh
- 超前设计:如上提到,很多地方存在超前设计之嫌,但我想狡辩一下,tinyTikTok 是我通宵 5 天一个人赶出来的代码,很多计划的功能都来不及写,但已经提前规划好了;(但 ddl 没计算好也是自己的锅
- 代码测试:这份代码一个测试也没有,非常糟糕,压测没做,数据 mock 没有,甚至连单测都没有;
tinyTikTok 回顾
记录一下整个冬令营的心路历程:
- 和四个研二的学长学姐组队:感觉自己可以躺了,开心了好一阵,可以不用带脑子了;
- 青训营的课程:总结得都挺不错的,但只能算可以用,不到入门,真要学还得自己挖,而且节奏非常紧,如果想弄懂,对于大部分大三及以下的同学应该会很难受;(还好根据自己的情况调整了节奏,官方节奏完全可以说是不当人的
- 开过一次会:大家算是见了一面,分了任务,但没选型,只打算用 gin+gRPC;
- 结项前一周:两个学长回悉尼毕业,一个学长毕设开题,一个学姐提前开学,留个大怨种烂尾5555;
- 连通 5 天宵:撸出来一座屎山,然后去找队长要了一下身份,怎么说也有两分哈哈哈哈
- 结项后:补了 3 小时觉,然后开车去看黑灯的脱口秀(玩到凌晨 2 点到家,没猝死应该是万幸
tinyTikTok 展望
其实说到这里会发现,tinyTikTok 始终是个 toy program,这并不是心中的优质项目,还有很多功能没提及(跑通接口就跳过讨论了):授权策略,视频压缩,代码生成,数据采集,异步上报......(可以看我在 服务功能 里画的饼hhhh
其实都在我的设计,或者说计划之中,但最后高估了自己的开发速度,结项就来不及了。
如果今年的夏令营有 hxd 想玩玩后端,我打算借此机会完善 tinyTikTok。(不过我的想法应该会是官方评分标准的超集,毕竟求其上者得其中
其实要是有机会,还挺想认识一下 Toktik-Team 这群人(nicognaW 慷慨地给了 tinyTikTok 一个 star,顺着摸过去的hhhh),从 commit 来记录看算是我梦中的团队了,当然,这些都是后话了哈哈哈哈
放在最后的话
其实,说不定此后就不再和 tinyTikTok 见面了,毕竟是计划之外的事,心底还是有些遗憾的,不过这就是人生嘛,计划永远赶不上变化。
学校里可以让你一个人 C 完几乎所有工作,有充足的时间给你容错,并且也能被兜底(见过无数烂项目),但如今也算是步入社会的人了,应该找准自己的定位,放弃这种不切实际的幻想,不过这趟也没白跑,留点遗憾,算是个教训吧。
tinyTikTok,有缘再见~