让电信,网通用户都能够访问你的网站

来源:互联网 发布:淘宝网孕婴用品 编辑:程序博客网 时间:2024/04/30 07:45

前几天,师弟说那个酝酿了好久的微博终于上线,首先应该恭喜一下。开发过程可谓是一波三折,我参与了其中,但是没有坚持下去,我也是很无奈的,因为需要找工,实习,毕业时刻,事情诸多。

 

但是现在问题时只有教育网用户可以访问,这是无疑的,因为现在服务器我估计是放在学校经贸学院的机房里面(我曾经捣鼓过,好像是windows server)。教育网算是一个大型局域网,电信网通用户肯定是访问不了的。另外电信,网通也算是大型局域网,他们之间的互联干线带宽是很小的,因为奥运会的原因,干线带宽也扩大了一些,但是相对整个互联网的数据量来说,这是很小的。

 

他的问题是:现在要怎么让网通,电信的用户都能快速访问到微博。我就知道大概的原理,也没有跟dns厂商交涉过,也没有买过域名,ip。当时我是这种想法,如下图:

 

双线双ip

 

 

 

当然还有更简单的,更实际些的,就是找到IDC公司,买一个虚拟主机就行了,一般情况下,IDC公司都可以让你的网站能够被电信,网通用户访问到的,其实现原理也可能是基于双线双ip的。

 

虚拟主机是什么呢?你的电脑上安装apache服务器,或者nginx服务器,或者其他web服务器,这是一个真实主机。你可以在apache的配置文件中使用命令virtualhost命令虚拟出n个虚拟主机,nginx的配置文件中使用server命令也可以虚拟出n个虚拟主机。(nginx的配置相对简单,而且性能相当好,因为它基于线程的方式去处理http请求,另外就是使用epoll IO模型。)

 

一个虚拟主机对应一个域名。一台apache或者nginx服务器可以安装多个虚拟主机。这样IDC公司就可以托管多个域名,比如www.zhong.com,www.jonda.com;反应快的人,可能会想到一个问题:假如电信用户,同时访问www.zhong.comwww.jonda.com ;这会有什么问题?服务器怎么识别这2个不同的域名的呢?这问题是很自然的,因为2个域名是在同一个ip的主机里面的。

 

访问的过程是这样的:www.zhong.comwww.jonda.com 都被电信dns解析到IDC的某台机器上的ip地址(假如222.1.1.3),然后电信用户的浏览器与IDC的服务器经过3次握手建立tcp连接,因为同时访问2个域名,所以最少有2tcp连接。建立连接后,开始发送数据包。建立连接的过程只发送tcp数据包,没有应用层的数据,所以服务器是不可能知道哪个连接是要要请求哪个域名的,它只是纯粹的接受并确认tcp连接。所以,肯定是应用层里面有某个东西在标识需要访问哪个域名。这就是http头部的host字段,比如访问www.jonda.comhttp的头部有这个字段host:www.jonda.comtcp连接建立以后,发送包括应用层数据在内的数据包给服务器,这时服务器可以根据host这个字段的值来识别不同的域名。另外需要注意的是,host字段是在http1.1加进去的,这个字段的加入,让web服务器可以支持虚拟主机。http1.1还支持长连接,这就使得服务器推的技术成为了可能,比如新浪微博上的消息提示。前几天看到有人在新浪微博上说http1.2已经出来了,有空应该去看一看,让自己再次感叹一下自己的e文是多么的烂啊。

 

小型的网站,要实现各种用户同时访问,用虚拟主机,共享带宽就足够了,慢慢地发展起来后,就得考虑用独享带宽,用文中提到的第一种方案。再发展下来,一台服务器可能就不够了,要增加web服务器和数据库服务器,文件服务器等。面对大量的服务器,就得做服务器的负载均衡,而且要同步服务器之间的数据;面对频繁读的数据,需要做缓存;面对大量的计算,可以用预先计算的方式(其实现代的cpu就使用了预计算计算,就是没有要求任务,它先做计算,万一不需要,就忽略这些计算,需要的话,那就哈哈哈),也可以缓存计算的结果;面对大量的用户增加,更新的数据,需要做异步写。

 

一个强大的互联网应用,要经受高并发,大存储,高可用性,高可扩展等多方面的挑战,当前,国内也有诸多这样的应用,如新浪微博,淘宝网,qq空间等等。国外的facebooktwitter等就更不用说了。

 

业务的发展推动技术的进步,旧产品的更新,新产品的推出,但是,不论以后的业务是怎样,需求是怎样,我们创建的互联网应用都得使用tcp/ip协议(起码大部分网络是如此,起码可以预期内,不会有别的协议代替它),操作系统,还有数据结构。无奈,读书时对这些没有很在意,所以有空的时候,必须得看一看啊。

 

如果变得nb点,就不要让自己只成为某一方面的熟练工,要多看几本书,要思考,还要动手,但是实践起来也不是很容易啊,上班期间,时间几乎是被工作的事情所占用,自己抽出时间来看书,必须得周末,但是一周的疲劳工作已经累得不堪入目。最近微博上爆出“过劳死”,真是可怕啊。所以需要折中一下,节假日的时候该出去玩一玩,有空偶尔也翻翻书。我对自己是没什么奢求了,平平淡淡,健健康康就是福哦,一个简单要求就是:公司不要逼我加班。