从需求到上线全流程三 | 青训营笔记

65 阅读2分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 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避免浪费资源在不可用节点上