Nginx

分布式

Nginx

1. 請(qǐng)解釋什么是C10K問題或者知道什么是C10K問題嗎赃磨?

在1999年窘问,Dan Kegel向網(wǎng)絡(luò)服務(wù)器提出了一個(gè)難題

是時(shí)候讓網(wǎng)絡(luò)服務(wù)器去同時(shí)應(yīng)對(duì)10k個(gè)客戶端了。你覺得呢枷踏?畢竟網(wǎng)絡(luò)已經(jīng)變得很普及了步鉴。

通過改善操作系統(tǒng)內(nèi)核和從像Apache那樣的線程服務(wù)器遷移到像Nginx,Node這樣的時(shí)間驅(qū)動(dòng)服務(wù)器艾君,C10K問題已經(jīng)被解決了。現(xiàn)在我們更需要考慮的問題是肄方,如何同時(shí)應(yīng)對(duì)一千萬個(gè)連接冰垄?

參考:
《10K 問題的解決:一個(gè)系統(tǒng)管理員如何管理 2000x 臺(tái)服務(wù)器》

2. Nginx簡介

相對(duì)于大家熟知的ApplicationServe服務(wù)器Tomcat,作為HttpServer的Nginx是一款自由的权她,開源的播演,高性能Http服務(wù)器和反向代理服務(wù)器冀瓦。也是一個(gè)IMAP,POP3写烤,SMTP代理服務(wù)器。Nginx本身就可以類似Tomcat一樣托管網(wǎng)站拾徙,進(jìn)行Http服務(wù)處理洲炊,也可以作為代理服務(wù)器使用。

它不像傳統(tǒng)服務(wù)器那樣使用線程處理請(qǐng)求尼啡,而是采用事件驅(qū)動(dòng)機(jī)制————一種異步事件驅(qū)動(dòng)結(jié)構(gòu)暂衡。

我們在這里可以梳理下服務(wù)器的類型:

  1. Web服務(wù)器:提供Http的訪問,例如Nginx崖瞭,Apache狂巢,IIS等。雖然Tomcat也能夠?qū)崿F(xiàn)书聚,但并不是TOmcat的主要功能唧领,而且性能也遠(yuǎn)遠(yuǎn)不如專門的web服務(wù)器。
  2. 應(yīng)用程序服務(wù)器:能夠用于應(yīng)用程序的運(yùn)行雌续。
  3. 代理服務(wù)器:代理服務(wù)器通常是客戶端訪問的一種行為斩个,在整個(gè)客戶端訪問服務(wù)器的過程中有著重要的作用。
  4. 反向代理
  5. 后臺(tái)服務(wù)器
  6. CDN緩存服務(wù)器:屬于緩存服務(wù)器驯杜,而且是反向代理的應(yīng)用受啥,在網(wǎng)站部署的時(shí)候,是一種解決遠(yuǎn)距離訪問的策略鸽心。

參考:
《Nginx初探》

3. 正向代理和反向代理.

3.1 正向代理
正向代理類似一個(gè)跳板機(jī)滚局,用于代替用于訪問外部資源,再把訪問結(jié)果返回給用戶顽频。
對(duì)于服務(wù)器而言藤肢,只會(huì)接到代理服務(wù)器的Request請(qǐng)求,它并不知道這是真正用戶的請(qǐng)求冲九,也并不知道這是代理的訪問谤草,代理在這里扮演的是客戶端的角色。
對(duì)于客戶端而言莺奸,必須設(shè)置正向代理服務(wù)器丑孩,要知道正向代理服務(wù)器的IP地址和代理程序的端口,對(duì)它而言代理扮演的是服務(wù)器的角色灭贷,它是作用于客戶端的温学。

3.2 反向代理

反向代理與正想代理相反。對(duì)于客戶端而言代理服務(wù)器是原始服務(wù)器甚疟,而且客戶端不需要像正向代理那樣進(jìn)行任何特殊的設(shè)置仗岖√友樱客戶端向反向代理的命名空間(namespace)中的內(nèi)容發(fā)送普通請(qǐng)求,接著反向代理將判斷向何處(原始服務(wù)器)轉(zhuǎn)交請(qǐng)求轧拄,并將獲得的內(nèi)容返回給客戶端揽祥。
客戶是無法感知代理的蹲在的。它對(duì)外都是透明的檩电。它可以保證內(nèi)網(wǎng)的安全拄丰,大型網(wǎng)站通常將反向代理作為公網(wǎng)訪問地址,而Web服務(wù)器則是內(nèi)網(wǎng)俐末。同時(shí)它也能優(yōu)化網(wǎng)站的負(fù)載料按,也就是負(fù)載均衡。

參考:
《正向代理與反向代理【總結(jié)】》
《Nginx初探》

4. Nginx幾種常見的負(fù)載均衡策略

Nginx可以根據(jù)客戶端IP進(jìn)行負(fù)載均衡卓箫。在upstream設(shè)置ip_hash载矿,就可以在C類地址段中的客戶端選擇同一個(gè)后端服務(wù)器,除服此服務(wù)器宕機(jī)烹卒。
Nginx目前支持5中分配方式

  1. 輪詢(默認(rèn)方式)
    每個(gè)請(qǐng)求按照時(shí)間順序注意分配到不同的后端服務(wù)器闷盔,如果后端服務(wù)器宕機(jī),則自動(dòng)剔除甫题。
  2. 指定權(quán)重
    指定輪詢幾率馁筐,weight和訪問比率成正比∽狗牵可以用于后端服務(wù)器性能不一的情況敏沉。
  3. IP綁定ip_hash
    每個(gè)請(qǐng)求按照訪問ip的hash結(jié)果分配,這樣每個(gè)方可固定訪問到一個(gè)后端服務(wù)器炎码,這樣可以解決session問題盟迟。
  4. fair(第三方)
    按照后端服務(wù)器的響應(yīng)時(shí)間來分配請(qǐng)求,響應(yīng)時(shí)間短的優(yōu)先分配潦闲。
  5. url_hash(第三方)
    按照訪問url的hash結(jié)果來分配請(qǐng)求攒菠,使每一個(gè)url定向到同一個(gè)后端服務(wù)器。后端服務(wù)器如果為緩存時(shí)比較有效歉闰。

參考:
《nginx負(fù)載均衡的5種策略(轉(zhuǎn)載)》

5. Nginx服務(wù)器上的Master和Worker進(jìn)程分別是什么

Nginx是采用多進(jìn)程的方式來工作的辖众。當(dāng)然Nginx也是支持多線程的方式的。只是我們主流的方式還是多進(jìn)程的方式和敬,也是Nginx的默認(rèn)方式凹炸。

Nginx啟動(dòng)后,會(huì)有一個(gè)master進(jìn)程和多個(gè)worker進(jìn)程昼弟。
master進(jìn)程用來管理worker進(jìn)程啤它,它接收來自外界的信號(hào),向各worker進(jìn)程發(fā)送信號(hào),監(jiān)控worker進(jìn)程的運(yùn)行狀態(tài)变骡。當(dāng)worker進(jìn)程在異常情況下退出后离赫,會(huì)自動(dòng)重新啟動(dòng)新的worker進(jìn)程。
worker進(jìn)程會(huì)處理基本的網(wǎng)絡(luò)事件塌碌。多個(gè)worker進(jìn)程之間是對(duì)等的渊胸,它們同等競爭來自客戶端的請(qǐng)求,各進(jìn)程之間是獨(dú)立的誊爹。一個(gè)請(qǐng)求只能在一個(gè)worker進(jìn)程中處理蹬刷,而一個(gè)worker進(jìn)程不可能處理其他進(jìn)程的請(qǐng)求。
worker進(jìn)程的個(gè)數(shù)是可以設(shè)置的频丘。一般會(huì)設(shè)置為與機(jī)器CPU核數(shù)一致,這是因?yàn)镹ginx的進(jìn)程模型和處理模型泡态。

參考:
《Nginx初探》

6. 使用“反向代理服務(wù)器”的優(yōu)點(diǎn)是什么?

6.1 負(fù)載均衡
在集群環(huán)境下搂漠,Nginx可以支持負(fù)載均衡,使網(wǎng)站獲得更好的性能和穩(wěn)定性某弦。他有多種負(fù)載均衡策略桐汤,可以根據(jù)具體業(yè)務(wù)環(huán)境和硬件配置進(jìn)行較為靈活的改變,從而實(shí)現(xiàn)分流與負(fù)載均衡靶壮。

6.2 作為一個(gè)屏障來在一定程度上保護(hù)網(wǎng)站的安全

參考:
《Nginx 反向代理為什么可以提高網(wǎng)站性能怔毛?》

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市腾降,隨后出現(xiàn)的幾起案子拣度,更是在濱河造成了極大的恐慌,老刑警劉巖螃壤,帶你破解...
    沈念sama閱讀 218,858評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件抗果,死亡現(xiàn)場離奇詭異,居然都是意外死亡奸晴,警方通過查閱死者的電腦和手機(jī)冤馏,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,372評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來寄啼,“玉大人逮光,你說我怎么就攤上這事《栈” “怎么了涕刚?”我有些...
    開封第一講書人閱讀 165,282評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長走诞。 經(jīng)常有香客問我副女,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,842評(píng)論 1 295
  • 正文 為了忘掉前任碑幅,我火速辦了婚禮戴陡,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘沟涨。我一直安慰自己恤批,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,857評(píng)論 6 392
  • 文/花漫 我一把揭開白布裹赴。 她就那樣靜靜地躺著喜庞,像睡著了一般。 火紅的嫁衣襯著肌膚如雪棋返。 梳的紋絲不亂的頭發(fā)上延都,一...
    開封第一講書人閱讀 51,679評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音睛竣,去河邊找鬼晰房。 笑死,一個(gè)胖子當(dāng)著我的面吹牛射沟,可吹牛的內(nèi)容都是我干的殊者。 我是一名探鬼主播,決...
    沈念sama閱讀 40,406評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼验夯,長吁一口氣:“原來是場噩夢啊……” “哼猖吴!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起挥转,我...
    開封第一講書人閱讀 39,311評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤海蔽,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后扁位,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體准潭,經(jīng)...
    沈念sama閱讀 45,767評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,945評(píng)論 3 336
  • 正文 我和宋清朗相戀三年域仇,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了刑然。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,090評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡暇务,死狀恐怖泼掠,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情垦细,我是刑警寧澤择镇,帶...
    沈念sama閱讀 35,785評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站括改,受9級(jí)特大地震影響腻豌,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,420評(píng)論 3 331
  • 文/蒙蒙 一吝梅、第九天 我趴在偏房一處隱蔽的房頂上張望虱疏。 院中可真熱鬧,春花似錦苏携、人聲如沸做瞪。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,988評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽装蓬。三九已至,卻和暖如春纱扭,著一層夾襖步出監(jiān)牢的瞬間牍帚,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,101評(píng)論 1 271
  • 我被黑心中介騙來泰國打工乳蛾, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留履羞,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,298評(píng)論 3 372
  • 正文 我出身青樓屡久,卻偏偏與公主長得像,于是被迫代替她去往敵國和親爱榔。 傳聞我的和親對(duì)象是個(gè)殘疾皇子被环,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,033評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容