日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當(dāng)前位置:首頁 > 科技  > 軟件

我們一起聊聊什么是正向代理和反向代理

來源: 責(zé)編: 時間:2024-03-26 09:36:06 175觀看
導(dǎo)讀從字面意思上看,代理就是代替處理的意思,一個對象有能力代替另一個對象處理某一件事。代理,這個詞在我們的日常生活中也不陌生,比如在購物、旅游等場景中,我們經(jīng)常會委托別人代替我們完成某些任務(wù)。在技術(shù)領(lǐng)域,這個概念也被

從字面意思上看,代理就是代替處理的意思,一個對象有能力代替另一個對象處理某一件事。aFT28資訊網(wǎng)——每日最新資訊28at.com

代理,這個詞在我們的日常生活中也不陌生,比如在購物、旅游等場景中,我們經(jīng)常會委托別人代替我們完成某些任務(wù)。在技術(shù)領(lǐng)域,這個概念也被廣泛應(yīng)用,尤其是在計(jì)算機(jī)網(wǎng)絡(luò)通信和程序設(shè)計(jì)中,代理扮演著相當(dāng)重要的角色,涉及控制訪問、安全保護(hù)、能力擴(kuò)展等復(fù)雜而強(qiáng)大的方面。aFT28資訊網(wǎng)——每日最新資訊28at.com

網(wǎng)絡(luò)通信中的代理

在計(jì)算機(jī)網(wǎng)絡(luò)中,說到代理,經(jīng)常會談到正向代理和反向代理的概念。aFT28資訊網(wǎng)——每日最新資訊28at.com

在詳細(xì)展開前,我們先使用一個比喻來形象的理解下這兩個概念:小明去飯館吃飯,正向代理就像是小明的朋友幫他去點(diǎn)餐,服務(wù)員并不知道最終吃飯的人是小明;而反向代理則像是飯館的服務(wù)員,他們決定把小明的訂單送到哪個廚師手里去做。通過這個比喻,我們可以初步感受到正向代理和反向代理在角色和功能上的不同。aFT28資訊網(wǎng)——每日最新資訊28at.com

搞清楚網(wǎng)絡(luò)通信中的代理和反向代理,大家只要弄明白兩件事:你在公司的電腦是怎么訪問到外網(wǎng)的,你部署的網(wǎng)站或者API又是怎么被外網(wǎng)訪問到的。aFT28資訊網(wǎng)——每日最新資訊28at.com

公司電腦上網(wǎng)

首先看公司電腦上網(wǎng):公司里的電腦一般不會直接連接到互聯(lián)網(wǎng),它們通常在一個內(nèi)網(wǎng)環(huán)境中,這既有成本的考慮,也有安全控制的需要。辦公電腦一般會先連接到交換機(jī),交換機(jī)再連接到路由器,路由器再連接到互聯(lián)網(wǎng)。aFT28資訊網(wǎng)——每日最新資訊28at.com

在這些連接中,交換機(jī)只是一個小透明,辦公電腦可以看到路由器,路由器也可以看到辦公電腦,所以交換機(jī)不是我們這里所說的代理。aFT28資訊網(wǎng)——每日最新資訊28at.com

這里真正的代理是路由器,辦公電腦訪問網(wǎng)絡(luò)時,請求先到達(dá)路由器,路由器做個請求來源的登記,記下這個請求是從哪臺電腦發(fā)出的,然后再發(fā)到互聯(lián)網(wǎng)上。請求出了路由器,互聯(lián)網(wǎng)上能夠看到的就是這個路由器,而看不到你的辦公電腦。數(shù)據(jù)從遠(yuǎn)程服務(wù)器返回時,也是先到達(dá)這個路由器,路由器再根據(jù)之前做的請求來源登記,將數(shù)據(jù)轉(zhuǎn)發(fā)到對應(yīng)的辦公電腦上。aFT28資訊網(wǎng)——每日最新資訊28at.com

這種場景下,路由器就是一個正向代理,代理內(nèi)網(wǎng)電腦訪問互聯(lián)網(wǎng)。aFT28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片aFT28資訊網(wǎng)——每日最新資訊28at.com

除了使用路由器這種比較常見的代理方式,其實(shí)還有很多方式,比如在瀏覽器中配置HTTP代理,只允許通過瀏覽器訪問外網(wǎng)。aFT28資訊網(wǎng)——每日最新資訊28at.com

網(wǎng)站被外網(wǎng)訪問

再看網(wǎng)站或者API是怎么被外網(wǎng)訪問到的:通常情況下,大家的服務(wù)器也是放在內(nèi)網(wǎng)中的,直接暴露在互聯(lián)網(wǎng)上會有安全風(fēng)險(xiǎn),也不利于管理。所以,我們會在服務(wù)器和互聯(lián)網(wǎng)之間設(shè)置一個代理服務(wù)器,通常是Nginx或者LVS這種負(fù)載均衡器。當(dāng)外網(wǎng)的用戶想要訪問你的網(wǎng)站或API時,他們的請求首先會發(fā)送到這個代理服務(wù)器上。aFT28資訊網(wǎng)——每日最新資訊28at.com

這個代理服務(wù)器就是一個反向代理。aFT28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片aFT28資訊網(wǎng)——每日最新資訊28at.com

反向代理服務(wù)器接到請求后,它知道內(nèi)網(wǎng)中哪臺服務(wù)器能提供這個服務(wù),于是它就把請求轉(zhuǎn)發(fā)給對應(yīng)的服務(wù)器。服務(wù)器處理完這個請求后,再把結(jié)果發(fā)送回反向代理服務(wù)器,最后由反向代理服務(wù)器返回給外網(wǎng)的用戶。aFT28資訊網(wǎng)——每日最新資訊28at.com

對比

以上就是計(jì)算機(jī)網(wǎng)絡(luò)中正向代理和反向代理的基本原理和應(yīng)用場景,我們再做一個對比,加深印象。aFT28資訊網(wǎng)——每日最新資訊28at.com

正向代理和反向代理的區(qū)別主要體現(xiàn)在它們服務(wù)的對象和用途上:aFT28資訊網(wǎng)——每日最新資訊28at.com

對比項(xiàng)aFT28資訊網(wǎng)——每日最新資訊28at.com

正向代理(Forward Proxy)aFT28資訊網(wǎng)——每日最新資訊28at.com

反向代理(Reverse Proxy)aFT28資訊網(wǎng)——每日最新資訊28at.com

服務(wù)對象aFT28資訊網(wǎng)——每日最新資訊28at.com

客戶端aFT28資訊網(wǎng)——每日最新資訊28at.com

服務(wù)器aFT28資訊網(wǎng)——每日最新資訊28at.com

主要用途aFT28資訊網(wǎng)——每日最新資訊28at.com

- 幫助客戶端訪問無法直接訪問的資源aFT28資訊網(wǎng)——每日最新資訊28at.com

- 進(jìn)行訪問控制和緩存以提高速度和安全性aFT28資訊網(wǎng)——每日最新資訊28at.com

- 隱藏服務(wù)器真實(shí)IP地址aFT28資訊網(wǎng)——每日最新資訊28at.com

- 提供負(fù)載均衡功能aFT28資訊網(wǎng)——每日最新資訊28at.com

- 提高服務(wù)器訪問速度和安全性aFT28資訊網(wǎng)——每日最新資訊28at.com

工作方式aFT28資訊網(wǎng)——每日最新資訊28at.com

- 客戶端配置代理服務(wù)器,請求先發(fā)送至代理服務(wù)器aFT28資訊網(wǎng)——每日最新資訊28at.com

- 代理服務(wù)器代為訪問目標(biāo)服務(wù)器并返回資源給客戶端aFT28資訊網(wǎng)——每日最新資訊28at.com

- 客戶端請求發(fā)送至反向代理服務(wù)器aFT28資訊網(wǎng)——每日最新資訊28at.com

- 反向代理服務(wù)器根據(jù)配置轉(zhuǎn)發(fā)請求到內(nèi)部網(wǎng)絡(luò)的特定服務(wù)器aFT28資訊網(wǎng)——每日最新資訊28at.com

- 從服務(wù)器獲取響應(yīng)后返回給客戶端aFT28資訊網(wǎng)——每日最新資訊28at.com

舉例說明aFT28資訊網(wǎng)——每日最新資訊28at.com

- 使用瀏覽器設(shè)置代理服務(wù)器,所有上網(wǎng)請求經(jīng)由代理服務(wù)器訪問互聯(lián)網(wǎng)資源aFT28資訊網(wǎng)——每日最新資訊28at.com

- 根據(jù)負(fù)載均衡策略將用戶請求分發(fā)到不同服務(wù)器處理aFT28資訊網(wǎng)——每日最新資訊28at.com

簡單來說,正向代理是客戶端的代理,幫助客戶端訪問到無法直接獲取的資源;反向代理是服務(wù)器的代理,幫助服務(wù)器平滑處理來自各方的請求。aFT28資訊網(wǎng)——每日最新資訊28at.com

程序設(shè)計(jì)中的代理

在程序設(shè)計(jì)中,也有一個代理模式,雖然和網(wǎng)絡(luò)中的正向代理或反向代理的概念不完全一樣,但本質(zhì)上它們都是代理的概念,都是作為中介提供隔離、隱藏、控制訪問和功能增強(qiáng)等作用。aFT28資訊網(wǎng)——每日最新資訊28at.com

Just show me the code! 現(xiàn)在我們用Go來編寫一個代理的實(shí)例程序,假設(shè)我們有一個資源類,我們希望在訪問這個資源時,記錄訪問次數(shù),并在資源不再被引用時自動釋放資源。aFT28資訊網(wǎng)——每日最新資訊28at.com

首先,定義一個資源接口Resource和實(shí)現(xiàn)這個接口的資源類MyResource:aFT28資訊網(wǎng)——每日最新資訊28at.com

package mainimport (    "fmt")// Resource 接口定義了資源需要實(shí)現(xiàn)的方法type Resource interface {    Use()    Release()}// MyResource 是實(shí)現(xiàn)了Resource接口的資源類type MyResource struct{}func (r *MyResource) Use() {    fmt.Println("Using MyResource")}func (r *MyResource) Release() {    fmt.Println("Releasing MyResource")}

然后,定義一個代理的類 ResourceProxy,它包含了對資源的引用和引用計(jì)數(shù),同時它也實(shí)現(xiàn)了Resource接口。aFT28資訊網(wǎng)——每日最新資訊28at.com

// ResourceProxy 是代理的結(jié)構(gòu)體,包含資源和引用計(jì)數(shù)type ResourceProxy struct {    resource Resource    refCount int}// NewResourceProxy 是ResourceProxy的構(gòu)造函數(shù)func NewResourceProxy(resource Resource) *ResourceProxy {    return &ResourceProxy{resource: resource, refCount: 1} // 初始引用計(jì)數(shù)為1}// Use 方法增加引用計(jì)數(shù)并使用資源func (sr *ResourceProxy) Use() {    sr.refCount++    fmt.Printf("Resource is used %d times/n", sr.refCount)    sr.resource.Use()}// Release 方法減少引用計(jì)數(shù),當(dāng)計(jì)數(shù)為0時釋放資源func (sr *ResourceProxy) Release() {    sr.refCount--    if sr.refCount == 0 {        sr.resource.Release()    } else {        fmt.Printf("Resource is still used by %d references/n", sr.refCount)    }}

最后我們使用這個代理:aFT28資訊網(wǎng)——每日最新資訊28at.com

func main() {    resource := &MyResource{}    proxyRef := NewResourceProxy(resource)    proxyRef.Use() // 使用資源,引用計(jì)數(shù)增加    proxyRef.Release() // 釋放一次引用,引用計(jì)數(shù)減少到0,資源被釋放    // Output:    // Resource is used 1 times    // Using MyResource    // Releasing MyResource}

這個簡單的例子演示了代理在資源管理中的應(yīng)用,可以根據(jù)實(shí)際需要添加更多復(fù)雜的邏輯,比如錯誤處理、同步控制、日志記錄等。aFT28資訊網(wǎng)——每日最新資訊28at.com

在程序設(shè)計(jì)中,代理模式是一種結(jié)構(gòu)型設(shè)計(jì)模式,它讓我們能提供一個替代品來代表另一個對象,這個替代品控制著對原對象的訪問,可以在訪問原對象前后進(jìn)行一些額外處理。aFT28資訊網(wǎng)——每日最新資訊28at.com

通過上邊的示例,我們可以發(fā)現(xiàn)代理模式的三個主要角色:aFT28資訊網(wǎng)——每日最新資訊28at.com

  • 抽象主題(Subject):定義了代理和真實(shí)主題的共用接口,這樣在任何使用真實(shí)主題的地方都可以使用代理。
  • 真實(shí)主題(Real Subject):實(shí)現(xiàn)了抽象主題的具體類,代表了實(shí)際的對象,是最終要使用的對象。
  • 代理(Proxy):包含對真實(shí)主題的引用,控制著對真實(shí)主題的訪問,并可能負(fù)責(zé)創(chuàng)建和刪除它。通常會做一些額外的事情來實(shí)現(xiàn)自己的價值。

在代碼實(shí)際實(shí)現(xiàn)時,代理模式其實(shí)有多種不同的實(shí)現(xiàn),包括:aFT28資訊網(wǎng)——每日最新資訊28at.com

  • 遠(yuǎn)程代理(Remote Proxy):為一個對象在不同的地址空間(通常是不同計(jì)算機(jī)上的服務(wù))提供局部代表。常見的如RPC、gRPC等,通過本地代理對象,客戶端可以像調(diào)用本地接口一樣訪問遠(yuǎn)程服務(wù),而無需關(guān)心網(wǎng)絡(luò)通信的細(xì)節(jié)。
  • 虛擬代理(Virtual Proxy):通過它來存放實(shí)例化需要很長時間的真實(shí)對象。常見的就是懶加載,比如加載一個大文件或者從數(shù)據(jù)庫中讀取大量數(shù)據(jù),我們不希望在程序啟動時就立刻加載,而是希望在真正需要這些數(shù)據(jù)的時候才去加載它們。
  • 保護(hù)代理(Protection Proxy):控制對原始對象的訪問。用于對象應(yīng)該有不同訪問權(quán)限的時候。
  • 智能引用(Smart Reference):當(dāng)對象被引用時,提供一些額外的操作,比如計(jì)算對象被引用的次數(shù)。上邊提供的代碼示例就是一個智能引用的例子。

這里就不展示更多的代碼了,關(guān)鍵是在合適的時機(jī)使用恰當(dāng)?shù)拇砟J絹斫鉀Q問題,這需要細(xì)細(xì)體會。aFT28資訊網(wǎng)——每日最新資訊28at.com

做個簡單的小結(jié),代理模式就像程序中的一個“中間人”,在不需要直接訪問某個對象,或者直接訪問某個對象不太方便或者不符合需求時,代理模式提供了一個非常靈活的解決方案。aFT28資訊網(wǎng)——每日最新資訊28at.com

正如本文所探討的,代理模式在網(wǎng)絡(luò)通信和程序設(shè)計(jì)中都扮演著重要的角色。它通過提供一個中間層,增強(qiáng)了系統(tǒng)的安全性、靈活性和可維護(hù)性。掌握代理,我們就擁有了在合適的場景下解決問題的一種強(qiáng)大能力。希望本文的討論能對你有一點(diǎn)用處。aFT28資訊網(wǎng)——每日最新資訊28at.com

本文鏈接:http://www.www897cc.com/showinfo-26-79300-0.html我們一起聊聊什么是正向代理和反向代理

聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: 實(shí)用干貨:El-input 各種輸入限制的正則整理

下一篇: G行基于OpenSearch的日志平臺設(shè)計(jì)與實(shí)踐

標(biāo)簽:
  • 熱門焦點(diǎn)
  • Find N3入網(wǎng):最高支持16+1TB

    OPPO將于近期登場的Find N3折疊屏目前已經(jīng)正式入網(wǎng),型號為PHN110。本次Find N3在外觀方面相比前兩代有很大的變化,不再是小號的橫向折疊屏,而是跟別的廠商一樣采用了較為常見的
  • 盧偉冰長文解析K60至尊版 對Redmi有著里程碑式的意義

    在今天的Redmi后性能時代戰(zhàn)略發(fā)布會結(jié)束之后,Redmi總經(jīng)理盧偉冰又帶來了一篇長文,詳解了為什么 Redmi 要開啟后性能時代?為什么選擇和 MediaTek、Pixelworks 深度合作?以及后性
  • Redmi Buds 4開箱簡評:才199還有降噪 可以無腦入

    在上個月舉辦的Redmi Note11T Pro系列新機(jī)發(fā)布會上,除了兩款手機(jī)新品之外,Redmi還帶來了兩款TWS真無線藍(lán)牙耳機(jī)產(chǎn)品,Redmi Buds 4和Redmi Buds 4 Pro,此前我們在Redmi Note11T
  • K6:面向開發(fā)人員的現(xiàn)代負(fù)載測試工具

    K6 是一個開源負(fù)載測試工具,可以輕松編寫、運(yùn)行和分析性能測試。它建立在 Go 和 JavaScript 之上,它被設(shè)計(jì)為功能強(qiáng)大、可擴(kuò)展且易于使用。k6 可用于測試各種應(yīng)用程序,包括 Web
  • 線程通訊的三種方法!通俗易懂

    線程通信是指多個線程之間通過某種機(jī)制進(jìn)行協(xié)調(diào)和交互,例如,線程等待和通知機(jī)制就是線程通訊的主要手段之一。 在 Java 中,線程等待和通知的實(shí)現(xiàn)手段有以下幾種方式:Object 類下
  • 三言兩語說透柯里化和反柯里化

    JavaScript中的柯里化(Currying)和反柯里化(Uncurrying)是兩種很有用的技術(shù),可以幫助我們寫出更加優(yōu)雅、泛用的函數(shù)。本文將首先介紹柯里化和反柯里化的概念、實(shí)現(xiàn)原理和應(yīng)用
  • 認(rèn)真聊聊東方甄選:如何告別低垂的果實(shí)

    來源:山核桃作者:財(cái)經(jīng)無忌爆火一年后,俞敏洪和他的東方甄選依舊是頗受外界關(guān)心的“網(wǎng)紅”。7月5日至9日,為期5天的東方甄選“甘肅行”首次在自有App內(nèi)直播,
  • 小米汽車電池信息疑似曝光:容量101kWh,支持800V高壓快充

    7月14日消息,今日一名博主在社交媒體發(fā)布了一張疑似小米汽車電池信息的照片,顯示該電池包正是寧德時代麒麟電池,容量為101kWh,電壓為726.7V,可以預(yù)測小
  • 華為HarmonyOS 4.0將于8月4日發(fā)布 或搭載AI大模型技術(shù)

    華為宣布HarmonyOS4.0將于8月4日正式發(fā)布。此前,華為已經(jīng)針對開發(fā)者公布了HarmonyOS4.0,以便于開發(fā)者提前進(jìn)行適配,也因此被曝光出了一些新系統(tǒng)的特性
Top 主站蜘蛛池模板: 迭部县| 正镶白旗| 城步| 松桃| 阿拉尔市| 错那县| 娄底市| 同江市| 夏河县| 怀仁县| 大兴区| 崇义县| 公安县| 彰化市| 濉溪县| 延庆县| 肇源县| 万载县| 康定县| 衢州市| 石城县| 疏勒县| 抚顺市| 重庆市| 耒阳市| 韶山市| 鄂托克前旗| 通榆县| 柳河县| 东至县| 抚松县| 仁怀市| 遂宁市| 绵竹市| 清河县| 疏附县| 舟山市| 池州市| 宜城市| 东明县| 雷波县|