大型互联网架构概述

来源:互联网 发布:方文山 知乎 编辑:程序博客网 时间:2024/04/27 16:09

典型实现




一、DNS
(1)当用户在浏览器中输入网站地址后,浏览器会检查浏览器缓存中是否存在对应域名的解析结果。如果有,则解析过程结束;否则进入下一个步骤
(2)浏览器查找操作系统缓存中是否存在这个域名的解析结果。这个缓存的内容来源就是操作系统的hosts文件。如果有,则解析过程结束;否则进入下一个步骤
(3)前两个步骤都是本地查找,没有发生网络交互。在本步骤中,会使用到在网络配置的中DNS地址。这个地址我们通常称之为LDNS(Local DNS)。操作系统会把域名发送给LDNS解析。如果解析成功,则解析过程结束;否则进入下一个步骤
(4)LDNS将请求返回给GTLD(Global Top Level Domain)服务器,GTLD服务器查找此域名对应的Name Server域名的地址。这个Name Server通常就是你的域名提供商的服务器。Name Server根据客户请求,返回该域名对应的IP地址TTL(Time To Live)值
(5)浏览器根据TTL值,把这个域名对应的IP缓存在本地系统中。域名至此解析结束。

二、CDN
   CDN(Content Delivery Network,内容分发网络)部署在网络提供商的机房里面。在用户请求网站服务时,可以从距离自己最近的网络提供商获取数据。比如视频网站和内容网站的热点内容。
如果需要自己搭建CDN系统,有3种主流方案可以选择:
(1)squid是缓存服务器科班出生,自己实现了一套内存页/磁盘页的管理系统
(2)varnish是觉得squid性能不行,varnish觉得linux内核已经把虚拟内存管理做得很好了,squid的多此一举反而影响了性能。
(3)nginx cache是属于不务正业,得益于nginx强大的插件机制。

三、LB
LB(Load Balance,负载均衡)就是将负载(用户的请求)根据某些策略,将负载分摊给多个操作单元执行。该技术可以提供服务器的响应速度以及利用效率,避免出现单点失效。
(1) 数据分类: 根据数据更新频率,分为动态文件静态文件
(2)DNSCDN具体实现时,也是大量使用了负载均衡技术
(3)常见的负载均衡算法由:RR(Round Robin,轮询),WRR(Weighted RR,加权轮询),Random(随机),LC(Least Connection,最少连接),SH(Source Hash,源址哈希
(4)负载均衡方法 一、硬件负载F5,Array  二、采用LVS+Keepalived 实现软负载

四、WEB APP
前端技术
(1)动态页面静态化
(2)无限滚动翻页技术
(3)WEB前端优化最佳实践

参考: http://www.csdn.net/article/2013-09-23/2817020-web-performance-optimization


后端技术
(1)HTTP协议:HTTP协议大概分为请求头,请求体,响应头,响应体。无论是WebServer还是ApplicationServer,很多花样都是基于请求头的请求路径来玩的

(2)API接口:使用RESTFUL API,暴露接口。它具有如下好处:1.充分利用 HTTP 协议本身语义。2.面向资源,一目了然,具有自解释性。3.无状态,在调用一个接口(访问、操作资源)的时候,可以不用考虑上下文,极大的降低了复杂度

(3)Session Framework:在大型互联网架构中,单台机器已经存放不了用户的登录信息。同时为了支持故障转移等特性,需要一套session管理机制,支持海量用户同时在线。使用分布式缓存系统来实现。


五、SOA
网站架构的演进之路,从单一应用架构到垂直应用架构,分布式服务架构以及流动计算架构,越来越体现SOA框架的重要性。这里以优秀的开源实现dubbo为例,简单介绍下。
六、MQ
MQ(Message Queue,消息队列)使服务调用异步化,可以消除并发访问洪峰,提升网站响应速度。 在MQ实现中,笔者写过一篇介绍Kafka的学习笔记,详细介绍见Kafka/Metaq设计思想学习笔记(http://my.oschina.net/geecoodeer/blog/194829),不再多言。

文章来自: http://www.open-open.com/lib/view/open1393246988802.html



0 1