Go框架三件套详解(Web/RPC/ORM)| 青训营笔记

91 阅读2分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 5 天

课堂笔记(Go框架三件套详解(Web/RPC/ORM))

本节课重点内容: 讲解Go语言三种常用框架:Gorm、Hertz、Kitex

Gorm

Gorm是一个已经迭代了10年+的功能强大的ORM框架,在字节内部被广泛使用并且拥有非常丰富的开源扩展

  • Gorm使用名为ID的字段作为主键
  • 使用结构体的蛇形负数作为表名、字段名的蛇形作为列名
  • 使用CreatedAt、UpdatedAt字段作为创建、更新时间
  • GORM目前支持MySQL、SQLServer、PostgreSQL、SQLite
  • GORM通过驱动来连接数据库,如果需要连接其它类型的数据库,可以复用/自行开发驱动

什么是DNS?

域名系统(Domain Name Syatem)是互联网的一项服务,它作为将域名和IP地址相互映射的一个分布式数据库,能够使人更方便地访问互联网

Kitex

Kitex是字节内部的Golang微服务RPC框架,具有高性能、强可扩展的主要特点,支持多协议并且拥有丰富的开源扩展

使用IDL定义服务与接口

image.png

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

RPC

RPC 是指计算机 A 上的进程,调用另外一台计算机 B 上的进程,其中 A 上的调用进程被挂起,而 B 上的被调用进程开始执行,当值返回给 A 时,A 进程继续执行。调用方可以通过使用参数将信息传送给被调用方,而后可以通过传回的结果得到信息

Hertz

Hertz是字节内部的HTTP框架,参考了其他开源框架的优势,结合字节跳动内部的需求,具有高易用性、高性能、高扩展性特点

  • 网络库Netpoll
  • Json编解码Sonic
  • 使用sync.Pool复用对象协议层数解析优化