Go框架三件套前置知识 | 青训营笔记

88 阅读4分钟

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


前言

本系列文章创作基于作者的浅薄知识和其他大佬的深刻见解,主要记录青训营学习过程中我对一些东西的个人理解,也用于参加「第五届青训营」的笔记创作活动,请多指教。

Go框架三件套

有这样一个三件套,在字节内部广泛使用,他们分别是:

  1. Gorm

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

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

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

我在学习的过程中发现,对于上述这些加粗的内容(ORM,RPC,HTTP 框架),我并不是很清楚他们的含义是什么,这也影响了我对这三件套的理解和掌握,因此我打算以此文来完备这些前置知识。

前置知识

>> ORM

  • 对象关系映射(英语:Object Relational Mapping,简称ORM,或O/RM,或O/R mapping),是一种程序设计技术,用于在关系数据库面向对象的编程语言堆之间转换数据。从效果上说,它其实是创建了一个可在编程语言里使用的“虚拟对象数据库”。其主要作用是,在程序中把面向对象的概念跟数据库中表的概念对应起来。

  • 通过 ORM 技术,我们可以将关系数据库中某个数据表的结构关联到某个类/结构体上,并通过修改类/结构体实例的方式轻易的完成数据库增删改查(CRUD)的操作。通过 ORM 技术,我们得以以一种更加友好且高效的方式,在尽量不接触 SQL 语句的情况下操作数据库。

>> RPC

  • 在上述本地过程调用的例子中,我们是在一台计算机上执行了计算机上的程序,完成调用。随着计算机技术的发展和需求场景的变化,有时就需要从一台计算机上执行另外一台计算机上的程序的需求,因此后来又发展出来了RPC技术。特别是目前随着互联网技术的快速迭代和发展,用户和需求几乎都是以指数式的方式在高速增长,这个时候绝大多数情况下程序都是部署在多台机器上,就需要在调用其他物理机器上的程序的情况。

  • RPC是Remote Procedure Call Protocol三个单词首字母的缩写,简称为:RPC,翻译成中文叫远程过程调用协议。所谓远程过程调用,通俗的理解就是可以在本地程序中调用运行在另外一台服务器上的程序的功能方法。这种调用的过程跨越了物理服务器的限制,是在网络中完成的,在调用远端服务器上程序的过程中,本地程序等待返回调用结果,直到远端程序执行完毕,将结果进行返回到本地,最终完成一次完整的调用

  • 需要强调的是:远程过程调用指的是调用远端服务器上的程序的方法整个过程

  • RPC技术内部原理是通过两种技术的组合来实现的:本地方法调用网络通信技术

>> HTTP 关于http相信大家会比较熟悉,这里放出一个无敌博客供大家参考学习:关于HTTP协议,一篇就够了 - ranyonsue - 博客园 (cnblogs.com)

引用

本文图片和部分文字来自以下链接:
科普文-什么是ORM? - 知乎 (zhihu.com)
对象关系映射_百度百科 (baidu.com)
Go语言微服务框架实战:1.RPC简介及原理介绍 - 知乎 (zhihu.com)