对顶级门户网站架构的分析
时间:2006-06-20 来源:haojiawei
想要构建一个高效率与高可用性并重的网站,前期的开发与后期的维护固然关键,但是最重要的是从网站建设规划一始就应该有一个合理的架构。国内的一些顶级门户网站在网站架构上有很多值得我们借鉴之处。我就拿几个有代表性的网站举例,其中包括新浪,搜狐,网易以及和讯。这些网站在中国可以说是无人不知,他们每天的点击率都在千万以上。这样大的访问量对于这些网站来说怎样利用有限的资源让网民获得最快的速度成为首要的前提。另一方面,如果访问这些网站老是无法访问、或者访问速度极慢,那么就算有再好的编辑、再好的销售,他们也很难把自己的产品推销出去。为用户提供一个良好的网络环境我认为对于我们这样一个以远程教育为主的网站来说尤其重要。
上述提到的网站无一例外的使用着squid做web cache server,而apache、tomcat等web服务器在squid的后面提供真正的web服务的技术(这只是针对web服务而言的)。我并不知道实际上这些网站究竟有着怎样的架构,只是通过推断得出的结论。
(1)首先通过简单的命令行工具nslookup分析上述网站的大体构成。
1)新浪
nslookup
> www.sina.com.cn
Server: UnKnown
Address: 192.168.1.1 Non-authoritative answer:
Name: libra.sina.com.cn
Address: 202.108.33.32
Aliases: www.sina.com.cn, jupiter.sina.com.cn
从上面可以看出在新浪的DNS上sina.com.cn的Zone中只有libra.sina.com.cn一个A纪录,www.sina.com.cn, jupiter.sina.com.cn只是CNAME纪录。同样的可以nslookup一下news.sina.com.cn、finance.sina.com.cn、games.sina.com.cn等等都是libra.sina.com.cn的一个别名纪录。 2)搜狐
nslookup
> www.sohu.com
Server: UnKnown
Address: 192.168.1.1 Non-authoritative answer:
Name: pagegrp1.sohu.com
Addresses: 61.135.150.145, 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.145.47, 61.135.150.65,
61.135.150.67, 61.135.150.101,61.135.150.113, 61.135.150.121
Aliases: www.sohu.com > sports.sohu.com
Server: UnKnown
Address: 192.168.1.1 Non-authoritative answer:
Name: pagegrp1.sohu.com
Addresses: 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.145.47, 61.135.150.65,
61.135.150.67,61.135.150.101, 61.135.150.113, 61.135.150.121,
61.135.150.145, 61.135.131.91,61.135.131.180, 61.135.131.182
Aliases: sports.sohu.com > news.sohu.com
Server: UnKnown
Address: 192.168.1.1 Non-authoritative answer:
Name: pagegrp1.sohu.com
Addresses: 61.135.150.67, 61.135.150.101, 61.135.150.113, 61.135.150.121
61.135.150.145, 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.145.47, 61.135.150.65
Aliases: news.sohu.com 从上面可以看出同新浪相同各个频道的网络名称也都只是pagegrp1.sohu.com的一个别名,在搜狐的DNS服务器上多达16个主机纪录网络名称均为pagegrp1.sohu.com。而且使用了round-robin,可以注意一下上面的16IP是相同的,只是轮循时顺序不同而已。
网易的构建方式大致与新浪和搜狐相同,这里不再一一熬述了。 尝试访问新浪唯一解析到的IP地址202.108.33.32,返回下面的结果: 500)this.width=500;" border=0> 500)this.width=500;" border=0> 可以看出新浪使用的是CachePower,其ISP是北京网通。
值得注意的是nslookup www.sina.com.cn的操作我在半年前曾经做过。其返回的结果与现在有所不同,
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地址中的一个,结果如下图 500)this.width=500;" border=0> 在通过http://www.ip138.com/ips.asp查询61.172.201.230的ISP时结果是上海电信。所以新浪的网络构成,我还没有弄清楚。但至少可以肯定一点,新浪使用了squid/2.5.STABLE4。 下面直接访问搜狐的IP地址61.135.131.183,返回的结果如下 500)this.width=500;" border=0> 500)this.width=500;" border=0> 同样使用了squid,只不过版本是2.5.STABLE4。ISP也同样是北京网通。
由此我推断出一下的结论:这些顶级门户网站都是在自己的dns中设置了很多ip来指向某个域名,如libra.sina.com.cn,而其他各种相同性质的频道都只是这个主机名的别名,用CNAME指定;然后server方面,通过squid 2.5.STABLEX(稳定版本X)来侦听80端口。真正的web服务器在squid后面可能都无需公网IP;最后在web服务器后面的是数据库应用服务器,这些服务器可以做成群集,提供一个高可用性的数据库服务。这样既提高了访问效率,又兼顾了应用服务的高可用性。 (2)使用WFetch读取http头文件,分析http头中包含的信息。 500)this.width=500;" border=0> 上图是匿名head www.sina.com.cn http协议80端口时的返回信息。从http头中可以看出apache是用2.0.54,还有一些有价值的东西。下面两图是head202.108.33.32和61.172.201.230时返回的信息。 500)this.width=500;" border=0> 500)this.width=500;" border=0> (3)使用nmap+ WinPcap扫描程序:可以用来检查服务器开了什么端口。
C: \nmap-4.01-win32 >nmap 61.172.201.230 Starting Nmap 4.01 ( http://www.insecure.org/nmap ) at 2006-02-27 01:16 中国标准时间
Interesting ports on 61.172.201.230:
(The 1670 ports scanned but not shown below are in state: filtered)
PORT STATE SERVICE
22/tcp open ssh
80/tcp open http Nmap finished: 1 IP address (1 host up) scanned in 1055.218 seconds 可以看到新浪的这台服务器对外只开了2个端口,80端口就是squid打开的。而22端口是用来ssh远程连接的。一台服务器只开了提供服务所必需的端口,这样的做法极大程度地提高了服务器的安全性,是非常值得我们借鉴的。
最后要说明的是上面我所做的分析都是根据一些工具测试的结果推断出来的,可能会与实际情况不尽相同。而且实现这样一个构架的前提是网站的大部分页面都是采用的静态页面。
上述提到的网站无一例外的使用着squid做web cache server,而apache、tomcat等web服务器在squid的后面提供真正的web服务的技术(这只是针对web服务而言的)。我并不知道实际上这些网站究竟有着怎样的架构,只是通过推断得出的结论。
(1)首先通过简单的命令行工具nslookup分析上述网站的大体构成。
1)新浪
nslookup
> www.sina.com.cn
Server: UnKnown
Address: 192.168.1.1 Non-authoritative answer:
Name: libra.sina.com.cn
Address: 202.108.33.32
Aliases: www.sina.com.cn, jupiter.sina.com.cn
从上面可以看出在新浪的DNS上sina.com.cn的Zone中只有libra.sina.com.cn一个A纪录,www.sina.com.cn, jupiter.sina.com.cn只是CNAME纪录。同样的可以nslookup一下news.sina.com.cn、finance.sina.com.cn、games.sina.com.cn等等都是libra.sina.com.cn的一个别名纪录。 2)搜狐
nslookup
> www.sohu.com
Server: UnKnown
Address: 192.168.1.1 Non-authoritative answer:
Name: pagegrp1.sohu.com
Addresses: 61.135.150.145, 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.145.47, 61.135.150.65,
61.135.150.67, 61.135.150.101,61.135.150.113, 61.135.150.121
Aliases: www.sohu.com > sports.sohu.com
Server: UnKnown
Address: 192.168.1.1 Non-authoritative answer:
Name: pagegrp1.sohu.com
Addresses: 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.145.47, 61.135.150.65,
61.135.150.67,61.135.150.101, 61.135.150.113, 61.135.150.121,
61.135.150.145, 61.135.131.91,61.135.131.180, 61.135.131.182
Aliases: sports.sohu.com > news.sohu.com
Server: UnKnown
Address: 192.168.1.1 Non-authoritative answer:
Name: pagegrp1.sohu.com
Addresses: 61.135.150.67, 61.135.150.101, 61.135.150.113, 61.135.150.121
61.135.150.145, 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.145.47, 61.135.150.65
Aliases: news.sohu.com 从上面可以看出同新浪相同各个频道的网络名称也都只是pagegrp1.sohu.com的一个别名,在搜狐的DNS服务器上多达16个主机纪录网络名称均为pagegrp1.sohu.com。而且使用了round-robin,可以注意一下上面的16IP是相同的,只是轮循时顺序不同而已。
网易的构建方式大致与新浪和搜狐相同,这里不再一一熬述了。 尝试访问新浪唯一解析到的IP地址202.108.33.32,返回下面的结果: 500)this.width=500;" border=0> 500)this.width=500;" border=0> 可以看出新浪使用的是CachePower,其ISP是北京网通。
值得注意的是nslookup www.sina.com.cn的操作我在半年前曾经做过。其返回的结果与现在有所不同,
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地址中的一个,结果如下图 500)this.width=500;" border=0> 在通过http://www.ip138.com/ips.asp查询61.172.201.230的ISP时结果是上海电信。所以新浪的网络构成,我还没有弄清楚。但至少可以肯定一点,新浪使用了squid/2.5.STABLE4。 下面直接访问搜狐的IP地址61.135.131.183,返回的结果如下 500)this.width=500;" border=0> 500)this.width=500;" border=0> 同样使用了squid,只不过版本是2.5.STABLE4。ISP也同样是北京网通。
由此我推断出一下的结论:这些顶级门户网站都是在自己的dns中设置了很多ip来指向某个域名,如libra.sina.com.cn,而其他各种相同性质的频道都只是这个主机名的别名,用CNAME指定;然后server方面,通过squid 2.5.STABLEX(稳定版本X)来侦听80端口。真正的web服务器在squid后面可能都无需公网IP;最后在web服务器后面的是数据库应用服务器,这些服务器可以做成群集,提供一个高可用性的数据库服务。这样既提高了访问效率,又兼顾了应用服务的高可用性。 (2)使用WFetch读取http头文件,分析http头中包含的信息。 500)this.width=500;" border=0> 上图是匿名head www.sina.com.cn http协议80端口时的返回信息。从http头中可以看出apache是用2.0.54,还有一些有价值的东西。下面两图是head202.108.33.32和61.172.201.230时返回的信息。 500)this.width=500;" border=0> 500)this.width=500;" border=0> (3)使用nmap+ WinPcap扫描程序:可以用来检查服务器开了什么端口。
C: \nmap-4.01-win32 >nmap 61.172.201.230 Starting Nmap 4.01 ( http://www.insecure.org/nmap ) at 2006-02-27 01:16 中国标准时间
Interesting ports on 61.172.201.230:
(The 1670 ports scanned but not shown below are in state: filtered)
PORT STATE SERVICE
22/tcp open ssh
80/tcp open http Nmap finished: 1 IP address (1 host up) scanned in 1055.218 seconds 可以看到新浪的这台服务器对外只开了2个端口,80端口就是squid打开的。而22端口是用来ssh远程连接的。一台服务器只开了提供服务所必需的端口,这样的做法极大程度地提高了服务器的安全性,是非常值得我们借鉴的。
最后要说明的是上面我所做的分析都是根据一些工具测试的结果推断出来的,可能会与实际情况不尽相同。而且实现这样一个构架的前提是网站的大部分页面都是采用的静态页面。
相关阅读 更多 +