RPC原理概述 | 青训营笔记

106 阅读2分钟

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

今天我学习了Go掘金课的“RPC原理与实现”,也就是视频课“后端入门-中间件”的1、2节课,课程视频总时长大约60分钟,我通过学习本节课程,学懂了RPC框架的一些常见思路和使用。

一、本堂课重点内容:

  • 本堂课的知识要点有哪些?

RPC框架的——基本概念、分层设计、关键指标、企业实践

二、详细知识点介绍:

  • 本堂课介绍了哪些知识点?
  1. RPC需要解决的问题:函数映射、数据转换成字节流、网络传输
  2. RPC概念模型:User、User-Stub、RPC-Runtime、Server-Stub、Server
  3. 一次RPC完整的过程:
  • 双方生成IDL文件描述或声明方法
  • 用编译器工具把IDL转换成静态库
  • 序列化与反序列化
  • 制定通信协议
  • 走网络传输
  1. RPC的好处:
  • 单一职责、有利于开发
  • 可扩展性、资源使用率高
  • 故障隔离,服务整体可靠性高
  1. RPC核心设计:解编码层、协议层、网络通信层
  2. RPC关键指标:稳定性、易用性、扩展性、观测性、高性能
  • 通过中间件注入服务治理策略,保证服务的稳定性
  • 合理配置命令行工具提升框架易用性
  • 框架提供扩展点
  • Log、Metric、Tracing、内置状态暴露服务提升观测性
  • 高性能解编码协议和网络库提高性能

三、实践练习例子:

  • 有什么实践举例帮助理解知识点?
    课程举了一个企业实践的例子——Kitex,整体架构分为:Kitex Core、Kitex Byted、Kitex Tool。它使用自研网络模型Netpoll,提供了丰富的扩展性和性能优化,未来将会尝试新的微服务形态——合并部署。

四、课后个人总结:

  • 本章有什么知识点不容易掌握?
    可能直接通过理论理解框架会比较困难,希望后面会有实际的底层代码或是官方文档可供阅读的话也许会方便理解吧。
  • 什么地方容易与其他内容混淆?
    本节课逻辑比较清晰,也不太会出现混淆的情况。

五、引用参考:

  • 我参考了哪些外部博客/笔记/文章?
    我参考了掘金视频课中的“后端入门-Go框架设计与实践”,也就是此次掘金内部课程:
    juejin.cn/course/byte… 另外还参考了Foxtail-Grass Studio的专辑封面,作为此次笔记的封面
  • 文章中有什么地方是我参考引用了外部博客/笔记/文章的?
    主要是课程的主要知识点总结,采用了一边阅读课件一边记录的方式进行了个人的一些学习总结。