设为首页 加入收藏

TOP

【系统架构】 大型网站架构技术一览(一)
2019-09-17 16:49:21 】 浏览:46
Tags:系统 架构 大型 网站 技术 一览

 

本文地址

原文地址

 

      点击关注微信公众号 wenyuqinghuai

 

  对于大型网站技术的理解,可以从架构技术原理的组织方式以架构要素作为维度,从系统性能、可用性、伸缩性、扩展性、安全性几个角度阐述网站架构的技术要点。还有另一种较为直观的组织方式,是从不同架构层次所使用的网站架构技术这个维度进行描述的。

        网站系统架构层次如下图所示:


        这个网站架构层次,共分为8个层次,其中数据库中心机房架构是上面所有架构的物理基础;安全架构和数据库采集监控架构是贯穿在各个层次的重要保障,这两个架构主要解决五个业务相关层次的安全问题和数据采集监控问题,是一直都需要关注的地方;
        对于目前的大型网络来看,可以分为前端、应用层、服务层、存储层、后台等5个方面,简单来说,前端存放的是静态网页,不涉及业务,就是为了客户端能够及时响应,并展现一些静态内容;应用层是处理业务逻辑的地方,前端开发的代码,主要就是发布在这个地方,实际用户的各种业务处理,也主要在这个地方进行;服务层介于应用层和存储层之间,主要为两者提供各种分布式服务,比如分布式缓存,能减少存储层的压力,并尽快响应应用层的请求,提高性能;存储层是存放各种业务数据的地方,包括关系型、非关系型数据库、文件已经它们之间的数据同步;上面4个层次可以说是实时的业务功能,有一个层次出现问题,就会直接影响用户体验,在这4个层次后面,还有一个后台,它是不直接与用户沟通,但从上面的业务中通过搜索引擎、数据仓库、推荐系统等,创造更加有价值的信息,在后台为业务提供支撑。


1.前端架构



        (包括:浏览器优化技术、CDN、动静分离,静态资源独立部署、图片服务、反向代理、DNS等7种技术)
        前端指用户请求到达网站应用服务器之前经历的环节,通常不包含网站业务逻辑,不处理动态内容。一般打开网页或界面时,一输入URL就可以看到的信息,就属于这部分,然后再慢慢加载的,就是后面业务层的内容了,因为内容都是静态的,不会发生改变,所有可以在各个地方准备好,放在CDN中,达到瞬时响应的效果。为了实现这样的效果,有下面几种架构技术:


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


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


动静分离,静态资源独立部署
        静态资源,如JS、CSS等文件部署在专门的服务器集群上,和Web应用动态内容服务分离,并使用专门的(二级)域名。


图片服务
        图片不是指网站Logo、按钮图标等,这些文件属于上面提到的静态资源,应该和JS、CSS部署在一起。这里的图片指用户上传的图片,如产品图片、用户头像等,图片服务同样适用独立部署的图片服务器集群,并使用独立(二级)域名。


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


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


2.应用层架构



        (包括:开发框架、页面渲染、负载均衡、Session管理、动态页面静态化、业务拆分、虚拟化服务器等7种技术)
        应用层是处理网站主要业务逻辑的地方。一般说的使用PHP或则Java等技术实现的网络逻辑和前端框架,就是指这部分的内容,该部分是交互式业务实现的主要层次,相应的架构技术有:

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


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


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


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


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


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


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


3.服务层架构



        (包括:分布式消息、分布式服务、分布式缓存、分

首页 上一页 1 2 3 下一页 尾页 1/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇UML图中经常用到几种的关系图例 下一篇【夯实PHP基础】UML序列图总结

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目