分析抖音的互联网架构-Go框架三件套|青训营

56 阅读2分钟

分析抖音的互联网架构-Go框架三件套

mindmap
      Go框架三件套
          Gorm
              迭代十年+功能强大的ORM框架
          Kitex
              字节内部的Golang微服务RPC框架;高性能,可扩展;支持多协议
          Hertz
              字节内部的HTTP框架;高易用,高性能,高可扩展
    

一、三件套的使用

1.Gorm的基本使用

当涉及到数据库操作时,Golang中的GORM是一个非常流行的ORM(对象关系映射库),它提供了简洁而强大的API,使得数据库操作变得更加容易和高效。

GORM支持MySQL、SQLServer、PostgreSQL、SQLite。GORM通过驱动来连接数据库,如果需要连接其他类型的数据库,可以复用/自行开发驱动。

2.GORM创建数据

  • 如何使用Upsert:使用clause.Onconflict处理数据冲突。
  • 如何使用默认值:通过使用default标签为字段定义默认值

First的使用踩坑: 使用First数据时,需要注意查询不到数据会返回ErrRecordNotFound。使用Find查询多条数据时,查询不到数据不会返回错误。

使用结构体作为查询条件: 当使用结构作为条件查询时,GORM只会查询非零值字段

3.更新数据

使用struct更新,只会更新非零值,如果需要更新零值可以使用Map更新或使用select选择字段。

4.删除数据

GORM提供了gorm.DeletedAt用于帮助用户实现软删。拥有软删能力的Model调用Delete时,记录不会被从数据库中真正删除。但GORM会将DeleteAt置为当前时间,并且你不能通过正常的查询方法查到该记录。

5.安装IDL

使用IDL定义服务与接口

如果我们要进行RPC,就需要知道对方的接口是什么,需要传什么参数,同时也需要知道返回值是什么样的。这时候就需要,通过IDL来约定双方的协议,就像在写代码时候需要调用某个函数,我们需要知道函数签名一样

6.Hertz基本使用

使用Hertz实现,服务监听8080端口并注册了一个GET方法的路由函数。

  • Hertz路由:提供了GET、POST、PUT、DELETE、ANY等方法用于注册路由。Hertz提供了路由组(group)的能力,用于支持路由分组的功能。
  • 路由优先级:静态路由>命名路由>通配路由
  • Hertz中间件:主要分为客户端中间件;服务端中间件
  • Hertz Client:Hertz提供了HTTP Client用于帮助了用户发送HTTP请求
  • Hertz代码生成工具:Hertz提供了代码生成工具Hz,通过定义IDL(inteface description lanuage)文件即可生成对应的代码。

参考文献

文章参考来源于gorm的使用 - 中亿丰数字科技 - 博客园 (cnblogs.com)

‍⁡⁣⁤⁣⁢‬⁤‌⁡‍⁤⁡‌⁣⁡⁤⁤⁤‬‬‌⁤‬​‬⁡​‍⁡⁢⁤​‌⁢​​‍⁤⁢⁤​​Go 框架三件套详解.pptx - 飞书云文档 (feishu.cn)