分佈式系統sheepdog之sheep啓動流程

1、sheep啓動

啓動過程中會有一些初始化的工作,對於基本目錄的初始化,對於obj、epoch、journal路徑的初始化,以及對於集羣和工作隊列的初始化。下圖可以看到sheep基本的啓動流程



2、創建監聽窗口

通過socket創建來自客戶端的請求,註冊對應的listen_handler和client_handler事件,對請求進行相應的處理。相關處理函數的函數指針賦值給fn和done,如下圖右下rx_work和rx_main即可知。



3、工作隊列初始化

在線程函數worker_routine中將對應請求操作的處理函數work->fn(work)根據不同隊列不同請求執行對應處理函數,執行完後加入完成隊列,再根據不同隊列不同請求執行對應處理函數done()


4、事件觸發機制

event_loop函數根據事件觸發機制,等待新事件的到來,觸發epoll_wait,之後相應的句柄函數進行相應處理。


1、listen_handler 偵聽到客戶端有連接請求時,會將該連接 fd 註冊到主線程 efd 中,該 fd 與 client_handler 綁定,當客戶端向該 fd 發送請求時,主線程會及時檢測到並且調用 client_handler 對請求進行處理
2、local_req_handler包括對gateway、cluster、io的相關處理
3、sigfd = signalfd(-1, &mask, SFD_NONBLOCK);
4、sys->local_req_efd = eventfd(0, EFD_NONBLOCK);

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章