工作原理
一個(gè)master進(jìn)程著摔,多個(gè)worker進(jìn)程
新的worker在啟動(dòng)后蔽莱,就開始接收新的請(qǐng)求,而老的worker在收到來(lái)自master的信號(hào)后,就不再接收新的請(qǐng)求,并且在當(dāng)前進(jìn)程中的所有未處理完的請(qǐng)求處理完成后,再退出站欺。
處理方式
異步非阻塞
作者:盧毅
鏈接:http://www.zhihu.com/question/19732473/answer/20851256
來(lái)源:知乎
- 異步
你打電話問(wèn)書店老板有沒(méi)有《分布式系統(tǒng)》這本書,如果是同步通信機(jī)制纤垂,書店老板會(huì)說(shuō)矾策,你稍等,”我查一下"峭沦,然后開始查啊查贾虽,等查好了(可能是5秒,也可能是一天)告訴你結(jié)果(返回結(jié)果)熙侍。而異步通信機(jī)制榄鉴,書店老板直接告訴你我查一下啊,查好了打電話給你蛉抓,然后直接掛電話了(不返回結(jié)果)庆尘。然后查好了,他會(huì)主動(dòng)打電話給你巷送。在這里老板通過(guò)“回電”這種方式來(lái)回調(diào)驶忌。 - 非阻塞
你打電話問(wèn)書店老板有沒(méi)有《分布式系統(tǒng)》這本書,你如果是阻塞式調(diào)用笑跛,你會(huì)一直把自己“掛起”付魔,直到得到這本書有沒(méi)有的結(jié)果,如果是非阻塞式調(diào)用飞蹂,你不管老板有沒(méi)有告訴你几苍,你自己先一邊去玩了, 當(dāng)然你也要偶爾過(guò)幾分鐘check一下老板有沒(méi)有返回結(jié)果陈哑。在這里阻塞與非阻塞與是否同步異步無(wú)關(guān)妻坝。跟老板通過(guò)什么方式回答你結(jié)果無(wú)關(guān)伸眶。
特點(diǎn)
減少不必要的上下文切換
上下文切換
- 保存當(dāng)前任務(wù)的運(yùn)行環(huán)境,恢復(fù)將要運(yùn)行任務(wù)的運(yùn)行環(huán)境刽宪。
一個(gè)線程可以運(yùn)行在一個(gè)專用處理器上厘贼,也可以跨處理器。由單個(gè)處理器服務(wù)的線程都有處理器關(guān)聯(lián)(Processor Affinity)圣拄,這樣會(huì)更加有效嘴秸。在另一個(gè)處理器內(nèi)核搶占和調(diào)度線程會(huì)引起緩存丟失,作為緩存丟失和過(guò)度上下文切換的結(jié)果要訪問(wèn)本地內(nèi)存庇谆≡榔總之,這稱為“跨核上下文切換”族铆。
pipeline
- 客戶端不必等到第一個(gè)請(qǐng)求處理完后岩四,就可以馬上發(fā)起第二個(gè)請(qǐng)求哭尝。
依然是一個(gè)請(qǐng)求接一個(gè)請(qǐng)求的處理哥攘,只是在處理第一個(gè)請(qǐng)求的時(shí)候,客戶端就可以發(fā)起第二個(gè)請(qǐng)求材鹦。這樣逝淹,nginx利用pipeline減少了處理完一個(gè)請(qǐng)求后,等待第二個(gè)請(qǐng)求的請(qǐng)求頭數(shù)據(jù)的時(shí)間桶唐。
適用服務(wù)器
較好的負(fù)載均衡能力栅葡,一般作為前端服務(wù)器進(jìn)行使用。