这是我参与「第五届青训营 」伴学笔记创作活动的第 11 天
1.1 本地函数调用
1.将a和 b的值压栈
2.通过函数指针找到calculate 函数,进入函数取出栈中的值2和3,将其赋予x和 y
3.计算x*y ,并将结果存在z
4.将z的值压栈,然后从 calculate返回
5.从栈中取出z返回值,并赋值给result
1.2远程函数调用(RPC- Remote Procedure Calls)
RPC需要解决的问题
1.函数映射
2.数据转换成字节流11695
3.网络传输
01小结
1.本地函数调用和 RPC 调用的区别:函数映射、数据转成字节流、网络传输
2.RPC的概念模型:User、User-Stub、RPC-Runtime、Server-Stub、Server
3.RPC 带来好处的同时也带来了不少新的问题,将由RPC框架来解决
2.3 编解码程
支持自动增加新的字段,而不影响老的服务,这将提高系统的灵活度
支持跨平台、跨语言
从空间和时间两个维度来考虑,也就是编码后数据大小和编码耗费时长
2.9 协议层 - 协议构造
LENGTH:数据包大小,不包含自身
HEADER MAGIC: 标识版本信息,协议解析时候快速校验
SEQUENCE NUMBER: 表示数据包的 segID,可用于多路复用,单连接内递增
HEADER SIZE: 头部长度,从第14个字节开始计算一直到 PAYLOAD前
PROTOCOL ID:Compact 两种
TRANSFORMID: 压缩方式,如 zlib 和 snappy
INFO ID: 传递一些定制的 meta 信息
PAYLOAD:消息体
02.小结
1.RPC 框架主要核心有三层: 编解码层、协议层和网络通信层
2.二进制编解码的实现原理和选型要点
3.协议的一般构造,以及框架协议解析的基本流程
4.Socket API 的调用流程,以及选型网络库时要考察的核心指标
3.1 稳定性 - 保障策略
熔断:保护调用方,防止被调用的服务出现问题而影响到整个链路
限流:保护被调用方,防止大流量把服务压垮
超时控制:i避免浪费资源在不可用节点上