一、前言
在前面學(xué)習(xí)了Zookeeper中服務(wù)器的三種角色及其之間的通信,接著學(xué)習(xí)對(duì)于客戶端的一次請(qǐng)求,Zookeeper是如何進(jìn)行處理的。
二、請(qǐng)求處理
2.1 會(huì)話創(chuàng)建請(qǐng)求
Zookeeper服務(wù)端對(duì)于會(huì)話創(chuàng)建的處理,大體可以分為請(qǐng)求接收、會(huì)話創(chuàng)建、預(yù)處理、事務(wù)處理、事務(wù)應(yīng)用和會(huì)話響應(yīng)六大環(huán)節(jié),其大體流程如
1. 請(qǐng)求接收
(1) I/O層接收來(lái)自客戶端的請(qǐng)求。NIOServerCnxn維護(hù)每一個(gè)客戶端連接,客戶端與服務(wù)器端的所有通信都是由NIOServerCnxn負(fù)責(zé),其負(fù)責(zé)統(tǒng)一接收來(lái)自客戶端的所有請(qǐng)求,并將請(qǐng)求內(nèi)容從底層網(wǎng)絡(luò)I/O中完整地讀取出來(lái)。
(2) 判斷是否是客戶端會(huì)話創(chuàng)建請(qǐng)求。每個(gè)會(huì)話對(duì)應(yīng)一個(gè)NIOServerCnxn實(shí)體,對(duì)于每個(gè)請(qǐng)求,Zookeeper都會(huì)檢查當(dāng)前NIOServerCnx