笔记3 [实战项目] Go 语言笔记服务(中): 项目框架之RPC与微服务 | 青训营笔记

156 阅读3分钟

这是我参与「第三届青训营 -后端场」笔记创作活动的的第3篇笔记。

在笔记服务(easy_note)中, 使用了kitex,一款字节跳动内部的 Golang 微服务 RPC 框架,具有高性能强可扩展的特点,在字节内部已广泛使用。

我们小组选择的大作业项目是抖音项目,也打算使用kitex实现微服务和RPC. 因此,我们必须学习一下什么是RPC和微服务.

1. RPC介绍

1.1 什么是RPC

RPC 的全称是远程过程调用(Remote Procedure Call),它的调用包含了传输协议和编码(对象序列)协议等等,允许运行于一台计算机的程序调用另一台计算机的子程序,而开发人员无需额外地为这个交互作用编程,就像在进行本地函数调用一样方便。

1.2 RPC工作流程

63326E4B2017C87F6990A57B4E106DEA.png

如图所示,RPC的调用流程如下:

  1. User以本地调用方式调用远程服务;
  2. User-stub接收到调用后负责将方法、参数等进行组装;
  3. RPC Runtime找到服务地址,并将消息发送到服务端;
  4. 服务端的RPC Runtime收到消息并解码;
  5. Server-stub解开组装;
  6. Server根据解开组装的结果调用本地的服务;
  7. 本地服务执行并将结果返回给server stub;
  8. server stub将返回结果打包;
  9. 服务端的RPC Runtime将打包好的消息发送至User方;
  10. 客户端的RPC Runtim接收到消息并解码;
  11. User-stub将解码后的消息解开组装;
  12. User得到远程调用的最终结果。

1.3 RPC的优缺点

  • RPC的优点是:
  1. 提升系统可扩展性;
  2. 提升系统可维护性和持续交付能力;
  3. 实现系统高可用;
  • RPC的缺点是:
  1. 一个完善的RPC框架开发难度大;
  2. RPC框架调用成功率受限于网络状况;
  3. 调用远程方法对初学者来说难度大;

2. 微服务介绍

2.1 什么是微服务

微服务是分布式架构的一种,把服务做解耦和拆分.

在传统的单体架构中,我们把所有的服务写在一起. 但是随着业务逻辑逐渐复杂,代码的耦合度也会越来越高,不便于团队合作开发以及业务的升级维护。微服务的思想是, 根据业务功能模块把一个单体的应用拆分成许多个独立的项目,每个项目完成一部分的业务功能,这样就可以独立开发和部署。这些独立的项目就成为一个个微服务,进而构成一个服务集群。

比如在easy_note中, 将整个笔记服务分成了user和note两个服务.这两个服务完全可以独立开发.

2.2 微服务的优缺点

  • 微服务的优点是:
  1. 开发效率高;
  2. 业务独立设计;
  3. 自下而上;
  4. 故障隔离.
  • 微服务的缺点是:
  1. 服务治理和运维的难度较高;
  2. 观测的难度高;
  3. 安全性的实现难度高.