Nginx入门简介和反向代理、负载均衡、动静分离理解
場(chǎng)景
Nginx簡介
? ? Nginx ("engine x")是一個(gè)高性能的 HTTP 和反向代理服務(wù)器 特點(diǎn)是占有內(nèi)存少,并發(fā)能力強(qiáng),事實(shí)上 nginx 的并發(fā)能力確實(shí)在同類型的網(wǎng)頁服務(wù)器中表現(xiàn)較好,中國大陸使用 nginx網(wǎng)站用戶有:百度、京東、新浪、網(wǎng)易、騰訊、淘寶等。
? ? Nginx可以作為靜態(tài)頁面的 web 服務(wù)器,同時(shí)還支持 CGI 協(xié)議的動(dòng)態(tài)語言,比如 perl 、 php
等。但是不支持 java 。 Java 程序只能通過與 tomcat 配合完成。 Nginx 專為性能優(yōu)化而開發(fā),
性能是其最重要的考量 實(shí)現(xiàn)上非常注重效率 ,能經(jīng)受高負(fù)載的考驗(yàn) 有報(bào)告表明能支持高
達(dá) 50,000 個(gè)并發(fā)連接數(shù)。
博客:
https://blog.csdn.net/badao_liumang_qizhi
關(guān)注公眾號(hào)
霸道的程序猿
獲取編程相關(guān)電子書、教程推送與免費(fèi)下載。
實(shí)現(xiàn)
反向代理
在理解反向代理前先理解什么是正向代理。
正向代理:
? ? 如果把局域網(wǎng)外的Internet 想象成一個(gè)巨大的資源庫,則局域網(wǎng)中的客戶端要訪問 Internet ,則需要通過代理服務(wù)器來訪問,這種代理服務(wù)就稱為正向代理。
? ? 正向代理,是在用戶端的。比如需要訪問某些國外網(wǎng)站,我們可能需要購買v*n。并且v*n是在我們的用戶瀏覽器端設(shè)置的(并不是在遠(yuǎn)端的服務(wù)器設(shè)置)。瀏覽器先訪問v*n地址,v*n地址轉(zhuǎn)發(fā)請(qǐng)求,并最后將請(qǐng)求結(jié)果原路返回來。
?
反向代理:
? ? 對(duì)于客戶端來說是不知道的,也不需要對(duì)客戶端進(jìn)行任何配置,只需要將請(qǐng)求發(fā)送到反向代理服務(wù)器。由反向代理服務(wù)器去選擇目標(biāo)服務(wù)器獲取數(shù)據(jù)后,再返回給客戶端,此時(shí)反向代理服務(wù)器和目標(biāo)服務(wù)器對(duì)外就是一個(gè)服務(wù)器,暴露的是代理服務(wù)器
地址,隱藏了真實(shí)服務(wù)器 IP 地址。
?
負(fù)載均衡
??? 客戶端發(fā)送多個(gè)請(qǐng)求到服務(wù)器,服務(wù)器處理請(qǐng)求,有一些可能要與數(shù)據(jù)庫進(jìn)行交互,服務(wù)器處理完畢后,再將結(jié)果返回給客戶端。
??? ?這種架構(gòu)模式對(duì)于早期的系統(tǒng)相對(duì)單一,并發(fā)請(qǐng)求相對(duì)較少的情況下是比較適合的,成本也低。但是隨著信息數(shù)量的不斷增長,訪問量和數(shù)據(jù)量的飛速增長,以及系統(tǒng)業(yè)務(wù)的復(fù)雜度增加,這種架構(gòu)會(huì)造成服務(wù)器相應(yīng)客戶端的請(qǐng)求日益緩慢,并發(fā)量特別大的時(shí)候,還容易造成服務(wù)器直接崩潰。很明顯這是由于服務(wù)器性能的瓶頸造成的問題,那么如何解決這種情況呢? 我們首先想到的可能是升級(jí)服務(wù)器的配置,比如提高CPU執(zhí)行頻率,加大內(nèi)存等提高機(jī)器的物理性能來解決此問題,但是我們知道摩爾定律的日益失效,硬件的性能提升已經(jīng)不能滿足日益提升的需求了。最明顯的一個(gè)例子,天貓雙十一當(dāng)天,某個(gè)熱銷商品的瞬時(shí)訪問量是極其龐大的,那么類似上面的系統(tǒng)架構(gòu),將機(jī)器都增加到現(xiàn)有的頂級(jí)物理配置,都是不能夠滿足需求的。那么怎么辦呢?
??? 上面的分析我們?nèi)サ袅嗽黾臃?wù)器物理配置來解決問題的辦法,也就是說縱向解決問題的辦法行不通了,那么橫向增加服務(wù)器的數(shù)量呢?這時(shí)候集群的概念產(chǎn)生了,單個(gè)服務(wù)器解決不了,我們?cè)黾臃?wù)器的數(shù)量,然后將請(qǐng)求分發(fā)到各個(gè)服務(wù)器上,將原先請(qǐng)求集中到單個(gè)服務(wù)器上的情況改為將請(qǐng)求分發(fā)到多個(gè)服務(wù)器上,將負(fù)載分發(fā)到不同的服務(wù)器,也就是我們所說的負(fù)載均衡
這里有用Feign和Ribbon中實(shí)現(xiàn)負(fù)載均衡的示例:
SpringCloud-創(chuàng)建服務(wù)消費(fèi)者-Feign方式(附代碼下載):
https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/102595895
SpringCloud-創(chuàng)建服務(wù)消費(fèi)者-Ribbon方式(附代碼下載):
https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/102558080
?
動(dòng)靜分離
為了加快網(wǎng)站的解析速度,可以把動(dòng)態(tài)頁面和靜態(tài)頁面由不同的服務(wù)器來解析,加快解析速
度。降低原來單個(gè)服務(wù)器的壓力。
?
總結(jié)
以上是生活随笔為你收集整理的Nginx入门简介和反向代理、负载均衡、动静分离理解的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: VS中怎样对C#项目进行单元测试
- 下一篇: DevExpress的分页Tab控件Xt