武當學藝之反向代理

接下來發生了一些事情,張翠山夫婦雙雙自盡,他們的兒子張無忌又被打傷,張三丰和武當諸俠都忙於給張無忌療傷,無暇顧及各自弟子的武學,而且爲了諸俠和張老道的安全,給他們的問題不再直接交到他們手裏,每人選了一個得意的弟子,代替自己解答問題,這些弟子的記憶力和反應都不錯,可以解答大部分的問題,假如遇到不會的問題,就先向師父請教,然後回答給提問題的弟子,這樣不僅大大減輕了諸俠的負擔,而且防止了一些危險,比如在在便條上下毒,保護了諸俠的安全(徒弟的命就不值錢了?)。

在這種關係裏,武當諸俠和他們的代理弟子構成了反向代理(Reverse Proxy)的關係,反向代理一般作用有三:減輕源服務器負載,保障源服務器安全,對源服務器進行負載均衡(Load Balance)。

一般反向代理置於源服務器的前端,配備大容量的內存和高速磁盤,緩存客戶的請求,所以反向代理又稱爲服務器加速(Server accelerate)。源服務器一般不再和客戶直接通訊,當客戶請求沒有緩存的內容或者動態內容時,反向代理向源服務器發送請求,然後把迴應轉發給客戶,在這種情況下,反向代理服務器通常要爲一個請求同時維護兩個會話。和普通的代理不同,反向代理一般只代理一臺或者有限的幾臺服務器,對於客戶而言,反向代理服務器對於他們就相當於源服務器,對於源服務器而言,反向代理服務器通常就是唯一的客戶,因爲一般客戶不和源服務器直接通信。典型情況下,源服務器對於客戶或者客戶對於源服務器,都是不可見的。

過了一段時間,張三丰覺得無法根治張無忌的體內的玄冥寒氣,決定帶他下山到少林寺去碰碰運氣,爲了讓請教張三丰的弟子不至於得不到解答,宋遠橋和俞蓮舟暫時代替張三丰答題,凡是有請教張三丰的問題,宋青書就輪流送到宋遠橋或者俞蓮舟的住所。

張老道不在山上,可是他負責的服務不會中斷,這種情況可以稱爲離線緩存(Offline Caching),宋青書的所作的相當於把一個域名交替解析到兩個或者以上的地址上去,這個就是DNS輪詢。

張三丰所學太過淵博,單憑宋或者俞任何一人都難以回答所有的問題,兩個人的知識加起來纔可以勉強做到,但是宋青書卻有時候把宋遠橋不會的問題送到宋遠橋那裏,俞蓮舟也常常遇到這種尷尬(說明宋青書到底還是少了根筋)。這兩位到底是高人,一合計,決定視情況採取以下三種辦法之一:
1.假如宋遠橋收到自己不會的,就寫回復說自己很忙,而且這個問題俞蓮舟很有研究,叫弟子另外寫紙條問俞蓮舟,俞也是如此這般。
2.宋遠橋把紙條給俞蓮舟解答,然後自己把解答給弟子。
3.宋遠橋把紙條給俞蓮舟解答,俞把解答給弟子。

第一種方法稱爲內容轉向(URL Redirection),就是當服務器發送給客戶端一個特殊迴應和新的URL,表示客戶應該在其他的地方取得內容,然後客戶向新的URL提出請求以獲取內容,很多的協議都支持,開發過web的人對redirection和302 code應該都很熟悉。

第二種方法中,問問題的弟子,宋遠橋,俞蓮舟,還有張三丰構成了多重代理關係,宋相當於俞的反向代理,俞又是張三丰的反向代理。這個過程,對客戶是完全不可見的。

第三種方法稱爲三角傳輸,宋,俞,弟子的請求應答構成了一個三角形,這種方式中,客戶向A服務器發起請求,A服務器把請求轉發到B服務器,然後根據客戶的控制由B服務器向客戶發送內容。

這三種方式各有優缺點,內容轉向比較靈活,但是需要應用協議的支持(目前HTTP,MMS,RTSP支持),而且轉向次數一般有限制。多重代理構造複雜,而且因爲代理需要維持雙倍的會話,服務器負擔很重。三角傳輸適合於請求流量小而回應內容流量多(比如流媒體)的情況,但是需要特殊網絡設備(radware wsd)的支持,某些情況下,三角傳輸的前端還易於成爲瓶頸。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章