- 网站架构层次如图:
1.前端架构
前端指用户请求到达网站应用服务器之前经历的环节,通常不包含网站业务逻辑,不处理动态内容。
- 浏览器优化技术:并不是优化浏览器(那个我们做不到),而是 通过优化响应页面,加快浏览器页面的加载和显示,常用的有页面缓存、合并HTTP减少请求次数、使用页面压缩等。
- 动静分离,静态资源独立部署:静态资源,如css,js等文件部署在专门的CDN服务器集群上,和web应用动态内容服务器分离(http://blog.brucefeng.info/post/static-backend-asolate)
- 图片服务:这里的图片不是指网站Logo、按钮图标等,它们是静态资源,应该和js、css部署一起,这里指用户上传的图片,如产品图片,用户头像等,图片服务同样使用独立部署的图片服务器集群。
- 反向代理:部署在网站机房,在应用服务器、静态资源服务器、图片服务器之前,提供页面缓存服务。
2.应用层架构
应用层是处理网站主要业务逻辑的地方。
- 开发框架:网站业务是多变的,网站大部分都是工程师在加班加点完成的,一个好的开发框架至关重要。一个好的开发框架应该使角色分离,美工、开发能够各司其职。
- 负载均衡:将多台应用服务器组成一个集群,通过负载均衡分发到不同的服务器上,以应对大量用户同时访问产生的高并发负载压力。
- session管理:通常应用服务器为无状态,不保存用户请求上下文信息,但是网站需要用户会话信息,需要专门的机制管理session,使集群内甚至跨集群的服务器都可以共享session
- 动态页面静态化:对于访问量大但又不频繁更新的动态页面,可以生成静态页面,利用静态页面的优化手段加速用户访问。
- 业务拆分:将复杂而又庞大的业务拆分开来,形成多个规模较小的产品。除了降低系统耦合度,也便于数据库业务分库。
- 虚拟化服务器:将一台物理服务器虚拟化成多台虚拟服务器,对于访问较低的业务,更容易用较少的资源构建高可用的应用服务器集群
3.服务层架构
提供基础服务,供业务层调用,完成网站业务。
- 分布式消息:利用消息队列机制,实现业务和业务、业务和服务之间的异步消息发送及低耦合的业务关系。
- 分布式服务:提供高性能、低耦合、高复用、易管理的分布式服务,在网站实现面向服务架构(SOA)
- 分布式缓存:通过可伸缩的服务器集群提供大规模热点数据的缓存服务,是网站性能优化的重要手段
4.存储层架构
提供数据、文件的持久化存储访问和管理服务
- 分布式文件:网站在线业务需要存储的文件大部分是图片、网页、视频等文件,但是这些文件的数量特别庞大,而且通常都是在持续增加,需要伸缩性设计比较好的分布式文件系统
- 关系数据库:大部分网站的主要业务都是基于关系数据库开发的。
- NoSQL数据库:目前各种非关系型数据库层出不穷,NoSQL也常被用作分布式缓存,从社区活跃性来看,HBase目前是最好的。
- 数据同步、读写分离。
5.后台架构
网站应用中,除了要处理用户的实时访问请求外,还有一些后台非实时数据分析要处理。
- 搜素引擎:即便是网站内部的搜索引擎,也需要进行数据更新、构建索引等。这些操作通过后台系统定时执行。
- 数据仓库:根据离线数据,提供数据分析和数据挖掘服务
- 推荐系统。
TO BE CONTINUED