在twemproxy的發(fā)送和接收流程剖析中,我們已經(jīng)完全弄清楚twemproxy如何將客戶端以及服務(wù)端發(fā)來的包切分成msg,獲得一個獨(dú)立的msg后twemproxy應(yīng)該如何處理?這是本文這次需要重點(diǎn)介紹的內(nèi)容。
twemproxy的主干流程
圖1 twemproxy的主干流程
如圖1所示,twemproxy主要通過3個隊列進(jìn)行模塊間的數(shù)據(jù)交互:客戶端連接conn的發(fā)送隊列conn->omsg_q,服務(wù)端連接s_conn的輸入隊列s_conn->imsg_q,服務(wù)端連接s_conn的發(fā)送隊列s_conn->omsg_q以及conn->omsg_q里的msg的對應(yīng)回復(fù)peer。
客戶層接收模塊將所有需要回復(fù)的msg處理后分別寫入到客戶端conn連接的發(fā)送隊列conn->omsg_q以及服務(wù)端連接s_conn的輸入隊列s_conn->imsg_q。
服務(wù)層發(fā)送模塊從服務(wù)端連接s_c