大型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架构涉及到的知识还有很多,小编整理了架构学习相关的技术资料,希望对大家有所帮助,以下为部分资料截图:

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

高性能Web架构设计方案相关推荐

  1. 基于linuxunix高性能web服务器架构思路分析

    随着21世纪互联网的快速发展以及web2.0的诞生,最初web服务器已经不能满足我们的需求.而现在我们要考虑的不再仅仅是web服务器以及数据库服务器这么简单,我们所需要考虑的就是设计出一套高性能web ...

  2. 百度架构师高并发web架构分析

    本文主题是高性能的Web架构,着重于从如何打造快速响应.应对高并发.高吞吐.让用户感受到非常快的体验的角度来进行阐述的,实际上,对于一个好的 Web 架构来说,除了高性能这个指标外,还必须兼顾高可用. ...

  3. App 后台架构设计方案 设计思想与最佳实践

    CSDN 2016博客之星评选结果公布      [系列直播]零基础学习微信小程序!        "我的2016"主题征文活动     博客的神秘功能 App 后台架构设计方案 ...

  4. Nginx + FastCGI 程序(C/C++) 搭建高性能web service的Demo及部署发布

    1.介绍     Nginx - 高性能web server,这个不用多说了,大家都知道.     FastCGI程序 - 常驻型CGI程序,它是语言无关的.可伸缩架构的CGI开放扩展,其主要行为是将 ...

  5. LEMP构建高性能WEB服务器(第三版)

    LEMP 自动化编译脚本下载:http://docs.linuxtone.org/autoinstall/ (定期更新,欢迎多测试,找bug) 介绍参考:http://bbs.linuxtone.or ...

  6. 用Nginx+Lua(OpenResty)开发高性能Web应用

    在互联网公司,Nginx可以说是标配组件,但是主要场景还是负载均衡.反向代理.代理缓存.限流等场景:而把Nginx作为一个Web容器使用的还不是那么广泛.Nginx的高性能是大家公认的,而Nginx开 ...

  7. 实战:Nginx + FastCGI 程序(C/C++) 搭建高性能web server

    1.介绍 Nginx - 高性能web server,这个不用多说了,大家都知道. FastCGI程序 - 常驻型CGI程序,它是语言无关的.可伸缩架构的CGI开放扩展,其主要行为是将CGI解释器进程 ...

  8. 引用:编写高性能Web应用程序的10个技巧(一)

    在网上看到这样一篇文章:编写高性能Web应用程序的10个技巧 感觉很不错就引用到我的blog里面,和大家一起学习,同时也谢谢作者本人 数据层性能 技巧 1 - 返回多个结果集 技巧 2 - 分页的数据 ...

  9. 构架高性能WEB网站的几点知识

    前言: 对于构架高性能的web网站大家都很感兴趣,本文从几点粗谈高性能web网站需要考虑的问题. HTML静态化 什么是html静态化? 说得简单点,就是把所有不是.htm或者.html的页面改为.h ...

  10. 使用Nginx+Lua(OpenResty)开发高性能Web应用

    在互联网公司,Nginx可以说是标配组件,但是主要场景还是负载均衡.反向代理.代理缓存.限流等场景:而把Nginx作为一个Web容器使用的还不是那么广泛.Nginx的高性能是大家公认的,而Nginx开 ...

最新文章

  1. matlab练习程序(图像放大/缩小,最邻近插值)
  2. 发挥主观能动性,才可以能常人之所不能 - 阿里云MVP 杨洋专访
  3. C# 图片文件文本string格式 传输问题
  4. salt-master
  5. kettle 笛卡尔_Kettle用户操作手册1
  6. Linux下设置和查看环境变量
  7. 如何实现两列等高效果?
  8. ios 平滑移动view_iOS 关于列表上拉(平滑加载数据)自动加载数据的问题
  9. 错误信息: 集合已修改;可能无法执行枚举操作。
  10. UE4官方文档UI学习:3.UMG 创建暂停菜单
  11. jeesit1.27(4)-数据权限控制
  12. 完美解决Python 发送邮件126,136,QQ等,都会报•554 DT:SPM 发送的邮件内容包含了未被许可的信息,或被系统识别为垃圾邮件。请检查是否有用户发送病毒或者垃圾邮件
  13. ORACLE EBS中消息队列fnd_msg_pub、fnd_message在PL/SQL中的应用
  14. 【教程搬运】读懂github上的工程代码——带你熟悉Python中的Parser
  15. 软考系统设计架构师经验与教训分享
  16. python 网格交易源码_Python版简单网格策略
  17. Go 每日一库之 gorilla/handlers
  18. 程序猿如何提高自己的搜索技能
  19. 基于SYD8801的蓝牙遥控器设计方案【按键功能】【安卓手机功能演示】【ios功能演示】
  20. Android学习笔记 75. 单元测试

热门文章

  1. 数据统计分析常用指标
  2. JS实现页面复制文字时自动加版权
  3. 料酒调味不宜用白酒代替
  4. 2022年调味品行业研究报告
  5. 2021计算机专硕调剂院校,2021年已公布的调剂院校专业
  6. 融云实践:主流叙事之外,科技如何助力民生改善
  7. 使用它给 ​xxl-job 添加任务,太爽了
  8. python输出斐波那契数列_Python实现斐波那契数列
  9. 初创公司几个投资人,各占多少股份合适
  10. python报错:Empty suite