




下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
课时1Memcached网络模型课时9互联网人实战大学线程状态机状态事件Mc命令处理01.基于Libevent的多线程网络模型02.主线程接受建立连接03.工作线程读取网络IO处理并响应网络模型网络模型主线程监听端口接受请求并调度给工作线程处理逻辑状态机(drive_machine)连接调度机制新连接存入新连接队列pipe通知worker线程Worker线程从队列取一个连接并开始网络IO网络模型工作线程监听主线程pipe通知从队列获取新连接,创建conn注册读写事件并监听读取用户cmd,解析处理,返回rsp处理逻辑状态机(drive_machine)共享主线程工作线程状态机实现机制:switch-cases网络模型状态机主线程状态机处理conn_listening状态Accept新连接调度新连接给工作线程状态机初始or重置状态注册读事件读取网络数据命令解析及处理对写指令继续读取命令处理完毕写响应到连接缓冲写给client重置状态进入新循环工作线程状态机状态机conn_new_cmd进入条件:Mainthread调用dispatch_conn_new的时候,worker线程创建conn对象,初始状态为conn_new_cmd,命令处理完毕,准备接受新指令,也会进入conn_new_cmd处理:调用reset_cmd_handler,重置conn的cmd和substate,并在必要时对连接buffer进行收缩状态跳转:如果是第一次事件触发状态会进入conn_waiting状态如果读缓存区中有数据,会进入conn_parse_cmd状态。conn_waiting状态机conn_read处理流程通过update_event注册读事件然后将状态变成conn_read进入条件监听到网络数据进来,进入conn_read状态处理通过try_read_network从socket中读取数据状态跳转读取正常进入conn_parse_cmd状态,准备解析cmd读取失败进入conn_closing,关闭连接处理:通过mand读取rbuf,通过\n来分隔数据报文的命令如果命令首行长度大于1024(key长度要小于1024),关闭连接在mand对首行指令,继续按照空格分拆报文确定命令类型,分派给mand处理状态机conn_parse_cmd状态机状态跳转:rbuf还没读到\n,跳转到conn_waiting,继续等待客户端的命令数据报文;对于get等指令,处理完毕后跳转到conn_mwrite;对于set/put等指令,需要继续读取val数据,跳转到conn_nread;处理失败,跳转到conn_closing关闭连接状态机conn_parse_cmd处理:从conn继续读取value数据;读取完毕后,调用complete_nread,进行数据存储处理;数据处理完毕后,向conn的wbuf写结果数据;状态跳转:处理完毕后,状态设为conn_write状态机conn_nread处理:如果conn的iovused为0或UDP,将wcurr写入conn消息缓冲状态跳转:直接进入conn_mwrite状态机conn_write处理:通过transmit来向客户端写数据状态跳转写数据成功,跳转到conn_new_cmd,准备新指令的获取写数据失败,跳转到conn_closing,关闭连接退出状态机状态机conn_mwriteconn_closing处理:关闭连接,game
over命令读取处理及响应listen新连接进入连接重置及内存收缩准备IO读取读取网络数据解析指令读取value数据key/value变更发送给响应给client构建响应循环等待下次处理查询valueread指令NY处理流程主线程监听并接受新连接接入Worker线程初始化连接并等待IO有数据到来时,读取网络数据根据Mc协议解析指令对变更指令,需要进一步读取value,并进行变更对于读取指令,查询
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 职能部门间的协同作用总结计划
- 通过课外活动增强品德意识计划
- 年度工作计划中如何加强执行力
- 提升学生思辨能力计划
- 教学辅导与个别帮助方案计划
- 跨区域医疗资源调配中PACS系统的应用研究
- 名著阅读 《昆虫记》(导学案)(学生版)
- 注重实践操作的生物学授课计划
- 科技产业中的商标保护策略
- 九年级上册必读:《水浒传》导读资料和中考真题(一)
- 文献检索与论文写作-文献检索与科技论文写作138课件
- 10KV开关柜教学讲解课件
- 河南省施工现场安全文明施工标准
- 废橡胶处理协议书范本
- 增额终身寿险销售逻辑
- GB/T 8813-2020硬质泡沫塑料压缩性能的测定
- GB/T 15057.2-1994化工用石灰石中氧化钙和氧化镁含量的测定
- 洁净厂房监理实施细则
- 哈工大研究生课程-高等结构动力学-第四章课件
- 当代教育心理学(范围)课件
- 2023年湖南工业职业技术学院单招综合素质考试笔试题库及答案解析
评论
0/150
提交评论