大型网站架构技术总览

大型网站架构技术总览_第1张图片

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,同时去除不必要的外设接口(显示器输出接口,鼠标,键盘等),使空间结构利于散热。    

转载于:https://my.oschina.net/u/3110937/blog/1578049

你可能感兴趣的:(数据库,运维,安全架构)