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

高性能Web架构设计方案

2019-04-12 10:13 931 查看

大型Web网站的特点如下:

大型Web网站的技术挑战主要来自于大量的用户,高并发的访问和海量的数据存储,任何简单的业务一旦需要处理TB级别的数据和面对数以亿计的用户,问题就会变得很棘手。那么如何打造一个高可用、高性能、易扩展、可伸缩且安全的网站?首先要从架构方面入手,以高性能架构为基础,辅以优化后的前端应用(如减少Http请求,终端缓存等等)和后台程序(如Jvm优化,操作系统优化等等)即可以构建一个高性能的Web网站。
首先我们来了解下构建一个高性能Web网站时,性能的瓶劲在哪里?如下图所示:

从上图可以分析出性能瓶劲主要表现在两个方面:
1、 硬件资源层面,如不同运营上的网络,服务器的带宽限制,服务器的CPU、内存及磁盘IO等;
2、 软件层面,Web应用程序的性能,数据库服务器的性能;
硬件资源的提升对性能的提升时逐级递减的直至趋于0,所以性能的提高不能通过无休止的增加硬件资源,所以我们就要考虑如何从软件架构的层面来提供性能,下图为高性能架构的主要思路:

架构思路的说明如下:
1、 负载均衡,包括早期的使用DNS负载均衡,四层交换的负载均衡及七层交换的负载均衡;一般业界多采用硬件四层交换负载均衡和软件四层交换负载均衡,硬件四层交换负载均衡优势时稳定性高,功能强大,但价格较高,一般的公司难以承受,典型产品是F5、A10;软件四层交换负载均衡的优势是免费开源,通过热备等方式也可以构建一个稳定性高的负载均衡,所以我们的首选软件四层交换负载均衡(即LVS)
2、 高可用性方面要考虑避免单点故障,需要引入热备(包括主从和主主两种方式),集群以及灾备;
3、 Web应用开发架构方面要选择合适的应用开发框架同时考虑将动态页面进行静态化并进行静态资源(图片,CSS,JS及页面)的缓存(此点建议使用Nginx或者Varnish进行缓存);数据存储方面考虑使用分布式存储系统(需要根据所存储文件的大小选择合适的存储系统,比如一般的图片文件和视频文件选择的存储系统就会有所不同,前者一般可以选择FastDFS,后者选择HDFS)以及引入数据缓存(如Redis集群)和NoSql数据库(也叫内存数据库,比如:MongoDB)
4、 数据库方面需要考虑进行读写分离,分库、分表、分区等;
5、 网络方面引入CDN来解决不同网络服务商的接入速度问题并考虑在不同运营商机房部署服务器,通过镜像技术来实现不同网络服务商的接入速度问题。
Web应用架构的演化历程:

Web应用架构的特点如下图

微服务架构有其明显的优势,已经是目前及未来Web应用架构的首选,其缺点是:微服务过多,服务治理成本高,不利于系统维护;分布式系统开发的技术成本高(容错、分布式事务等),对团队挑战大;所以如果是一般初学者建议还是选择先从MVC架构开始。
综合以上的简单分析,我们可以大致得出高性能的架构如下图:

1、 使用LVS作为软件四层交换负载均衡并使用Heartbeat实现双机热备;
2、 使用反向代理软件来实现数据缓存(静态资源缓存),此处我们可以选择使用Nginx或者Varnish
3、 Web应用框架可以更加系统规模进行选择,小编建议初学者选择先从MVC架构开始;
4、 数据持久化层使用MyBatis以提高性能,数据缓存使用Redis集群;
5、 分布式存储选择HDFS并引入NoSql数据库,数据库方面实现读写分离和热备,必要的时候还需要分库分表等;
以上介绍了高性能Web架构设计方案,希望对大家对高性能Web架构有所了解。高性能Web架构涉及到的知识还有很多,小编整理了架构学习相关的技术资料,希望对大家有所帮助,以下为部分资料截图:

需要这些技术资料的同学,请关注我们的微信公众号回复“架构”获取资料下载地址。

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