1、引言
动机:最开始会去参加这个训练营,主要是想继续深入学习一下后端知识;以及动手多写点代码,避免寒假时间遭到大量浪费。
2、学了什么
青训营内的内容还是比较多的,后端的话基本以Go技术栈为主(包括Go、Go相关的Web框架、RPC框架以及ORM框架;不过主要以字节自己的CloudWeGo为主)。除此之外,还包括些Git、HTTP、数据库、消息队列以及微服务架构的一些内容。内容以引导为主。
2.1 Hertz 框架
Hertz 作为字节跳动自主研发的高性能 Go 语言 Web 框架,在学习过程中,了解其路由系统,通过配置路由及其处理函数,实现HTTP访问。同时可以自定义中间件,可便捷地实现日志记录、权限验证、性能监测等功能。 最方便的还是使用hz指令直接根据proto文件来生成代码
2.2 Kitex 框架
Kitex 一款 RPC 框架,通过使用gRPC协议完成服务之间的通信。同时,了解该框架的负载均衡,超时重传等策略。 最方便的还是使用kitex指令直接根据proto文件来生成代码
2.3 Gorm 框架
一个基于Go的全ORM框架,某种意义上确实比MyBatis这种半ORM框架好用。
3、项目实践经历
在实战项目阶段,参与了模拟电商系统的开发项目。以小组形式协作,运用所学技术搭建系统架构。
- 采用 Go 语言作为开发语言
- 借助 Hertz 框架搭建 Web 服务层,负责处理用户请求与响应
- 通过 Kitex 框架实现不同服务间的通信,如商品服务、订单服务及用户服务之间的远程调用,确保系统各模块协同运作
- 利用 Gorm 框架与 MySQL 数据库进行交互,完成商品信息存储、订单数据管理以及用户信息维护等功能。
- 利用 Go-redis 框架与 Redis 数据库进行交互,主要是进行一些处理分布式session,缓存等功能。
- 注册中心的搭建选用了 Consul。各服务启动时,自动向 Consul 注册自身地址与端口等信息。当其他服务需要调用时,通过 Consul 进行服务发现,获取目标服务的地址。
- 链路追踪采用Jaeger,Jaeger会去记录服务之间的调用过程。借助 Jaeger 的强大功能,能够清晰地看到不同模块间的调用顺序。还能精准知晓每个服务处理请求所耗费的时间,以及请求在不同服务间传递过程中的网络延迟情况。
4、学习收获总结
在熟悉Java的基础上,又了解学习了Go语言及其微服务;同时和队友完成了基于Go语言的微服务应用的开发。只能说从感受来来说,Go确实比Java省内存,比之前启用Java的微服务方面对PC的负担小。
同时也学习了proto,这一序列化方式,不过感觉没有JSON好用。
5、不足剖析
-
对于许多东西都处于了解的状态,可以在AI辅助软件的帮助下完成开发,但也仅限于此。想要深入了解就还需要继续学习。
-
同时,对于所要求的关于AI Agent,并没有整合进入系统,对于AI Agent的了解还比较浅显。在AI时代,即使不进行算法研究,对AI应用层的学习,应该是逃不开了。
-
在使用proto序列化方式时,感觉其自由度小于JSON,在书写proto文件,多次遇到数据类型的问题,比如proto原生并不支持decimal,如何将github.com/shopspring/decimal 接入proto也是一个问题。当时也并没有好的想法,仅是将其转为string类型去处理了。