您的位置:首页 > 运维架构 > 网站架构

大型网站架构技术

2018-03-06 14:59 323 查看
大型网站的挑战主要来自庞大的用户,高并发的访问和海量数据,任何简单的业务一旦需要处理数以P计的数据和面对数以亿计的用户,问题就会变得棘手。大型网站架构主要就是解决这类问题。



1 前端架构
    前端指的是用户请求到达网站应用服务器之前经历的环节,通常不包含业务逻辑,不处理动态内容
    浏览器优化技术

        通过优化响应页面,加快浏览器页面的加载和显示,常用的有页面缓存、合并HTTP,减少请求次数,使用页面压缩等
    CDN

        内容分发网络,部署在网络运营商的机房,通过将静态页面内容分发到离用户最近的CDN服务器,使用户可以通过最短路径获取内容

    动静分离,静态资源独立部署
        静态资源,如js,css等文件在专门的服务器集群上,和web应用动态内容服务分离,并使用专门的二级域名

    图片服务

         图片不是指网站logo,按钮图标等,这些文件属于上面提到的静态资源,应该和js和css部署在一起,这里的图片指用户上传的图片,图片服务器同样适用于独立部署的图片服务器集群,并使用独立的二级域名

    反向代理

        部署在网站机房,在应用服务器,静态资源服务器,图片服务器之前,提供页面缓存服务

    DNS

        域名服务,将域名解析成ip地址,利用DNS可以实现DNS负载均衡,配置CDN也需要修改DNS,使域名解析后指向CDN服务器

2 应用层架构
    开发框架

        网站的业务是多变的,网站的大部分软件工程师都是在加班加点开发网站业务,一个好的开发框架至关重要,一个好的开发框架应该能够分离关注面,使美工,开发工程师可以各司其职,易于协作,同时还应该内置一些安全策略,防护web攻击

    页面渲染

        将分别开发维护的动态内容和静态页面模版集成起来,组合成最终显示给用户的完整页面

    负载均衡

        将多台应用服务器组成一个集群,通过负载均衡技术将用户请求分发到不同的服务器傻姑娘,以应对大量用户同时访问时产生的高并发负载压力

    Session管理

        为了实现高可用的应用服务器集群,应用服务器通常设计为无状态,不保存用户请求的上下文信息,但是网站业务通常需要保持用户会话信息,需要专门的机制管理Session,使集群内甚至跨集群的应用服务器可以共享Session

    动态页面静态化

        对于访问量特别大而更新不很频繁的动态页面,可以将其静态化,即生成一个静态页面,利用静态页面的优化手段加速用户访问,如反向代理、cdn、浏览器缓存等

    业务拆分

        将复杂而庞大的业务拆分开来,形成多个规模较小的产品,独立开发、部署、维护,除了降低系统耦合度,也便于数据库业务分库。按业务对关系数据库进行拆分,技术难度相对较小,而效果又相对较好

    虚拟化服务器

        将一台物理服务虚拟化成多台虚拟服务器,对于并发访问较低的业务,更容易用较少的资源构建高可用的应用服务器集群

3 服务层架构
     提供基础服务,供应用层调用,完成网站业务

    分布式消息

        利用消息队列机制,实现业务和业务,业务和服务之间的异步消息发送及低耦合的业务关系

    分布式服务
        提供高性能、低耦合、易复用、易管理的分布式服务,在网站实现面向服务架构(SOA)

    分布式缓存
        通过可伸缩的服务器集群提供大规模热点数据的缓存服务,是网站性能优化的重要手段

    分布式配置

        系统运行需要配置很多参数,如果这些参数需要修改,比如分布式缓存集群中加入新的缓存服务器,需要修改应用程序客户端的缓存服务器列表配置,并重启应用服务器。
        分布式配置在系统运行期提供配置动态推送服务,将配置修改实时推送到应用系统,无需重启服务器

4 存储层架构
    提供数据,文件的持久化存储访问与管理服务

    分布式文件

        网站的在线业务需要存储的文件大部分都是图片,网页,视频等比较小的文件,但是这些文件的数量非常庞大,而且通常都在持续增加,需要伸缩性设计比较好的分布式文件系统

    关系数据库

        大部门业务都是基于关系数据库开发的,但是关系数据库对集群伸缩性的支持较差。但是在应用程序的访问层增加数据库访问的路由功能,根据业务配置将数据库访问路由到不同的物理数据库上,可实现关系数据库的分布式访问

    NoSQL数据库

        目前各种NoSQL数据库层出不穷,在内存管理,数据模型,集群分布式管理等方面各有优势,不过从社区活动性角度看,HBase无疑是目前最好的。

    数据同步

          在支持全球范围内数据共享的分布式数据库技术成熟之间,拥有多个数据中心的网站必须在多个数据中心之间进行数据同步,以保证每个数据中心都拥有完整的数据。在实践中,为了减轻数据库压力,将数据库的事务日志同步到其他数据中心,根据log进行数据重演,实现数据同步
5 后台架构
    网站应用中,除了要处理用户的实时访问请求外,还有一些后台非实时数据分析要处理

    搜索引擎

        即使是网站内部的搜索引擎,也需要进行数据增量更新及全量更新、构建索引等。这些操作通过后台系统定时执行

    数据仓库

        根据离线数据,提供数据分析和数据挖掘服务

    推荐系统

        社交网站及购物网站通过挖掘人与人之间的关系,人和商品之间的关系,发展潜在的人际关系和购物兴趣,为用户提供个性化推荐服务

6 数据采集与监控
    监控网站访问情况与系统运行情况,为网站运营决策和运维管理提供技术保障

    浏览器数据采集

        通过在网站页面中嵌入js脚本采用用户浏览器环境与操作记录,分析用户行为

    服务器业务数据采集

        服务器业务数据包分两种:一种是采集在服务器端记录的用户请求操作日志;一种是采集应用层序运行期业务数据,比如待处理消息数目等

    服务器性能数据采集

        采集服务器性能数据,如负载均衡、内存使用率、网卡流量等

    系统监控

        将前述采集的数据以图表方式展示,以便运行和运维人员监控网站的运行状况,做到这一步仅仅是系统监视。更先进的做法是根据采集的数据进行自动化运维,自动处理系统异常状况,是吸纳自动化控制

7 安全架构
    保护网站免遭攻击及敏感信息

     web攻击

        以HTTP请求的方式发起的攻击,危害最大的就是XSS和SQL注入攻击,但只要措施得当,这两种攻击都比较容易防范

    数据保护

        敏感信息加密传输与存储,保护网站和用户资产

8 数据中心机房架构
    大型网站需要的服务器规模数以十万计,机房物理架构也需要关注

    机房架构

        对于一个拥有十万台服务器的大型网站,每台服务器耗电每年大约需要人民币2000元,那么网站每年机房电费就需要两亿人民币。数据中心能耗问题日趋严重,Google,Facebook选择数据中心地理位置的时候趋向散热良好,供电充裕的地方

    机柜架构

        机柜大小,网线布局,指示灯规格,不间断电源,电压规格等一系列问题

    服务器架构

        大型网站由于服务器采购规模庞大,大都采用定制服务器的方式代替购买服务器整机,根据网站的应用需求,定制硬盘,内存,甚至CPU,同时去除不必要的外设接口,并使空间结构利于散热

                                                                                                        (转自Hollis)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: