中國門戶網站架構分析

http://blog.csdn.net/starxu85/archive/2008/02/28/2126249.aspx

首先聲明,下面的內容都是我個人根據一些工具形成的猜想。並不保證和現實中各大門戶網站所用的架構一摸一樣,不過我認爲八九不離十了。

網易、新浪和搜狐在國內的知名 度可謂無人不知無人不曉。他們每天的點擊率都在千萬以上。這樣大的訪問量對於網易、搜狐等來說怎樣利用有限的資源讓網民獲得最快的速度成爲首要的前提,畢 竟現在網絡公司已經離開了燒錢的階段,開始了良性發展,每一筆錢砸下去都需要一定迴響才行的。另一方面,技術人員要絞盡腦汁,不能讓用戶老是無法訪問、或 者訪問速度極慢。這樣就算有再好的編輯、再好的銷售,他們也很難將廣告位賣出去,等待他們的將是關門。當然這些情況都沒有發生,因爲他們的技術人員都充分 的利用了現有資源並將他們發揮到了極至。說到底就是用squid做web cache server,而apache在squid的後面提供真正的web服務。當然使用這樣的架構必須要保證主頁上大部分都是靜態頁面。這就需要程序員的配合將頁面在反饋給客戶端之前將頁面全部轉換成靜態頁面。好了基本架構就這樣,下面說說我怎麼猜到的以及具體的架構:

法寶之一:nslookup

實戰:

nslookup www.sina.com.cn

Server: ns-px.online.sh.cn

Address: 202.96.209.5

Non-authoritative answer:

Name: taurus.sina.com.cn

Addresses: 61.172.201.230, 61.172.201.231, 61.172.201.232, 61.172.201.233

61.172.201.221, 61.172.201.222, 61.172.201.223, 61.172.201.224, 61.172.201.225

61.172.201.226, 61.172.201.227, 61.172.201.228, 61.172.201.229

Aliases: www.sina.com.cn, jupiter.sina.com.cn

這裏可以看到新浪在首頁上用到了那麼多IP,開始有人會想果然新浪財大氣粗啊。其實不然,繼續往下看:

nslookup news.sina.com.cn

Server: ns-px.online.sh.cn

Address: 202.96.209.5

Non-authoritative answer:

Name: taurus.sina.com.cn

Addresses: 61.172.201.228, 61.172.201.229, 61.172.201.230, 61.172.201.231

61.172.201.232, 61.172.201.233, 61.172.201.221, 61.172.201.222, 61.172.201.223

61.172.201.224, 61.172.201.225, 61.172.201.226, 61.172.201.227

Aliases: news.sina.com.cn, jupiter.sina.com.cn

細心的人可以發現了news這個頻道的ip數和首頁上一樣,而且IP也完全一樣。也就是這些IP在sina的DNS上的名字都叫taurus.sina.com.cn,那些IP都是這個域的A記錄。而news,sports,jczs.news。。。都是CNAME記錄。用DNS來做自動輪詢。還不信,再來一個,就體育頻道好了:

nslookup sports.sina.com.cn

Server: ns-px.online.sh.cn

Address: 202.96.209.5

Non-authoritative answer:

Name: taurus.sina.com.cn

Addresses: 61.172.201.222, 61.172.201.223, 61.172.201.224, 61.172.201.225

61.172.201.226, 61.172.201.227, 61.172.201.228, 61.172.201.229, 61.172.201.230

61.172.201.231, 61.172.201.232, 61.172.201.233, 61.172.201.221

Aliases: sports.sina.com.cn, jupiter.sina.com.cn

其他的可以自己試。好了再來看看sohu的情況:

nslookup www.sohu.com

Server: ns-px.online.sh.cn

Address: 202.96.209.5

Non-authoritative answer:

Name: pagegrp1.sohu.com

Addresses: 61.135.132.172, 61.135.132.173, 61.135.132.176, 61.135.133.109

61.135.145.47, 61.135.150.65, 61.135.150.67, 61.135.150.69, 61.135.150.74

61.135.150.75, 61.135.150.145, 61.135.131.73, 61.135.131.91, 61.135.131.180

61.135.131.182, 61.135.131.183, 61.135.132.65, 61.135.132.80

Aliases: www.sohu.com

--------------------------------------------

nslookup news.sohu.com

Server: ns-px.online.sh.cn

Address: 202.96.209.5

Non-authoritative answer:

Name: pagegrp1.sohu.com

Addresses: 61.135.150.145, 61.135.131.73, 61.135.131.91, 61.135.131.180

61.135.131.182, 61.135.131.183, 61.135.132.65, 61.135.132.80, 61.135.132.172

61.135.132.173, 61.135.132.176, 61.135.133.109, 61.135.145.47, 61.135.150.65

61.135.150.67, 61.135.150.69, 61.135.150.74, 61.135.150.75

Aliases: news.sohu.com

情況和sina一樣,只是從表面來看sohu的IP數要多於sina的IP數,那麼sohu上各個頻道用的服務器就要多於sina了?當然不能這麼說,因爲一臺服務器可以綁定多個IP,因此不能從IP數的多少來判斷用了多少服務器。

從上面這些實驗可以基本看出sina和sohu對於頻道等欄目都用了相同的技術,即squid來監聽這些IP的80端口,而真正的web server來監聽另外一個端口。從用戶的感覺上來說不會有任何的區別,而相對於將web server直接和客戶端連在一起的方式,這樣的方式明顯的節省的帶寬和服務器。用戶訪問的速度感覺也會更快。

1. 難道就根據幾個域名的ip相同就可以證明他們是使用squid的嘛?

當然不是,前面都只是推測。下面纔是真正的證實我上面的猜測。先nslookup一把sina的體育頻道。

nslookup sports.sina.com.cn

Server: ns1.china.com

Address: 61.151.243.136

Non-authoritative answer:

Name: taurus.sina.com.cn

Addresses:61.172.201.231, 61.172.201.232, 61.172.201.233, 61.172.201.9

61.172.201.10, 61.172.201.11, 61.172.201.12, 61.172.201.13, 61.172.201.14

61.172.201.15, 61.172.201.16, 61.172.201.17, 61.172.201.227, 61.172.201.228

61.172.201.229, 61.172.201.230

Aliases: sports.sina.com.cn, jupiter.sina.com.cn

然後直接訪問這些ip中的任意一個ip試試看,訪問下來的結果應該是如下圖所示:

CDN hspace=0 src="http://61.129.102.61:808/showimg.php?iid=13" align=baseline border=0>

由此可以證明sina是在DNS中設置了很多ip來指向域名sqsh-19.sina.com.cn,而其他各種相同性質的頻道都只是sqsh-19.sina.com.cn一個別名,用CNAME指定。DNS的設置應該是這樣的,然後server方面,通過squid 2.5.STABLE5(最新的穩定版爲STABLE6)來偵聽80端口。上面這些是根據一些信息分析而出的,應該基本正確的。下面一些就是我的個人的猜想:

它的真正的web server也同樣是偵聽80端口,因爲在squid配置文件中有一項是:

httpd_accel_port 80

如果你設成其他端口號(比如88)的話,那上圖的錯誤信息就會變成

While trying to retrieve the URL: http://61.172.201.19:88

工具2:nmap掃描程序:可以用來檢查服務器開了什麼端口。

我現在用nmap來掃描sina的一個ip:61.172.201.19來進行分析

bash-2.05$ nmap 61.172.201.19

Starting nmap 3.50 ( http://www.insecure.org/nmap/ ) at 2004-07-30 13:31 GMT

Interesting ports on 61.172.201.19:

(The 1657 ports scanned but not shown below are in state: filtered)

PORT STATE SERVICE

22/tcp open ssh

80/tcp open http

Nmap run completed -- 1 IP address (1 host up) scanned in 73.191 seconds

可以看到他對外只開了2個端口,80端口就是剛纔我們說的squid打開的,這點剛纔已經驗證過了。而22端口是用來ssh遠程連接的,主要是sa用來遠程操作服務器用的安全性非常高的方法。

工具3:lynx或者其他可以讀取http頭文件的工具及小程序:

直接看例子比較好理解:

HTTP/1.0 200 OK

Date: Fri, 30 Jul 2004 05:49:47 GMT

Server: Apache/2.0.49 (Unix)

Last-Modified: Fri, 30 Jul 2004 05:48:16 GMT

Accept-Ranges: bytes

Vary: Accept-Encoding

Cache-Control: max-age=60

Expires: Fri, 30 Jul 2004 05:50:47 GMT

Content-Length: 180747

Content-Type: text/html

Age: 37

X-Cache: HIT from sqsh-230.sina.com.cn

Connection: close

上面是sina的http頭的反饋信息。裏面有很多有價值的東東哦:)譬如,它後面的 apache是用2.0.49,還設了過期時間爲2分鐘。最後修改時間。這些都是要在編譯apache的時候載入的,特別是Last-Modified還 需要小小的改一把源碼--至少我是這樣做的。

綜上所述

sina的架構應該是前面squid,按照現在的服務器2u,2g內存一般每臺服務器至少可以跑4個squid2.5stable5. 這樣它16個ip就用了4臺服務器。後面一層是apache2.0.49應該會用2臺。這2臺可能用的全是私有ip,通過前面的squid服 務器在hosts文件中指定。具體的實現方法我會下次整理出我做實驗的文檔:)而apache的htdocs可能是有一個或2個磁盤陣列作nfs。 apache mount nfs server的時候應該是隻讀的,然後另外還有服務器轉門用來做編輯器服務器,用來編輯人員更新文章。這臺服務器應該對nfs server是具有可寫的權限。

----這就一套完整的sina所運用的方案,當然很多是靠猜測的,我沒有和sina的技術人員有過任何溝通(因爲一個也不認識),否則我也就不會寫出來了。其他sohu,163應該也有這樣的架構。

最後聲明:這只是一些靜態頁面組成頻道的一個架構,sina還有很多其他服務器,什麼下載,在線更新等不在這個架構中。

1、  新浪

新浪採用了ChinaCache做的CDN系統,ChinaCache在全國分佈了四十多個點,同時採用基於動態dns分配的全球服務器負載均衡技術。

        從新浪的站點結構可以看出:

> www.sina.com.cn

Server:  UnKnown

Address:  192.168.1.254

 

Non-authoritative answer:

Name:    libra.sina.com.cn

Addresses:  61.135.152.71, 61.135.152.72, 61.135.152.73, 61.135.152.74          61.135.152.75, 61.135.152.76, 61.135.153.181, 61.135.153.182, 61.135.53.183,       61.135.153.184, 61.135.152.65, 61.135.152.66, 61.135.152.67, 61.135.12.68,  61.135.152.69, 61.135.152.70

Aliases:  www.sina.com.cn, jupiter.sina.com.cn

        在北京地區ChinaCache將www.sina.com.cn的網址解析到libra.sina.com.cn,然後libra.sina.com.cn做了dns負載均衡,將libra.sina.com.cn解析到61.135.152.71等16個ip上,這16個ip分佈在北京的多臺前臺緩存服務器上,使用squid做前臺緩存。如果是在其它地區訪問www.sina.com.cn可能解析到本地相應的服務器,例如pavo.sina.com.cn,然後pavo又對應了很多做了squid的ip。這樣就實現了在不同地區訪問自動轉到最近的服務器訪問,達到加快訪問速度的效果。

        我們再看一個新浪其它頻道是指到哪裏的:

> news.sina.com.cn

Server:  UnKnown

Address:  192.168.1.254

 

Non-authoritative answer:

Name:    libra.sina.com.cn

Addresses:  61.135.152.65, 61.135.152.66, 61.135.152.67, 61.135.152.68          61.135.152.69, 61.135.152.70, 61.135.152.71, 61.135.152.72, 61.135.152.73          61.135.153.178, 61.135.153.179, 61.135.153.180, 61.135.153.181, 61.135.153.182          61.135.153.183, 61.135.153.184

Aliases:  news.sina.com.cn, jupiter.sina.com.cn

可以看出,各個頻道的前臺緩存集羣與www.sina.com.cn的前臺緩存集羣是相同的。

2、  搜狐

Sohu與新浪的原理差不多,下面是nslookup的結果:

> www.sohu.com

Server:  UnKnown

Address:  192.168.1.254

 

Non-authoritative answer:

Name:    pagegrp1.sohu.com

Addresses:  61.135.132.172, 61.135.132.173, 61.135.132.176, 61.135.133.109          61.135.145.47, 61.135.150.65, 61.135.150.67, 61.135.150.69, 61.135.150.74           61.135.150.75, 61.135.150.113, 61.135.150.145, 61.135.131.73, 61.135.131.91          61.135.131.180, 61.135.131.182, 61.135.131.183, 61.135.132.65, 61.135.

132.80

Aliases:  www.sohu.com

只不過libra.sina.com.cn換成了pagegrp1.sohu.com

我們再來看一下sohu的頻道:

> news.sohu.com

Server:  UnKnown

Address:  192.168.1.254

 

Non-authoritative answer:

Name:    pagegrp1.sohu.com

Addresses:  61.135.145.47, 61.135.150.65, 61.135.150.67, 61.135.150.69          61.135.150.74, 61.135.150.75, 61.135.150.113, 61.135.150.145, 61.135.131.73          61.135.131.91, 61.135.131.180, 61.135.131.182, 61.135.131.183, 61.135.132.65          61.135.132.80, 61.135.132.172, 61.135.132.173, 61.135.132.176, 61.135.133.109

Aliases:  news.sohu.com

同新浪相同,用的是同樣的服務器羣,這可能是因爲他們用的都是ChinaCache的服務吧,不過sohu的名字起的有點土,pagegrp1,沒有libra,pavo好聽,這名字聽起來有點像法語,比較浪漫。

3、  網易

網易似乎沒用ChinaCache的服務,下面是nslookup結果:

> www.163.com

Server:  UnKnown

Address:  192.168.1.254

 

Non-authoritative answer:

Name:    www.163.com

Addresses:  202.106.168.103, 202.106.168.104, 202.106.168.109, 202.106.168.121          202.108.36.153, 202.108.36.155, 202.108.36.156, 202.108.36.167, 202.108.36.172          202.108.36.196

直接在www.163.com 這個域名上做了dns負載均衡。這樣的話就要求服務器必須放的非常靠近主節點,才能保證各地的用戶訪問的速度。

但163不同的頻道是放在不同的緩存集羣上的,這與sina,sohu有些不同,等於sina,sohu是按照地區劃分服務器集羣,而網易按照頻道劃分服務器集羣。

> 163.com

Server:  UnKnown

Address:  192.168.1.254

 

Non-authoritative answer:

Name:    163.com

Addresses:  202.108.36.205, 202.108.36.206, 202.108.36.207, 202.108.36.201          202.108.36.202, 202.108.36.203, 202.108.36.204

顯然,這和www.163.com不是一個集羣,我們再來試一個:

> sports.163.com

Server:  UnKnown

Address:  192.168.1.254

 

Non-authoritative answer:

Name:    channel.cache.163.com

Addresses:  202.108.36.136, 202.108.36.208, 202.108.36.209, 202.108.36.210          202.108.36.211, 202.108.36.212, 202.108.36.213

Aliases:  sports.163.com

可以看出,和上面的集羣也是不同的。

4、  百度

百度的前臺服務器就不是很多了:

> www.baidu.com

Server:  UnKnown

Address:  192.168.1.254

 

Non-authoritative answer:

Name:    www.baidu.com

Addresses:  202.108.250.249, 202.108.249.134

 

> baidu.com

Server:  UnKnown

Address:  192.168.1.254

 

Non-authoritative answer:

Name:    baidu.com

Address:  202.108.250.228

 

> mp3.baidu.com

Server:  UnKnown

Address:  192.168.1.254

 

Non-authoritative answer:

Name:    mp3.baidu.com

Address:  202.108.249.131

只有www.baidu.com做了兩臺服務器的集羣,頻道都用了一臺服務器做前臺

 

5、  一搜

> yisou.com

Server:  UnKnown

Address:  192.168.1.254

 

Non-authoritative answer:

Name:    yisou.com

Addresses:  202.165.102.114, 202.43.217.14, 202.43.217.15, 202.43.217.16          202.43.217.17, 202.165.102.111, 202.165.102.112, 202.165.102.113

 

> www.yisou.com

Server:  UnKnown

Address:  192.168.1.254

 

Non-authoritative answer:

Name:    www.yisou.com

Addresses:  202.43.217.17, 202.165.102.111, 202.165.102.112, 202.165.102.113          202.165.102.114, 202.43.217.14, 202.43.217.15, 202.43.217.16

 

> mp3.yisou.com

Server:  UnKnown

Address:  192.168.1.254

 

Non-authoritative answer:

Name:    www.yisou.com

Addresses:  202.165.102.113, 202.165.102.114, 202.43.217.14, 202.43.217.15          202.43.217.16, 202.43.217.17, 202.165.102.111, 22.165.102.112

Aliases:  mp3.yisou.com

       前臺做了8臺服務器的緩存集羣,www.yisou.com和 yisou.com以及mp3.yisou.com是用的同一個集羣。

 

通過前面的分析我們可以得到一個結論:sina和sohu使用了CDN與GSBL與dns負載均衡技術,每個地區一組前臺服務器羣,網易,百度使用了dns負載均衡技術,每個頻道一組前臺服務器,一搜使用了dns負載技術,所有頻道共用一組前臺服務器集羣。

發佈了23 篇原創文章 · 獲贊 0 · 訪問量 8萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章