中国顶级门户网站架构分析.doc_第1页
中国顶级门户网站架构分析.doc_第2页
中国顶级门户网站架构分析.doc_第3页
中国顶级门户网站架构分析.doc_第4页
中国顶级门户网站架构分析.doc_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

中国顶级门户网站架构分析/marcolu/archive/2004/07/27/53890.aspx首先声明,下面的内容都是我个人根据一些工具形成的猜想。并不保证和现实中各大门户网站所用的架构一摸一样,不过我认为八九不离十了_ 。 整篇文章我想分2个部分来讲:第一部分是分析国内2大顶级门户网站首页和频道的初步的基本构架。第二部分我将自己做的实验文档记录下来。希望每个SA心里都能有这样的架构。新浪和搜狐在国内的知名度可谓无人不知无人不晓。他们每天的点击率都在千万以上。这样大的访问量对于新浪和搜狐来 说怎样利用有限的资源让网民获得最快的速度成为首要的前提,毕竟现在网络公司已经离开了烧钱的阶段,开始了良性发展,每一笔钱砸下去都需要一定回响才行 的。另一方面,技术人员要绞尽脑汁,不能让用户老是无法访问、或者访问速度极慢。这样就算有再好的编辑、再好的销售,他们也很难将广告位卖出去,等待他们 的将是关门。当然这些情况都没有发生,因为他们的技术人员都充分的利用了现有资源并将他们发挥到了极至。说到底就是用squid做web cache server,而apache在squid的后面提供真正的web服务。当然使用这样的架构必须要保证主页上大部分都是静态页面。这就需要程序员的配合将 页面在反馈给客户端之前将页面全部转换成静态页面。好了基本架构就这样,下面说说我怎么猜到的以及具体的架构:法宝之一:nslookup实战:nslookup Server: Address: Non-authoritative answer:Name: Addresses: 30, 31, 32, 3321, 22, 23, 24, 2526, 27, 28, 29Aliases: , 这里可以看到新浪在首页上用到了那么多IP,开始有人会想果然新浪财大气粗啊。其实不然,继续往下看:nslookup Server: Address: Non-authoritative answer:Name: Addresses: 28, 29, 30, 332, 33, 21, 22, 2324, 25, 26, 27Aliases: , 细 心的人可以发现了news这个频道的ip数和首页上一样,而且IP也完全一样。也就是这些IP在sina的DNS上的名字都叫 ,那些IP都是这个域的A记录。而news,sports,jczs.news。都是CNAME记录。用DNS 来做自动轮询。还不信,再来一个,就体育频道好了:nslookup Server: Address: Non-authoritative answer:Name: Addresses: 22, 23, 24, 2526, 27, 28, 29, 3031, 32, 33, 21Aliases: , 其他的可以自己试。好了再来看看sohu的情况:nslookup Server: Address: Non-authoritative answer:Name: Addresses: 72, 73, 76, 097, 5, 7, 9, 45, 45, 3, 1, 8082, 83, 5, 0Aliases: nslookup Server: Address: Non-authoritative answer:Name: Addresses: 45, 3, 1, 8082, 83, 5, 0, 7273, 76, 09, 7, 57, 9, 4, 5Aliases: 情况和sina一样,只是从表面来看sohu的IP数要多于sina的IP数,那么sohu上各个频道用的服务器就要多于sina了?当然不能这么说,因为一台服务器可以绑定多个IP,因此不能从IP数的多少来判断用了多少服务器。从 上面这些实验可以基本看出sina和sohu对于频道等栏目都用了相同的技术,即squid来监听这些IP的80端口,而真正的web server来监听另外一个端口。从用户的感觉上来说不会有任何的区别,而相对于将web server直接和客户端连在一起的方式,这样的方式明显的节省的带宽和服务器。用户访问的速度感觉也会更快。先说那么多了,要去睡觉了,明天还有很多工作要做有不明白的记得给我留言!前天讲了最基本的推测方法,今天稍微深入一些:)1. 难道就根据几个域名的ip相同就可以证明他们是使用squid的嘛? 当然不是,前面都只是推测。下面才是真正的证实我上面的猜测。先nslookup一把sina的体育频道。nslookup Server: Address: 36Non-authoritative answer:Name: Addresses:31, 32, 33, 0, 1, 2, 3, 4 5, 6, 7, 27, 28 29, 30Aliases: , 然后直接访问这些ip中的任意一个ip试试看,访问下来的结果应该是如下图所示:由 此可以证明sina是在dns中设置了很多ip来指向域名,而其他各种相同性质的频道都只是sqsh- 19.一个别名,用CNAME指定。dns的设置应该是这样的,然后server方面,通过squid 2.5.STABLE5(最新的稳定版为STABLE6)来侦听80端口。上面这些是根据一些信息分析而出的,应该基本正确的。下面一些就是我的个人的猜 想:它的真正的web server也同样是侦听80端口,因为在squid配置文件中有一项是:httpd_accel_port 80如果你设成其他端口号(比如88)的话,那上图的错误信息就会变成While trying to retrieve the URL:9:88工具2:nmap扫描程序:可以用来检查服务器开了什么端口。我现在用nmap来扫描sina的一个ip:9来进行分析bash-2.05$ nmap 9Starting nmap 3.50 (/nmap/ ) at 2004-07-30 13:31 GMTInteresting ports on 9:(The 1657 ports scanned but not shown below are in state: filtered)PORT STATE SERVICE22/tcp open ssh80/tcp open httpNmap 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 OKDate: Fri, 30 Jul 2004 05:49:47 GMTServer: Apache/2.0.49 (Unix)Last-Modified: Fri, 30 Jul 2004 05:48:16 GMTAccept-Ranges: bytesVary: Accept-EncodingCache-Control: max-age=60Expires: Fri, 30 Jul 2004 05:50:47 GMTContent-Length: 180747Content-Type: text/htmlAge: 37X-Cache: HIT from 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还有很多其他服务器,什么下载,在线更新等不在这个架构中。一个疑问:为何某些门户网站直接输入IP地址却无法访问嗯商業版有商業版的 Solution .但價值有待商確.Open Source 的東西基本上就可以解決了 跑的是 Squid 反向代理,根據我的經驗及樓主的訊息來看QUOTE:Generated Wed, 20 Oct 2004 00:35:04 GMT by 108-59. (squid/2.5.STABLE5)可以用下面來測試:Copy to clipboard - CODE:telnet 9 80Trying 9.Connected to 9.Escape character is .GET HTTP/1.1你就會看到 sina 的網頁.但這個command 是一般代理的命令Copy to clipboard - CODE:telnet 9 80Trying 9.Connected to 9.Escape character is .GET / HTTP/1.0Host: 這個 command 則是一般 HTTP Request他也會導出相同頁面,但這個業面根據上一個例子,我們可以猜測是運行反向代理 (也就是 的 A 記錄指向是 Proxy Server, 非 Web Server)至於樓主的例子會變成這樣的 command(不懂的話要先研究 HTTP Protocol)Copy to clipboard - CODE:telnet 9 80Trying 9.Connected to 9.Escape character is .GET / HTTP/1.0Host: 9不同的 Http Request 有不同的回應我們再試一個代理測試:Copy to clipboard - CODE:telnet 9 80Trying 9.Connected to 9.Escape character is .GET .tw HTTP/1.0上述是 HTTP/1.0 會出現 Access Deny下面是 HTTP/1.1Squid 回應 302 (就是要你自己去找目的,他不代理)Copy to clipboard - CODE:telnet 9 80Trying 9.Connected to 9.Escape character is .GET .tw HTTP/1.1同樣的功能 Apache 本身也有,就在 mod_proxy* 這個 DSO 中不然也可以找 Pound: http:/www.apsis.ch/pound原理都一樣,用 Layer 4+ Switch 技術的話,也有 L4 以上的做法但價錢恐怕就不便宜了一个疑问:为何某些门户网站直接输入IP地址却无法访问這是用 新網 DNS 解到的 資料:Copy to clipboard - CODE:. 60 IN CNAME . 60 IN CNAME . 60 IN A 8. 60 IN A 9. 60 IN A 0. 60 IN A 1這個是用 台灣的DNS 解到的 資料:Copy to clipboard - CODE:; ANSWER SECTION:. 43 IN CNAME . 43 IN CNAME . 44 IN A 84. 44 IN A 5. 44 IN A 6. 44 IN A 7. 44 IN A 8. 44 IN A 9. 44 IN A 0. 44 IN A 1. 44 IN A 2. 44 IN A 3. 44 IN A 78. 44 IN A 79. 44 IN A 80. 44 IN A 81. 44 IN A 82. 44 IN A 83很顯然的, 使用 view 來分流.另外,上述 IP 我都測了幾個,都是 squid , 所以它還用了反向代理功能反向代理通常也會有 Load Balance/redundancy 的效果在至於有沒有用 L4+ Switch 從這邊我們無法知道.但若我們看 的 MX ,我估計是有的,因為把那些 MX 的IP,各加幾碼或減幾碼拿來試 ,跑的都是 qmail所以,Web 有沒有用L4 我們不知道, MX 估計是有的若純粹以交換機來做 WWW 的分流,我相信貴公司一定很有錢一般來說,WWW 負載平衡有幾種做法:1. 交換機做法,依請求來分流,發佈的 IP 只有一個或少數幾個,但透過交換機的功能,導到交換機下的某些其他主機2. 透過 DNS 的 Round Robin 機制,隨機選取 IP 進行連接,意義等同於 (1),但可跨物理區隔3. 透過 DNS 的 Round Robin + View 功能,達到同 (1)(2) 效果,並且具有依 Source IP 不同,連接到不同 WWW Server 之功能4. 透過反向代理 (Reverse Proxy) 可以達到負載平衡,減少 Disk I/O 存取,例如一般的 Apache 即有的功能(Apache 效能可能沒有 squid or pound 等好)5. LVS 或 HA 做法.或其他方法,非本處主題Ex:Copy to clipboard - CODE:# DNS 分別有 www1/www2/www3 A 記錄#Apache 1.3 example 1, 負載平衡需要 RewriteMap; ProxyRequests On NoCache * ProxyPassReverse / / ProxyPassReverse / / ProxyPassReverse / /;Copy to clipboard - CODE:# DNS 為 CNAME , 到 www1/www2/www3 即同上理# DNS 要允許 multiple cname#Apache 1.3 example 1, 負載平衡不需要 RewriteMap; ProxyRequests On NoCache * ProxyPassReverse / /;Copy to clipboard - CODE:#squiud 部份設定, 只允許代理到 . 的請求# 例如 的 Address 需設定到這台 Proxy# 但此部 proxy 需在 /etc/hosts 中建立後台 的位址# (因為 DNS 巳指定了 的位址)http_port 80httpd_accel_host virtualhttpd_accel_single_host offhttpd_accel_port 80httpd_accel_uses_host_header onhttpd_accel_with_proxy on# accelera

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论