这是我参与「第五届青训营」伴学笔记创作活动的第5天。本篇为第五届字节跳动青训营-寒假专场-后端基础课程的笔记。
GO框架三件套
- Gorm是一个迭代10年+的功能强大的ORM框架。
- Kitex是字节内部的golang微服务RPC框架,具有高性能、强可扩展的主要特点,支持多协议并且拥有丰富的开源拓展。
- Hertz是字节内部的HTTP框架,参考了其他开源框架的优势,结合字节跳动内部的需求,具有高易用性、高性能、高拓展性特点。
GORM基础使用
GORM目前支持MySQL、SQLServer、PostgreSQL、SQLite。GORM通过驱动来连接数据库,如果需要连接其他类型的数据库,可以复用或自行开发驱动。
使用First时,需要注意查询不到数据会返回ErrRecordNotFound。 使用Find查询多条数据时,查不到数据不会返回错误。 当使用结构体作为条件查询时,GORM只会查询非零值字段。
Kitex基础使用
KiteX,字节跳动开源的rpc框架,结合netpoll库,展现出强劲的性能。
Kitex目前对windows的支持不完善,需要使用虚拟机或者WSL2。
一个rpc框架,最核心的就是如何网络传输数据以及如何处理请求。对于框架使用者来说,比较直接相关的就是序列化(idl)和实现接口(业务逻辑)。
如果要进行RPC,需要知道对方的接口是什么,需要传递什么参数,同时也需要知道返回值是什么样的。使用IDL来约定双方的协议。
Hertz基础使用
Hertz是一个 Golang微服务HTTP框架,在设计之初参考了其他开源框架fasthttp、gin、echo的优势,并结合字节跳动内部的需求,使其具有高易用性、高性能、高扩展性等特点,目前在字节跳动内部已广泛使用。如今越来越多的微服务选择使用 Golang,如果对微服务性能有要求,又希望框架能够充分满足内部的可定制化需求,Hertz 会是一个不错的选择。