GO框架三件套 | 青训营笔记

98 阅读2分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 6 天,今天学习了GO语言开发的三件套,包括了Web/RPC/ORM的基础概念,同时学习了字节跳动对应的三个框架GORM/Hertz/Kitex的基本使用。

1.GORM

ORM 即Object Relational Mapping,它是对象关系模型的简称。它的作用是在关系型数据库和对象之间作一个映射。使程序能够通过操纵描述对象方式来操纵数据库。

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

GORM目前支持MySQL、SQLServer、PostgreSQL、SQLite。

GORM通过驱动来连接数据库,如果要连接其他类型的数据库,可以复用/自行开发驱动。

GORM的生态 image.png

2.Kitex

RPC (Remote Procedure Call)即远程过程调用,不同于本地调用,RPC是指调用远端机器的函数或方法,且不需要关心底层的调用细节,如网络协议和传输协议等,对于调用者来说,和调用本地方法没有什么区别。

以往的单体服务将所有功能都融合在一套应用中,当程序体量变大时,会出现难以开发、部署和维护的问题。微服务将单体架构中的各个功能进行拆分,从而可以由不同的团队进行开发、测试与维护。服务与服务之间的功能高度解耦。这种场景下,负责不同服务的机器需要互相协作,调用其他机器的模块。

Kitex的生态 节跳动内部的 Golang 微服务 RPC 框架,具有高性能强可扩展的特点,在字节内部已广泛使用。 image.png

3.Hertz

是一个 Golang 微服务 HTTP 框架,在设计之初参考了其他开源框架 fasthttpginecho 的优势, 并结合字节跳动内部的需求,使其具有高易用性、高性能、高扩展性等特点,目前在字节跳动内部已广泛使用。

Hertz的生态

image.png