高并发的大型网站架构设计

从左边开始,先是CDN服务器和反向代理服务器,都用于缓存一些用户需要请求的资源。两者的区别在于CDN部署在网络提供商的机房,用户可以就近获取;反向代理则部署在网站中心机房。使用CDN和反向代理的目的都是尽快返回数据给用户。这样可以加快返回用户资源的速度,也减轻了后端服务器的负载压力。 
往下走,是一台负载均衡调度服务器,用于将用户的请求发送到服务器集群上。这里面A,B应用服务器可以是Tomcat服务器集群,只不过它上面只部署了Action,也就是我们平时写的controller层的代码。在这里面去调用被分别部署在不同服务器上的业务层代码(大型网站会进行业务拆分,将不同的应用独立部署)。如果某些业务请求量较大,业务处理时间较长,可以根据实际情况来将其加入消息队列,以达到快速返回的目的。最后,由分布式的业务服务器去调用分布式的数据库系统实现数据的存储。右边,文件这些东西可以部署在分布式的文件服务器上。右上,使用分布式缓存服务器将平时最常访问的20%数据(二八定律:80%的业务访问集中在20%的数据上)缓存起来。最下面两个,由于网站业务相当复杂,采用一些非关系数据库如nosql和非数据库查询技术如搜索引擎进行进行数据的存储和检索。 
以上,就是一个大型网站的大体架构。 

总体架构讲完了,接下来讲一点具体的东西。大型网站核心架构要素:性能,可用性,伸缩性,扩展性,安全性。 
先来讲性能:

浏览器访问优化:

1 减少http请求

http请求的开销都很昂贵,应该尽量减少http请求次数。主要手段是将javascrit,css,图片合并成一个文件,这样浏览器只需一次请求。

2 使用浏览器缓存

对网站而言,css,javascript,logo,图标这些资源更新频率低,可以设置http头中的Cache-Control和Expires属性将其缓存在浏览器中。

3 启用压缩

可以在服务器端对文件进行压缩,文本文件的压缩效率可达80%以上,因此HTML,CSS,Javascript文件启用GZip压缩可以达到较好的效果

4 css文件放在页面最上面,javascript放在页面最下面

浏览器在css全部下载完之后才进行页面渲染,而javascript则是加载后就立即执行。因此先进行css文件的下载,javascript放在最后即可。

cdn加速

CDN(内容分发网络)本质仍是一个缓存,而且将数据缓存在离用户最近的地方,使用户以最快速度获取数据。一般缓存静态资源。

反向代理

反向代理服务器可以保护服务器的安全,来自互联网的请求必需经过代理服务器。所以也可以在代理服务器放一些静态数据,当用户第一次访问静态内容时,静态内容就被缓存在方向代理服务器上,其他用户请求进来时,就可以直接返回,减轻web服务器负载压力。

应用服务器性能优化

服务器的优化手段主要有缓存,集群,异步等。

异步操作:

在高并发情况下,若不使用消息队列,用户请求直接写入数据库会对数据库造成巨大的压力,同时使响应延迟加剧。使用消息队列,异步写入数据库,可以起到很好的削峰作用,改善网站的扩展性,提升网站性能。

使用集群:

在网站高并发访问的场景下,使用负载均衡技术为应用构建一个堕胎服务器组成的集群,将并发访问请求分发到多台服务器上处理,避免单一服务器因负载压力过大而响应缓慢。

代码优化:
1 多线程

从资源利用的角度来看,使用多线程的原因主要有两个:

  • io阻塞:当线程进行io处理时,会阻塞cpu以等待io。利用多线程io阻塞与执行交替进行,可以最大限度利用cpu。

  • 多cpu:一个服务器有多个cpu,在这个手机都有四核cpu的时代要想做大限度使用这些cpu,必需启用多线程。

2 资源复用

资源复用主要有两种模式:单例和对象池。

  • 单例:由于web开发中主要使用贫血模式,使用很多无状态对象,无需重复创建,因此使用单例模式自然而然的事。

  • 线程池:对象池通过复用对象实例,减少对象创建和资源消耗。

3 数据结构

在不同的场景中使用适当的数据结构,改写数据和计算特性可以极大优化程序的性能。

4 垃圾回收

如果web应用运行在JVM等具有垃圾回收功能的环境中,理解垃圾回收机制有助于程序优化和参数调优,以及编写内存安全的代码。

网站架构的伸缩性设计

一般来说。网站的伸缩性设计可分为两类:一类是根据功能进行物理分离实现伸缩,一类是单一功能通过集群实现伸缩。前者是不同的服务器部署不同的服务,提供不同的功能;后者是集群内的服务器部署相同的服务实现相同的功能。

应用服务器集群的伸缩性设计

负载均衡是实现伸缩性设计的关键技术。因为它能将用户的请求按照某种规则分发到集群不同的服务器上,且能感知或配置集群的服务器数量,及时发现新上线或下线的服务器,以此来实现应用服务器集群的可伸缩性。实现负载均衡的技术有以下几种:

  • http重定向负载均衡

    http服务器就是一台普通的应用服务器,唯一功能就是根据根据用户的http请求计算一台真实的web服务器地址。这种方案的优点是比较简单。缺点是浏览器需要两次请求服务器才能完成一次访问,性能较差;实践中不常采用。

  • dns域名解析负载均衡

    每次域名解析请求都会根据负载均衡算法计算一个不同的ip地址返回。优点是将负载均衡工作交给dns,省掉了网站管理维护负载均衡服务器的麻烦。缺点是dns负载均衡的控制权在域名服务商那里,网站无法对其做更多的改善和更强大的管理。

  • 反向代理负载均衡

    反向代理服务器需要双网卡及内部外部两套ip地址。其优点是和反向代理服务器功能集成在一起,部署简单。缺点是所有请求均经过此,其性能可能成为瓶颈。

  1. ip负载均衡

在网络层通过修改请求目标地址进行负载均衡。ip负载均衡在内核进程完成数据分发,有更好的处理性能。但对需要提供下载服务或视频服务的大型网站而言,难以满足需求。

     2. 数据链路层负载均衡

在通信协议的数据链路层修改mac地址进行负载均衡。此模式是目前大型网站采用最广的一中负载均衡手段。

数据库存储服务器集群的伸缩

这里主要将关系型数据库的伸缩设计。对于进行了水平分库分表的数据库,可以用一些分布式数据库产品例如Mycat,Cobar.

利用分布式消息队列降低降低系统耦合性

如果模块间不存在直接调用,那么新增或修改对其他模块的影响就最小。通过在低耦合的模块间传输事件消息,来保持模块的松散耦合。最常用的是分布式消息队列。在伸缩性方面,由于消息队列上的服务器上的数据是即时被处理的,可以看作无状态的服务器,伸缩性比较简单,将新服务器加入分布式消息队列集群中,通知生产者服务器更改消息队列服务器列表即可。在可用性方面,为避免内存空间不足的问题,会将消息写入磁盘。

网站应用攻击与防御:

从互联网诞生之日起,各种web攻击和信息泄漏也从未停止。在此讲一下主要的攻击手段及防御措施。

  • xss攻击

        xss即跨站点脚本攻击,致黑客通过篡改网页,注入恶意html脚本。主要防御手段有两种:

             1 消毒 对某些html危险字符转义,如“>”转义为“&gt”。

             2 HttpOnly 即浏览器禁止页面javascript访问带有HttpOnly属性的cookie。

  • sql注入

        sql注入,攻击者在http请求中注入恶意sql命令。防御方法,还是消毒,过滤请求数据中可能注入的sql。或者参数绑定,如mybatis的#{},将攻击者的sql视为参数,而不是可执行sql。

  • csrf攻击

        跨站点请求伪造,攻击者通过跨站请求,以合法用户身份进行非法操作。其核心是利用服务器session或浏览器cookie策略。盗取用户身份。防御方法 
        1 表单token。在页面表单加入一个随机数作为token值,提交到服务器进行检查。 
        2 验证码 
        3 Refer Check 
        http请求头的请求域中记录着请求来源,可检查请求来源验证其是否合法。

web应用防火墙

ModSecurity,一种开源的web应用防火墙,探测攻击并保护web程序。

网站安全漏洞扫描

指根据一定规则构造攻击性url模拟黑客行为的工具。

由于本博客只是对大型网站的架构及其用到的技术做一个大致的描述(不太好做详细的讲解,因为这里牵扯的知识点实在太多,而每个知识点又是可以单独提出来写成一片或几篇博客的那种),所以对大多数知识点的讲解只是浅尝辄止,如果想了解更多细节的同学,可以自行百度或者阅读本文的主要参考文献:

《大型网站技术架构核心原理与案列分析》

转自:https://blog.csdn.net/zoroduyu/article/details/79187169

223916_bL9y_2663968.jpg
liddhome
关注 关注
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
怎么设计高并发网站
zzyymaggie的专栏
02-07 968
一、大纲 怎么设计高并发网站?这不是由一个环节决定的。比如我们说nginx支持高并发,但是如果只有nginx,不能支撑整个网站高并发。那么我的思路如下: 1.要实现高并发需要从一个网络请求的过程来思考,参考《从输入URL到页面加载完成的过程中都发生了什么事情?》,如何保障每个环节的高并发?上下游是怎么相互配合的? 2.扩容和容错,保证能应付更大量的请求。 二、高并发高流量
基于LVS+Keepalived的高并发大型网站架构设计与实现-kaic.docx
最新发布
10-19
4高可用高并发网络架构规划设计 4.1LVS负载模式设计 4.1.1 LVS调度服务器Director设计 4.1.2真实服务器Real Server设计 4.1.3 nginx七层负载均衡设计 4.1.4keepalived工作设计 4.2设备选型 4.3内部网络结构设计 ...
高并发web框架基本设计思路
萌萌的It人 www.itmmd.com
06-04 3014
1、提供HTML静态访问      web界面上最快的访问速度是什么?当然是最原始的HTML文件访问,对于其他语言 比如 jsp ,asp,php等等,他们首先要通过服务器解析成html之后在返回给访问者,如果我们能提供全部是htm来的页面,那么就能大大的降低服务器和数据库资源的利用和提高网站的并发,所以我们尽可能使我们的网站上的页面采用静态页面来实现,这个最简单的方法其实也是最有效的方法。当然实
高并发web系统设计
小飞侠的博客
11-15 251
一、一般高并发web系统这里的一般指的是秒杀之类的电子商务系统,比如说小米抢购、淘宝双十一、秒杀活动等等,12306订票网站与其有本质区别,下面会有说到。系统架构图下图是我调查众多资料总结出的系统架构图,当然这也不能作为通用的解决方案,首先像淘宝等企业公布的资料肯定不是最先进或者是性能最好的,其次具体情况还需具体分析。核心技术点 前端优化前端优化主要包括动态内容静态化,增加前端缓存。页面静态化...
高并发网站架构设计
变成习惯
01-02 7421
转载自:http://blog.51cto.com/cloumn/detail/40?from=timeline 所谓高并发,指的是同一时间可以处理大量的WEB请求,这个指标用来衡量一个架构的体量和性能。这里的大量如何评估呢?1000算不算?10000算不算? 对于中小型的站点来说,可能并发100多就很不错了,但对于像淘宝这样的大型站点,单凭一个接口调用的量就有可能达到百万的并发。在双11这样的大...
2019年最新 Linux 大型网站高并发架构
02-03
包含ELK、Haproxy、Nginx、Tomcat、Ansible自动化运维实战、缓存、架构设计等等
大型高性能ASP.NET系统架构设计
02-21
大型动态应用系统平台主要是针对于大流量、高并发网站建立的底层系统架构大型网站的运行需要一个可靠、安全、可扩展、易维护的应用系统平台做为支撑,以保证网站应用的平稳运行。 大型动态应用系统又可分为几个子...
千万级用户的大型网站,应该如何设计其高并发架构
02-24
(1)单块架构(2)初步的高可用架构(3)千万级用户量的压力预估(4)服务器压力预估(5)业务垂直拆分(6)用分布式缓存抗下读请求(7)基于数据库主从架构做读写分离(8)总结一般一个网站刚开始建立的时候,用户...
大型网站动态应用系统架构设计思想
02-27
大型动态应用系统平台主要是针对于大流量、高并发网站建立的底层系统架构大型网站的运行需要一个可靠、安全、可扩展、易维护的应用系统平台做为支撑,以保证网站应用的平稳运行。大型动态应用系统又可分为几个子...
高并发网站架构设计方案
02-27
高并发网站架构设计方案
高并发网站技术架构演变
02-15
高并发网站技术架构演变图
并发大型网站架构设计
weixin_33850890的博客
09-19 122
2019独角兽企业重金招聘Python工程师标准>>> ...
大型网站架构改进历程:存储的瓶颈(中)
晓风残月xj
01-23 740
在上篇,我讲到某些网站高并发下会报出503错误,503错误的含义是指网站服务端暂时无法提供服务,503还表达了网站服务端现在有问题,但是以后可能会提供正常的服务,对http协议熟悉的人都知道,5开头的响应码表达了服务端出现了问题,在我们开发测试时候最为常见的是500错误,500代表的含义是服务端程序出现了错误导致网站无法正常提供服务,500通常是服务端异常和错误所致,如果生产系统里发现了500错误,那么只能说明网站存在逻辑性的错误,这往往是系统上线前的测试做的不到位所致。回到503错误,我上文解释为拒绝访
网站设计高性能高并发
独孤——依人
06-17 3063
高性能高并发   高并发访问的核心原则其实就一句话“把所有的用户访问请求都尽量往前推”。 如果把来访用户比作来犯的"敌人",我们一定要把他们挡在800里地以外,即不能让他们的请求一下打到我们的指挥部(指挥部就是数据库及分布式存储)。 如:能缓存在用户电脑本地的,就不要让他去访问CDN。能缓存CDN服务器上的,就不要让CDN去访问源(静态服务器)了。能访问静态服务器的,就不要去访问动态服务器。
高并发、大流量网站设计实践
cookie的
07-27 493
最近,经常被问到“高并发、大流量”的系统,例如12306/淘宝双十一的整体技术架构要怎么设计,总结了下思路,架构体系如下: 1. 读,也就是查看商品列表等 总体架构如下: 2. 写、即下单买商品、或者下单买车票等场景 ...
大型网站应该如何设计其高并发架构
Java_ttcd的博客
08-15 432
当然所谓的集群化部署,在初期用户量很少的情况下,其实一般也就是部署两台应用服务器而已,然后前面会放一台服务器部署负载均衡设备,比如说LVS,均匀的把用户请求打到两台应用服务器上去。本文主要是探讨在千万级用户场景下的大型网站高并发架构设计,也就是预估出了千万级用户的访问压力以及对应的后台系统为了要抗住高并发,在业务系统、缓存、数据库几个层面的架构设计以及抗高并发的分析。本文将会从一个大型网站发展历程出发,一步一步的探索这个网站架构是如何从单体架构,演化到分布式架构,然后演化到高并发架构的。...
高并发的软件架构设计方案
02-15
高并发软件架构的设计方案通常包括以下几个方面: 1. 分布式系统架构:使用多台服务器提供服务,可以通过负载均衡来实现水平扩展...这些方案根据实际情况的不同,可以适当结合使用,以达到最佳的高并发架构设计效果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
写文章

热门文章

  • win10实时防护彻底关掉 22431
  • 数组增删查时间复杂度 4922
  • Nginx反向代理tcp和http协议配置 4222
  • Linux安装sublime-text3 2862
  • 高并发下HttpClient连接池使用 2238

分类专栏

  • 私人日记
  • Java基础 7篇
  • Java高级技术 9篇
  • Spring 1篇
  • MyBatis
  • Hibernate
  • 开发工具 2篇
  • 算法 1篇
  • 数据结构
  • 操作系统 4篇
  • Linux基础 2篇
  • Linux服务架设 1篇
  • 大数据 1篇
  • 生活随笔

最新评论

  • win10实时防护彻底关掉

    leybyr: 试过,那个实时保护还是会开。

  • 高并发下HttpClient连接池使用

    y李寻欢: getInstance方法没用到吗?

  • 远程访问虚拟机Linux服务器网络配置

    爱云的老杨: 百度网盘文件被取消了

  • Linux安装sublime-text3

    橙子嵌入式: 没搞定,我太菜了

  • SSM开发环境的搭建(方式二)

    匿名用户: Spring+SpringMVC+MyBatis

大家在看

  • MIPI A-PHY协议学习 1
  • 《维汉翻译通》App全新升级:维吾尔语短文本翻译、汉语拼音标注、维语词典、谚语格言名句等功能统统免费!还支持维吾尔文OCR识别提取文字! 453
  • RabbitMQ、RocketMQ、Kafka(详解三大MQ)
  • docker回顾--docker compose详细解释,安装,与常用命令
  • Linux下的中断实验 1305

最新文章

  • Windows终端配置
  • 彻底关闭Win10自动更新
  • win10实时防护彻底关掉
2023年3篇
2022年10篇
2020年1篇
2019年8篇
2018年15篇
2017年29篇
2016年19篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

PHP网站源码丹竹头网站seo优化公司湘西网站定制哪家好中山百度标王温州如何制作网站推荐郴州设计公司网站报价海北百度网站优化多少钱光明设计公司网站推荐果洛网页制作多少钱平湖网站seo优化多少钱阳江企业网站设计报价北京SEO按天收费价格株洲网站关键词优化多少钱山南网站推广方案公司孝感网站优化按天扣费哪家好深圳网站推广系统价格石岩网站制作哪家好大庆建网站公司本溪网站优化排名哪家好桂林SEO按天扣费多少钱兴安盟模板制作山南SEO按天收费报价张北外贸网站设计价格天门网站优化推广公司兰州百度标王哪家好达州营销网站推荐诸城外贸网站设计公司西宁百度关键词包年推广推荐本溪SEO按天收费昌都网站推广价格黔东南百度竞价包年推广公司歼20紧急升空逼退外机英媒称团队夜以继日筹划王妃复出草木蔓发 春山在望成都发生巨响 当地回应60岁老人炒菠菜未焯水致肾病恶化男子涉嫌走私被判11年却一天牢没坐劳斯莱斯右转逼停直行车网传落水者说“没让你救”系谣言广东通报13岁男孩性侵女童不予立案贵州小伙回应在美国卖三蹦子火了淀粉肠小王子日销售额涨超10倍有个姐真把千机伞做出来了近3万元金手镯仅含足金十克呼北高速交通事故已致14人死亡杨洋拄拐现身医院国产伟哥去年销售近13亿男子给前妻转账 现任妻子起诉要回新基金只募集到26元还是员工自购男孩疑遭霸凌 家长讨说法被踢出群充个话费竟沦为间接洗钱工具新的一天从800个哈欠开始单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#中国投资客涌入日本东京买房两大学生合买彩票中奖一人不认账新加坡主帅:唯一目标击败中国队月嫂回应掌掴婴儿是在赶虫子19岁小伙救下5人后溺亡 多方发声清明节放假3天调休1天张家界的山上“长”满了韩国人?开封王婆为何火了主播靠辱骂母亲走红被批捕封号代拍被何赛飞拿着魔杖追着打阿根廷将发行1万与2万面值的纸币库克现身上海为江西彩礼“减负”的“试婚人”因自嘲式简历走红的教授更新简介殡仪馆花卉高于市场价3倍还重复用网友称在豆瓣酱里吃出老鼠头315晚会后胖东来又人满为患了网友建议重庆地铁不准乘客携带菜筐特朗普谈“凯特王妃P图照”罗斯否认插足凯特王妃婚姻青海通报栏杆断裂小学生跌落住进ICU恒大被罚41.75亿到底怎么缴湖南一县政协主席疑涉刑案被控制茶百道就改标签日期致歉王树国3次鞠躬告别西交大师生张立群任西安交通大学校长杨倩无缘巴黎奥运

PHP网站源码 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化