??HTTP的代理服務(wù)??

Android_Banner.jpg

簡(jiǎn)介

之前介紹HTTP協(xié)議的時(shí)候廓鞠,說(shuō)HTTP協(xié)議是屬于【請(qǐng)求-應(yīng)答】的模型同仆,這個(gè)模型下只有兩個(gè)角色【請(qǐng)求方-客戶(hù)端】和【應(yīng)答方-服務(wù)器】

該模型下我們可以引入新的角色 - HTTP代理

引入代理之后整個(gè)鏈路上就不單單有客戶(hù)端和服務(wù)器宪赶,之前簡(jiǎn)單的雙方通信就變得復(fù)雜了一些睬塌;多了個(gè)中間人

代理服務(wù)

所謂的代理就是在客戶(hù)端和服務(wù)器之間的通信鏈路上插入的一個(gè)環(huán)節(jié)德撬,它本身也是一個(gè)服務(wù)器嗅虏,但是提供【代理服務(wù)】

啥是代理服務(wù)

就是說(shuō)服務(wù)本身不產(chǎn)生內(nèi)容,而是處于中間位置轉(zhuǎn)發(fā)上下游的請(qǐng)求和響應(yīng),具有雙重身份

對(duì)于服務(wù)器來(lái)說(shuō)婶芭,這個(gè)代理服務(wù)就是一個(gè)客戶(hù)端东臀,轉(zhuǎn)發(fā)客戶(hù)端的請(qǐng)求;

但是從客戶(hù)端的角度看犀农,代理服務(wù)也是一個(gè)服務(wù)器惰赋,轉(zhuǎn)發(fā)服務(wù)器的響應(yīng);

代理的作用

代理是處在HTTP通信過(guò)程的中間位置呵哨,對(duì)上屏蔽了真實(shí)的客戶(hù)端赁濒,對(duì)下屏蔽了真實(shí)的服務(wù)器;

處于這個(gè)中間位置孟害,可以為HTTP協(xié)議增加很多的靈活性拒炎;如下

負(fù)載均衡

由于有了代理服務(wù),從客戶(hù)端角度看屏蔽了源服務(wù)器纹坐,客戶(hù)端看到的就是代理服務(wù)器枝冀,源服務(wù)器有多少臺(tái),IP地址都是不知道的耘子;

那么代理服務(wù)器處于中間人的位置,就掌握了分發(fā)的【權(quán)利】球切,決定由那些服務(wù)器來(lái)響應(yīng)請(qǐng)求谷誓;

在代理中常用的負(fù)載均衡的算法有【輪詢(xún)】【一致性哈希】吨凑,目的都是把外部的流量合理的分散到多臺(tái)源服務(wù)器上捍歪。整體的提高資源的利用率和程序的性能;

HTTP代理服務(wù)-負(fù)載均衡.png
健康檢查

使用【心跳】機(jī)制監(jiān)控后段服務(wù)器鸵钝,發(fā)現(xiàn)有故障時(shí)就及時(shí)從集群中踢出去糙臼,保證服務(wù)器的高可用

安全防護(hù)

保護(hù)被代理的后端服務(wù)器,限制流量恩商,地域一些不合理的網(wǎng)絡(luò)請(qǐng)求和網(wǎng)絡(luò)攻擊

加密卸載

對(duì)外網(wǎng)使用SSL/TLS加密的通信認(rèn)證变逃,在安全的內(nèi)網(wǎng)下不加密;消除了加解密的成本消耗

數(shù)據(jù)過(guò)濾

攔截上下行的數(shù)據(jù)怠堪,任意指定策略去修改請(qǐng)求和響應(yīng)

內(nèi)容緩存

暫存和服用服務(wù)器的響應(yīng)揽乱;

代理相關(guān)的字段

代理服務(wù)器使用【Via】標(biāo)明代理的身份(主機(jī)名)

【Via】本身是一個(gè)通用字段,在請(qǐng)求頭和響應(yīng)頭中都可以出現(xiàn)粟矿;

每當(dāng)經(jīng)過(guò)一個(gè)代理節(jié)點(diǎn)的時(shí)候凰棉,代理服務(wù)器就會(huì)把自身的信息追加到字段的末尾;

會(huì)有這么一個(gè)情況陌粹,當(dāng)整個(gè)鏈路上有很多中間代理時(shí)撒犀,Via的字段會(huì)形成一個(gè)鏈表

Via字段工作示意圖
HTTP代理控制-Via.png

Via字段的存在代表鏈路中時(shí)存在代理,并不能知道對(duì)方的信息;

比如服務(wù)器需要知道客戶(hù)端真正的IP地址或舞,方便做用戶(hù)畫(huà)像荆姆、統(tǒng)計(jì)分布啊嚷那;

在HTTP協(xié)議中并沒(méi)有給這個(gè)點(diǎn)定義頭字段胞枕;

但是出現(xiàn)了很多【事實(shí)上的標(biāo)準(zhǔn)】常用的頭字段【X-Forwarded-For】、【X-Real-IP】

X-Forwarded-For和X-Real-IP

X-Forwarded-For

它的工作形式上和Via很相似魏宽,每經(jīng)過(guò)一個(gè)代理節(jié)點(diǎn)就會(huì)在字段里追加一個(gè)信息腐泻;Via追加的時(shí)代理主機(jī)名

而X-Forwarded-For追加的是請(qǐng)求方的IP地址,所以說(shuō)當(dāng)源服務(wù)器拿到X-Forwared-For字段是队询,最左側(cè)就是客戶(hù)端的真實(shí)IP地址

X-Real-Ip

就是記錄客戶(hù)端真實(shí)的IP地址派桩。它不記錄任何中間代理的信息;

代理協(xié)議

【X-Forwarded-For】需要可以記錄代理服務(wù)器的信息和客戶(hù)端的IP地址蚌斩,但是有一個(gè)問(wèn)題就是

每當(dāng)報(bào)文到達(dá)一個(gè)代理節(jié)點(diǎn)時(shí)铆惑,就需要解析報(bào)文中的頭字段,這樣的話(huà)成本就比較高了送膳;

原本代理節(jié)點(diǎn)就是一個(gè)中間轉(zhuǎn)發(fā)的能力员魏,現(xiàn)在還去解析并且還要去修改;并且在有些情況不允許甚至不可以的(HTTPS)

綜上所說(shuō)叠聋,就出現(xiàn)了【代理協(xié)議】

代理協(xié)議

是由代理軟件公司HAProxy定義的撕阎,是一個(gè)【事實(shí)標(biāo)準(zhǔn)】,被大家伙廣泛采用

它是有兩個(gè)版本 V1碌补、V2虏束;

V1類(lèi)似于HTTP,是明文的厦章;V2是二進(jìn)制格式

說(shuō)下V1

它就是在HTTP報(bào)文前增加一行ASCII碼文本

這個(gè)文本開(kāi)頭必須是【PROXY】然后是【TCP4/TCP6】代表客戶(hù)端IP地址的類(lèi)型镇匀,接著是請(qǐng)求方地址、應(yīng)答方地址袜啃,請(qǐng)求方端口汗侵、應(yīng)答方端口,最后用一個(gè)回車(chē)換行代表結(jié)束囊骤;

HTTP代理協(xié)議-格式定義.png

每當(dāng)你覺(jué)得做這件很困難晃择,壓力大的時(shí)候,說(shuō)明就是歷練你的時(shí)候也物,這時(shí)候不要放棄宫屠,堅(jiān)持下去,硬著頭皮也要上滑蚯;

最近一個(gè)版本浪蹂,在前期評(píng)估需求開(kāi)發(fā)時(shí)間時(shí)抵栈,手中有三個(gè),這時(shí)第一次一下手中超過(guò)兩個(gè)需求的情況坤次,當(dāng)時(shí)還是有點(diǎn)壓力的古劲;因?yàn)檫@個(gè)過(guò)程要關(guān)乎需求能不能按時(shí)交付以及后續(xù)這個(gè)需求由其他同學(xué)開(kāi)發(fā)時(shí),你這邊評(píng)估時(shí)一些重要的點(diǎn)沒(méi)有有聊到缰猴。不管是溝通的經(jīng)驗(yàn)還是你的拆分能力都是稍微有點(diǎn)考驗(yàn)的产艾;

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市滑绒,隨后出現(xiàn)的幾起案子闷堡,更是在濱河造成了極大的恐慌,老刑警劉巖疑故,帶你破解...
    沈念sama閱讀 217,277評(píng)論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件杠览,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡纵势,警方通過(guò)查閱死者的電腦和手機(jī)踱阿,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,689評(píng)論 3 393
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)钦铁,“玉大人软舌,你說(shuō)我怎么就攤上這事∨2埽” “怎么了葫隙?”我有些...
    開(kāi)封第一講書(shū)人閱讀 163,624評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)躏仇。 經(jīng)常有香客問(wèn)我,道長(zhǎng)腺办,這世上最難降的妖魔是什么焰手? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,356評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮怀喉,結(jié)果婚禮上书妻,老公的妹妹穿的比我還像新娘。我一直安慰自己躬拢,他們只是感情好躲履,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,402評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著聊闯,像睡著了一般工猜。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上菱蔬,一...
    開(kāi)封第一講書(shū)人閱讀 51,292評(píng)論 1 301
  • 那天篷帅,我揣著相機(jī)與錄音史侣,去河邊找鬼。 笑死魏身,一個(gè)胖子當(dāng)著我的面吹牛惊橱,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播箭昵,決...
    沈念sama閱讀 40,135評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼税朴,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了家制?” 一聲冷哼從身側(cè)響起正林,我...
    開(kāi)封第一講書(shū)人閱讀 38,992評(píng)論 0 275
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎慰丛,沒(méi)想到半個(gè)月后卓囚,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,429評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡诅病,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,636評(píng)論 3 334
  • 正文 我和宋清朗相戀三年哪亿,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片贤笆。...
    茶點(diǎn)故事閱讀 39,785評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡蝇棉,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出芥永,到底是詐尸還是另有隱情篡殷,我是刑警寧澤,帶...
    沈念sama閱讀 35,492評(píng)論 5 345
  • 正文 年R本政府宣布埋涧,位于F島的核電站板辽,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏棘催。R本人自食惡果不足惜劲弦,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,092評(píng)論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望醇坝。 院中可真熱鬧邑跪,春花似錦、人聲如沸呼猪。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,723評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)宋距。三九已至轴踱,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間乡革,已是汗流浹背寇僧。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,858評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工摊腋, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人嘁傀。 一個(gè)月前我還...
    沈念sama閱讀 47,891評(píng)論 2 370
  • 正文 我出身青樓兴蒸,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親细办。 傳聞我的和親對(duì)象是個(gè)殘疾皇子橙凳,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,713評(píng)論 2 354