当你在浏览器输入一个网址回车后究竟发生了什么?其实这可以作为一个面试题来考察候选人了,我也被问过类似的问题,这里书面化下,方便记忆。首先分析下这个问题想要问的是什么,其实这个问题可以回答的很深,也可以回答的很浅,这里按我个人的思路来回答,结合图表方便理解。
2、服务器做了什么?
服务器做了什么也是因情况而定的,有的很简单,有的则比较复杂,这里常规的谈谈。
1)服务器防火墙,这里是为了保护服务而设置的,这里可以有效的拒觉不合理的请求,让服务可以正常地给需要的人使用,但并不是所有的网站都存在。
2)域名服务器,还以上面我在浏览器中输入的地址为例,cxf是apache.org的子域名,请求先到apache.org,再通过域名服务器查找 cxf.apache.org的真正IP,再根据IP找到对应的服务器。
3)负载均衡器,一般为了能够为更多的用户服务,一个域名背后可能是多个服务器,那么一次请求最终由谁来处理,这就由负载均衡来决定。负载均衡其实也有好多可以聊的,这个也后面单独写文章聊吧,比方如何处理带session的,各种负载均衡算法的适用场景,常用的负载均衡工具(硬件负载均衡与软件负载均衡)。
4)Servlet容器/Web容器,有些应用是直接使用的Servlet容器,把页面用类似velocity的模板引擎来转换,这就带来一个问题,一次请求这些Document就要经过Servlet容器来传输,可想servlet的负担就重了。一些聪明点的应用就会在Servlet容器前再放一个Web容器,比如 Apache或Nginx或者Node,把不变的Document放在Apache上,把只需要变化的数据让Servlet来处理。
5)缓存服务,主要因为磁盘和内存的读写速度相差太多数量级,所以将数据区分冷热,冷的放磁盘,热的放内存。但缓存设计的好与不好起决定性作用,命中率高则可以改善系统的响应速度,命中率低则形同虚设。
6)数据库,负责数据的持久化,用户的一些数据有些时候是需要保存下来,这里就要有可用性的设计了,讲白了就是一个专门保存文件的机器,同时还提供查询和更新文件的功能,为了有效的管理,形成了专门的应用:数据库。
7)搜索引擎,这其实也算是“数据库”的一种形态了,只不过它的专长是查询,查找文件特别快,主要还是因为最开始设计的管理文件的应用在数据量大了以后各种问题都出来了,这才有了搜索引擎,搜索引擎的索引设计和数据库的索引设计比起来明显简单很多。
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
全部0条评论
快来发表一下你的评论吧 !