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