1.前端架构:(用户请求到达网站应用服务器之前经历的环节,不包含网站业务逻辑,不处理动态内容)
1.1 浏览器优化技术:
并不是优化浏览器,而是通过优化响应页面,加快浏览器页面的加载和显示,常用的有页面缓存,合并HTTP减少请求次数,使用页面压缩等。
1.2 CDN:
内容分发网络,部署在网络运营商机房,通过将静态页面内容分发到离用户最近的CDN服务器,使用户可以通过最短路径获取内容。
1.3 动静分离,静态资源独立部署:
静态资源,如js,css文件部署在独立的服务器上,和web应用服务器动态内容相分离,并使用专门的二级域名。
1.4 图片服务:
这里得图片不是指logo或者菜单按钮这种,这种属于静态资源,和js,css部署在一个静态资源服务器上。这里得图片指的是用户上传得图片,头像等,图片同样要存储在图片服务器上,并且也要使用二级域名。
1.5 反向代理:
部署在网站机房,在应用服务器,静态资源服务器,图片服务器之前,提供页面缓存服务。
1.6 DNS:
域名服务,将域名解析成IP地址,利用DNS可以实现负载均衡,配置CDN也需要修改DNS,使域名解析后指向CDN服务器。
2.应用层架构:(处理网站主要业务逻辑的地方)
2.1 开发框架:
2.2 页面渲染:将分别开发维护的动态内容和静态页面模板集成起来,组合成最终显示给用户的完整页面。
2.3 负载均衡:将多台服务器组成一个集群,通过负载均衡技术将用户请求分发到不同的服务器上,以应对大量用户同时访问造成的高并发负载压力问题
2.4 session管理:
为了实现高可用的应用服务器集群,应用服务器通常设置成无状态,不保存用户请求上下文信息,但是网站业务通常需要保持用户的会话信息,需要专门的机制管理session,多台集群服务器直接要实现session共享。
2.5 动态页面静态化:
对于访问量大而更新比较少的的动态页面,可以将其静态化,即生成一个静态页面,利用静态页面的优化手段来加速访问,例如CDN,浏览器缓存,反向代理等
2.6 业务拆分:
将复杂而又庞大的业务,形成多个规模较小的产品,独立开发,部署,维护,除了降低系统耦合度,也便于数据库业务分库。按业务对关系数据库进行拆分,效果好,难度低。
2.7 虚拟化服务器:
将一台服务器虚拟化成多台虚拟服务器,对于并发比较低的业务,更容易用较少的资源构建高可用的应用服务器集群。
3.服务层架构:(提供基础服务,供应用层调用,完成网站业务)
3.1 分布式消息:
利用消息队列机制,实现业务与业务,业务与服务之间的异步消息发送及低耦合的业务关系。
3.2 分布式服务:
提供高性能,低耦合,易复用,易管理的分布式服务,在网站实现面向服务架构(SOA)
3.3 分布式缓存:
通过可伸缩的服务器集群提供大规模热点数据的缓存服务,是网站性能优化重要手段。
3.4 分布式配置:
系统运行需要很多参数,如果这些参数需要修改,比如分布式缓存集群加入新的缓存服务器,需要修改应用程序客户端的缓存服务器列表配置,并重启应用程序服务器。分布式配置在系统运行期提供配置动态推送服务,将配置修改实时推送到应用系统,无须重启服务器。
4.存储层架构:(提供数据,文件的持久化存储访问与管理服务)
4.1 分布式文件:
网站在线业务需要存储的文件大部分都是图片,网页,视频等比较小的文件,但是这些文件的数量非常庞大,而且通常都在持续增加,需要伸缩性设计比较好的分布式文件系统。
4.2 关系数据库:
关系型数据库对集群伸缩性支持性比较差,通过应用程序的数据访问层增加数据库访问路由功能,根据业务配置将数据库访问路由到不同的物理数据库中,可实现关系数据库的分布式访问。
4.3 NoSQL数据库:
目前市面上有各种Nosql数据库,在内容管理,数据模型,集群分布式管理等方面各有优势,不过从社区活跃性来说,HBase是最好的。
4.4 数据同步:
分布式数据库成为主流,就要保证数据库中的数据同步,实践中,为了减轻数据库压力,将数据库的事务日志(或nosql的写操作log)同步到其他数据中心,根据log来做数据重演,实现数据同步。
5.后台架构:(后台除了一些实时请求要处理外,还有一些非实时数据分析需要处理)
5.1 搜索引擎:
即使作为网站内部的搜索引擎,也要也要进行数据增量更新或者全量更新,构建索引等,这些操作都要后台定时任务执行。
5.2 数据仓库:
根据离线数据,提供数据分析和数据挖掘服务。
5.3 推荐系统:
社交网站或者购物网站通过挖掘人和人,人和商品之间关系,发掘潜在的人际关系和购物兴趣,为用户提供个性化推荐服务。
6.数据采集和监控:(监控网站访问情况和系统运行情况,为网站运营决策和运维管理提供支持和保障)
6.1 浏览器数据采集:
通过在网站页面中嵌入js脚本采集用户浏览器环境和操作记录,分析用户行为(友盟)。
6.2 服务器业务数据采集:
包括两种,一种是采集在服务器端的用户请求操作日志,另一种是采集应用程序运行期业务数据,比如待处理消息数目等。
6.3 服务器性能数据采集:
采集服务器性能数据,如系统负载,内存使用率,网卡流量等。
6.4 系统监控:
将前述采集的数据以图标的形式展示,以便运营和运维人员监控网站运行状况,做到这一步仅仅是系统监视。更先进的做法是根据采集的数据进行自动化运维,自动处理系统异常状况,实现自动化控制。
6.5 系统报警:
如果采集的数据超过预设的正常情况的阈值,比如系统负载过高,就通过邮件,短信,语音电话等方式发出报警信号,等待工程师解决。
7.安全架构:(保护网站免遭攻击及敏感信息泄露)
7.1 web攻击:
以HTTP请求的方式发起攻击,危害最大的就是XSS和SQL注入攻击,可防御。
7.2 数据保护:
敏感信息加密传输和存储,保护网站和用户资产。
8.数据中心机房架构:(大型网站需要的服务器规模数量庞大,机房物理架构也需要关注)
8.1 机房架构:
每台服务器耗电(本身耗电和空调耗电)占2000元左右,对于拥有十万台的网站,消耗占到了两亿,占用比较高。所以选择好机房位置也很重要,像google,facebook会选择散热好的地方,供电充裕的地方搭建机房。
8.2 机柜架构:
机柜大小,网线布局,指示灯规格,不间断电源,电压规格(48V直流还是220V民用交流)等
8.3 服务器架构:
服务器采购规模比较大,采用定制服务器取代购买服务器整机。根据网站应用需求,定制硬盘,内存,甚至CPU,同时去除不必要的外设接口(显示器输出接口,鼠标,键盘等),使空间结构利于散热。