RPC框架
2024-05-24 16:10:47 5 举报
AI智能生成
RPC框架
作者其他创作
大纲/内容
你会如何设计一个RPC框架呢?
协议
网络通信
I/O模型
同步阻塞IO
调用线程发起请求后开始等待内核数据准备完成,再等待数据从内核态拷贝到用户进程,两个阶段全部阻塞等待
同步非阻塞IO
调用线程获取数据时(read),立即返回是否获取成功的结果,
当内核态数据就绪时是阻塞的,直到数据从内核拷贝到用户缓冲区才结束阻塞。
缺点:用户线程需要轮询调用read,占用cpu;
当内核态数据就绪时是阻塞的,直到数据从内核拷贝到用户缓冲区才结束阻塞。
缺点:用户线程需要轮询调用read,占用cpu;
同步多路IO复用
引入了查询内核数据是否就绪的系统调用select/epoll,使一个进程能够监控多个文件句柄(多个数据通道),
一旦数据准备就绪,系统通知用户进程,随后用户进程就可以发起read调用,阻塞等待数据从内核拷贝到用户空间
一旦数据准备就绪,系统通知用户进程,随后用户进程就可以发起read调用,阻塞等待数据从内核拷贝到用户空间
信号驱动IO
异步IO
从内核态数据准备就绪(从IO设备读取数据到内核态),到数据从内核态拷贝到用户进程,
全程不阻塞,自动通知用户进程数据已拷贝到用户进程。异步IO需要操作系统支持。
全程不阻塞,自动通知用户进程数据已拷贝到用户进程。异步IO需要操作系统支持。
I/O的两个阶段
等待资源阶段(I/O)调用阶段:即用户进程向内核发起调用
阻塞
非阻塞
使用资源阶段(I/O执行阶段):
1.等待数据从IO设备准备就绪并写入内核缓冲区;
2.从内核缓冲区拷贝到用户态缓冲区;
1.等待数据从IO设备准备就绪并写入内核缓冲区;
2.从内核缓冲区拷贝到用户态缓冲区;
同步处理
异步处理
I/O读写
读:IO读取设备就绪,数据从内核缓冲区复制到用户态缓冲区
写:数据从用户态缓冲区复制到内核缓冲区,再从内核写入设备或网卡
同步与异步
同步:由用户态主动发起后内核态返回数据为;
异步:由内核态主动通知用户态,并且自动把数据拷贝到用户进程;
异步:由内核态主动通知用户态,并且自动把数据拷贝到用户进程;
阻塞与非阻塞
阻塞:用户进程在向内核获取数据时,用户进程需要等待内核数据处理完成;
非阻塞:用户进程在向内核获取数据时,会立刻返回是否获取成功,用户进程需要轮询执行read操作获取数据;
非阻塞:用户进程在向内核获取数据时,会立刻返回是否获取成功,用户进程需要轮询执行read操作获取数据;
序列化/反序列化
编解码
反射执行
RPC的基本框架
TCP传输
协议
宇宙第一RPC框架
好的抽象
框架
应用
服务
超高性能
0 条评论
下一页