域名訪問或者ip訪問?
域名訪問方式處理的過程:
http.png
- 客戶端訪問DNS服務(wù)器,由域名拿到負(fù)載的外網(wǎng)ip
- 客戶端使用外網(wǎng)IP訪問負(fù)載
- 負(fù)載將請求分發(fā)給實(shí)際處理HTTP請求的Web-server
優(yōu)缺點(diǎn):
1 負(fù)載集中,業(yè)務(wù)上如果有需要的話可以統(tǒng)一處理,比如為進(jìn)來的每個(gè)請求加一個(gè)logID等
2 DNS被劫持,那么整個(gè)就掛了
3 DNS再快,負(fù)載再好也要需要解析傳輸?shù)臅r(shí)間,速度自然會受到影響
設(shè)想:
如果我們將整個(gè)實(shí)際處理的機(jī)器整成一個(gè)ip列表內(nèi)置在客戶端呢?比如app,先不考慮安全的元素下,這樣可以跳過DNS的解析與負(fù)載轉(zhuǎn)發(fā),直接訪問到實(shí)際工作的web-server(隨機(jī)訪問ipList或別的方式,這個(gè)可用不同的算法實(shí)現(xiàn)),先來描繪下這個(gè)流程,再說
設(shè)想流程
imagine.png
大致就是這個(gè)樣子:
1 本地沒有ipList時(shí),走一下DNS拿到一個(gè)外網(wǎng)的IP,發(fā)出請求,拿到IPlist與它的版本號
2 當(dāng)本地有ipList存在時(shí),直接拿IPLIst請求,當(dāng)然,版本號要與當(dāng)前保持一致,這么做是為了當(dāng)ip列表發(fā)生變化的可以讓客戶端感知并保持最新.不一致時(shí),才拉取
優(yōu)點(diǎn):
- 不需要每次做DNS解析,避免劫持與節(jié)省時(shí)間
- 節(jié)省負(fù)載的轉(zhuǎn)發(fā)時(shí)間(雖然也需要隨機(jī)計(jì)算或者別的算法計(jì)算)
- ipList可能長時(shí)間都不需要拉取,因?yàn)檫@個(gè)短時(shí)間不會有太大的變化,依然可以保持水平擴(kuò)展
能想到的弊端:
- 無法提供一個(gè)公共的入口,有些公共的事可能無法提供
- 安全問題,比如最核心的ipList的傳輸安全
- 地域,dns可以提供地域優(yōu)化解析,我們好像也可以根據(jù)位置與網(wǎng)絡(luò)識別去做,但是代價(jià)好像有點(diǎn)大
結(jié)束:
我還未看到有這么處理的架構(gòu),也沒想到更致命的問題
備注:成本問題,好像成本大了點(diǎn),ip加密等一頓處理,也是消耗.

