青训营学习记录day15 | 青训营笔记

107 阅读2分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第15天,最后一次笔记总结下大项目。

大项目通过实现一个极简版的抖音,来切实实践课程中学到的知识点,框架使用gin+gorm,实现了基础、互动方向中的所有接口和社交方向中的部分接口。

Gin是一个golang的微框架,封装比较优雅,API友好,源码注释比较明确,具有快速灵活,容错方便等特点。

对于golang而言,web框架的依赖要远比Python,Java之类的要小。自身的net/http足够简单,性能也非常不错。

借助框架开发,不仅可以省去很多常用的封装带来的时间,也有助于团队的编码风格和形成规范。

gorm是一个已经迭代10年+的功能强大的orm框架,在字节内部被广泛使用并且拥有非常丰富的开源扩展,本项目中还使用了代码生成工具gen。使用gorm框架架起了 SQL 语句和应用程序之间的桥梁,将模型类和数据表映射起来,将模型类字段和数据表字段建立关联。

然后是总结与反思:

  1. 目前仍存在的问题

首先是在2月20号进行了版本更新,更新了一些字段,而本项目由于开发进行到尾声所以并未针对更新进行更改。

其次各个接口功能虽然在逻辑上拆分为用户、视频、评论、点赞和关注服务,但是在实现上仅仅采用了本地调用,并未拆分为不同的进程通过RPC或HTTP协议进行调用。

  1. 已识别出的优化项

未对黑灰产的与恶意攻击等进行防御,如:某ip恶意发送高频请求,会导致服务器瘫痪,正常请求无法被处理。可以考虑增加一层中间件对ip发送的数据请求进行记录,对超过正常频率的请求进行限制。

  1. 架构演进的可能性

架构可以考虑向微服务架构进行演进,将服务部署在不同的端口或服务器上并提供冗余,外部请求经过路由找到请求的服务并进行负载均衡。

  1. 项目过程中的反思与总结

在项目的开发过程中学习了很多有用的知识,让我对实际企业中的后端开发以及架构设计有了更为深刻的认识。同时,我也学到了在开发过程中使用git工具进行协作的技能,未来的学习中我会根据开发过程中遇到的问题以及引出的思考,沿着正确的方向不断查漏补缺,向前进步。