Twemproxy初始化過程比較簡單,這裏把Twemproxy初始化過程分成兩部分:(1)讀取運行選項;(2)運行前的初始化和準備;
(1) 讀取運行選項
讀取各項參數的設置,比如是否後臺運行(daemonize)、日誌級別、日誌文件、配置文件名稱等信息。
正如前一章(概述)裏講到的,Twemproxy使用了一個全局變量nc(類型爲struct instance)保存所有的信息,包括選項配置信息。
(2) 運行前的初始化和準備(nc_pre_run);
圖1. 運行前準備流程圖
附上正式接收請求的運行前準備源碼,邏輯清晰,都不需要註釋:
static rstatus_t
nc_pre_run(struct instance *nci)
{
rstatus_t status;
status = log_init(nci->log_level, nci->log_filename);
if (status != NC_OK) {
return status;
}
if (daemonize) {
status = nc_daemonize(1);
if (status != NC_OK) {
return status;
}
}
nci->pid = getpid();
status = signal_init();
if (status != NC_OK) {
return status;
}
if (nci->pid_filename) {
status = nc_create_pidfile(nci);
if (status != NC_OK) {
return status;
}
}
nc_print_run(nci);
return NC_OK;
}