暫且放下你的編程語言來瞻仰下我所見過的最棒的標(biāo)準(zhǔn)庫。
為項(xiàng)目選擇編程語言和挑選你最愛的球隊(duì)不一樣。應(yīng)該從實(shí)用主義出發(fā),根據(jù)特定的工作選擇合適的工具。
在這篇文章中我會(huì)告訴你從何時(shí)開始并且為什么我認(rèn)為 Go 語言如此閃耀,具體來說是它的標(biāo)準(zhǔn)庫對(duì)于基本的網(wǎng)絡(luò)編程來說顯得非常穩(wěn)固。更具體一點(diǎn),我們將要編寫一個(gè)反向代理程序。
Go 為此提供了很多,但真正支撐起它的在于這些低級(jí)的網(wǎng)絡(luò)管道任務(wù),沒有更好的語言了。
反向代理是什么? 有個(gè)很棒的說法是流量轉(zhuǎn)發(fā) 。我獲取到客戶端來的請(qǐng)求,將它發(fā)往另一個(gè)服務(wù)器,從服務(wù)器獲取到響應(yīng)再回給原先的客戶端。反向的意義簡單來說在于這個(gè)代理自身決定了何時(shí)將流量發(fā)往何處。
為什么這很有用?因?yàn)榉聪虼淼母拍钍侨绱撕唵我灾劣谒梢员粦?yīng)用于許多不同的場景:負(fù)載均衡,A/B 測試,高速緩存,驗(yàn)證等等。
當(dāng)讀完這篇文章之后,你會(huì)學(xué)到:
我們的反向代理項(xiàng)目
我們來實(shí)際寫一下項(xiàng)目。我們需要一個(gè) Web 服務(wù)器能夠提供以下功能:
準(zhǔn)備工作
環(huán)境配置
我們要做的第一件事是將我們的配置信息寫入環(huán)境變量,如此就可以使用它們而不必寫死在我們的源代碼中。
我發(fā)現(xiàn)最好的方式是創(chuàng)建一個(gè)包含所需環(huán)境變量的 .env
文件。
以下就是我為特定項(xiàng)目編寫的文件內(nèi)容:
export PORT=1330 export A_CONDITION_URL="http://localhost:1331" export B_CONDITION_URL="http://localhost:1332" export DEFAULT_CONDITION_URL=http://localhost:1333
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。