互联网应用的思考【一】

   两年以前,对网站的认识非常浅薄,由于项目做得是java后台,认为网站开发无非是数据库,ssh(struts,spring,hibernate)加上几个jsp,当然,我一般都部署在eclipse自带的tomcat服务器上。是的,做网站可以用到这些技术,但他们只是一些环节而已。

现在我的看法是:技术永远只是帮助人达成某种目的手段而已。那么网站的本质是什么?我认为是以http协议为基础让人们交换信息的工具,出于不同的目的,我们有电子商务网站,社区网站,新闻类……
 
   首先要知道的是什么,基础无非是http协议。http不是基于p2p的,而是client-server。这里的client包括了浏览器,以及app(桌面的,移动的),所以以此类架构行程的内容和技术体系我都认为网站。当然,也有类似架构但不通过http协议的,目的也类似,暂且不说。http包括了信息交换的基本规则,client(简称c)发起请求,server(简称s)接受请求,并给出回应。

req

 

    通过浏览器可以轻易获得本次请求的所有信息,事实上,在底层协议中(tcp)发送过去的数据包也就是包含了这些数据,只不过规定了 一定格式而已。这在阅读服务器的代码就可以发现。

 

服务器接收到请求后,根据请求地址、发送数据和cookie这三者决定要返回给客户什么内容。返回以一个相应头加上一个html文件组成。

 

    服务器端的计算往往在通过一定的请求路由规则,将路径转发到对应的处理代码,以及处理代码的执行上。在传统的体系里,执行过程包括数据提取、计算、包装。关注点分别是:数据库、算法、数据存储结构和数据展示结构。

 

    说完了,当然是在我们不关心这个网站的性能之前提下。网站技术之所以被大家关注,研究,更重要的无非在于用最有限的资源提供给更多用户最流畅的使用体验。在这个话题下,上面提到的任何一步都有改进的空间和可能。在我的理解里,基于正常使用之上的改进无非以下三个方向:

  1. 高性能、高并发。如何应对更多的用户,以及一些特殊场景,如秒杀型应用。目的不是用户体验能在人多了依然保持一致,而是能让硬件的能力充分发挥。一个破机器,怎么说也不能要求它发挥超级计算机的能力吧。
  2. 鲁棒性、可预测、可控性。对于商业网站而言,尤其重要。如何在一些极端条件下存活下来,往往赢得用户。后两个性是为了辅助第一个性的,知道网站平时的行为,以及对其多一些控制力能够增加其存活能力。
  3. 扩展性、可维护性。即功能上扩展方便,排名最后的一个指标。如果非要快速的变更功能,是否要从头想想网站的初衷?

猜你喜欢

转载自iamjordan.iteye.com/blog/1855215