版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
課時1Memcached網(wǎng)絡(luò)模型課時9互聯(lián)網(wǎng)人實戰(zhàn)大學(xué)線程狀態(tài)機(jī)狀態(tài)事件Mc命令處理01.基于Libevent的多線程網(wǎng)絡(luò)模型02.主線程接受建立連接03.工作線程讀取網(wǎng)絡(luò)IO處理并響應(yīng)網(wǎng)絡(luò)模型網(wǎng)絡(luò)模型主線程監(jiān)聽端口接受請求并調(diào)度給工作線程處理邏輯狀態(tài)機(jī)(drive_machine)連接調(diào)度機(jī)制新連接存入新連接隊列pipe通知worker線程Worker線程從隊列取一個連接并開始網(wǎng)絡(luò)IO網(wǎng)絡(luò)模型工作線程監(jiān)聽主線程pipe通知從隊列獲取新連接,創(chuàng)建conn注冊讀寫事件并監(jiān)聽讀取用戶cmd,解析處理,返回rsp處理邏輯狀態(tài)機(jī)(drive_machine)共享主線程工作線程狀態(tài)機(jī)實現(xiàn)機(jī)制:switch-cases網(wǎng)絡(luò)模型狀態(tài)機(jī)主線程狀態(tài)機(jī)處理conn_listening狀態(tài)Accept新連接調(diào)度新連接給工作線程狀態(tài)機(jī)初始o(jì)r重置狀態(tài)注冊讀事件讀取網(wǎng)絡(luò)數(shù)據(jù)命令解析及處理對寫指令繼續(xù)讀取命令處理完畢寫響應(yīng)到連接緩沖寫給client重置狀態(tài)進(jìn)入新循環(huán)工作線程狀態(tài)機(jī)狀態(tài)機(jī)conn_new_cmd進(jìn)入條件:Mainthread調(diào)用dispatch_conn_new的時候,worker線程創(chuàng)建conn對象,初始狀態(tài)為conn_new_cmd,命令處理完畢,準(zhǔn)備接受新指令,也會進(jìn)入conn_new_cmd處理:調(diào)用reset_cmd_handler,重置conn的cmd和substate,并在必要時對連接buffer進(jìn)行收縮狀態(tài)跳轉(zhuǎn):如果是第一次事件觸發(fā)狀態(tài)會進(jìn)入conn_waiting狀態(tài)如果讀緩存區(qū)中有數(shù)據(jù),會進(jìn)入conn_parse_cmd狀態(tài)。conn_waiting狀態(tài)機(jī)conn_read處理流程通過update_event注冊讀事件然后將狀態(tài)變成conn_read進(jìn)入條件監(jiān)聽到網(wǎng)絡(luò)數(shù)據(jù)進(jìn)來,進(jìn)入conn_read狀態(tài)處理通過try_read_network從socket中讀取數(shù)據(jù)狀態(tài)跳轉(zhuǎn)讀取正常進(jìn)入conn_parse_cmd狀態(tài),準(zhǔn)備解析cmd讀取失敗進(jìn)入conn_closing,關(guān)閉連接處理:通過mand讀取rbuf,通過\n來分隔數(shù)據(jù)報文的命令如果命令首行長度大于1024(key長度要小于1024),關(guān)閉連接在mand對首行指令,繼續(xù)按照空格分拆報文確定命令類型,分派給mand處理狀態(tài)機(jī)conn_parse_cmd狀態(tài)機(jī)狀態(tài)跳轉(zhuǎn):rbuf還沒讀到\n,跳轉(zhuǎn)到conn_waiting,繼續(xù)等待客戶端的命令數(shù)據(jù)報文;對于get等指令,處理完畢后跳轉(zhuǎn)到conn_mwrite;對于set/put等指令,需要繼續(xù)讀取val數(shù)據(jù),跳轉(zhuǎn)到conn_nread;處理失敗,跳轉(zhuǎn)到conn_closing關(guān)閉連接狀態(tài)機(jī)conn_parse_cmd處理:從conn繼續(xù)讀取value數(shù)據(jù);讀取完畢后,調(diào)用complete_nread,進(jìn)行數(shù)據(jù)存儲處理;數(shù)據(jù)處理完畢后,向conn的wbuf寫結(jié)果數(shù)據(jù);狀態(tài)跳轉(zhuǎn):處理完畢后,狀態(tài)設(shè)為conn_write狀態(tài)機(jī)conn_nread處理:如果conn的iovused為0或UDP,將wcurr寫入conn消息緩沖狀態(tài)跳轉(zhuǎn):直接進(jìn)入conn_mwrite狀態(tài)機(jī)conn_write處理:通過transmit來向客戶端寫數(shù)據(jù)狀態(tài)跳轉(zhuǎn)寫數(shù)據(jù)成功,跳轉(zhuǎn)到conn_new_cmd,準(zhǔn)備新指令的獲取寫數(shù)據(jù)失敗,跳轉(zhuǎn)到conn_closing,關(guān)閉連接退出狀態(tài)機(jī)狀態(tài)機(jī)conn_mwriteconn_closing處理:關(guān)閉連接,game
over命令讀取處理及響應(yīng)listen新連接進(jìn)入連接重置及內(nèi)存收縮準(zhǔn)備IO讀取讀取網(wǎng)絡(luò)數(shù)據(jù)解析指令讀取value數(shù)據(jù)key/value變更發(fā)送給響應(yīng)給client構(gòu)建響應(yīng)循環(huán)等待下次處理查詢valueread指令NY處理流程主線程監(jiān)聽并接受新連接接入Worker線程初始化連接并等待IO有數(shù)據(jù)到來時,讀取網(wǎng)絡(luò)數(shù)據(jù)根據(jù)Mc協(xié)議解析指令對變更指令,需要進(jìn)一步讀取value,并進(jìn)行變更對于讀取指令,查詢
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 工業(yè)物聯(lián)網(wǎng)時代的網(wǎng)絡(luò)結(jié)構(gòu)設(shè)計與平臺投資方案
- 2025年度私人診所醫(yī)療檔案管理人員聘用合同3篇
- 安保人員專業(yè)技能培訓(xùn)與實踐應(yīng)用研究
- 2025年度肉雞買賣:合同違約處理與賠償計算3篇
- 小學(xué)數(shù)學(xué)教育中心理健康教育資源的整合與應(yīng)用
- 教育心理學(xué)在培養(yǎng)孩子社交能力中的應(yīng)用研究
- 教育心理視角下的學(xué)生身體素質(zhì)培養(yǎng)策略
- 教育機(jī)構(gòu)教室裝修的現(xiàn)代簡約風(fēng)格應(yīng)用
- 小學(xué)生綜合實踐活動教程
- 實驗室人才培養(yǎng)體系的設(shè)計與實施
- 24年追覓在線測評28題及答案
- 《陸上風(fēng)電場工程概算定額》NBT 31010-2019
- 部編版初中語文七至九年級語文教材各冊人文主題與語文要素匯總一覽表合集單元目標(biāo)能力點(diǎn)
- 工程項目收入情況統(tǒng)計表
- GB/T 29490-2013企業(yè)知識產(chǎn)權(quán)管理規(guī)范
- GB/T 14436-1993工業(yè)產(chǎn)品保證文件總則
- 湖南省鄉(xiāng)鎮(zhèn)衛(wèi)生院街道社區(qū)衛(wèi)生服務(wù)中心地址醫(yī)療機(jī)構(gòu)名單目錄
- 《中外資產(chǎn)評估準(zhǔn)則》課件第6章 英國評估準(zhǔn)則
- FZ∕T 63006-2019 松緊帶
- 罐區(qū)自動化系統(tǒng)總體方案(31頁)ppt課件
- 工程建設(shè)項目內(nèi)外關(guān)系協(xié)調(diào)措施
評論
0/150
提交評論