文档章节

大型站点高并发架构技术

浮躁的码农
 浮躁的码农
发布于 2018/01/15 11:33
字数 4329
阅读 326
收藏 41

大型站点高并发架构技术

高并发:

高并发主要是由于网站PV访问量大,单台服务器涌承载大量访问所带来的压力,所以会采用多台服务器进行分流,采用服务器集群技术,对于每个访问会被发送到哪台服务器,我们采取负载均衡策略,常见的技术有LVS,由于网站中有大量的静态页面,所以采用缓存服务器和反向代理技术,包括HAPROXY,REDIS,数据库可以采用数据库集群,进行读写分离,缓解数据库压力。

大型站点高并发架构就是利用负载均衡技术、反向代理技术、数据库集群、web服务器集群、Nosql技术等,以实现单台数据器不能达到的并发量,换句话说就是用一群屌丝代替一个高富帅。

1.大型站点高并发架构是为了解决百万千万级PV带来的性能瓶颈。
2.出现高并发架构的原因是大型网站发现在巨量pv下买更多更好的服务器已经无法简单的解决问题,只能从架构  上想办法来,充分发挥设备的效能。
3. 高可用解决方案(corosync,pacemaker,KeepAlived)负载均衡(LVS)缓存服务(Varnish)反向代理(haproxy)web服务器(Apache,Nginx,Tomcat)站点架构(Lamp,Lnmp)

什么是大型站点

大型站点高并发架构。首先,什么是大型站点,大型站点至少有两个特点(1)访问量大,淘宝的每日PV有几十亿(2)后台服务器多,淘宝后台服务器据说有十多万台。然后,大型网站的高并发架构,我的理解就是为了支持这么大的并发访问量,让众多的服务器硬件、操作系统、应用软件协同工作的技术架构。
高并发架构出现的主要原因,是网站并发访问量,远远超过了单台PC服务器、单台小型机的处理能力。为了让多个同时到达的用户请求都能得到快速响应,同时降低成本,目前是用多台相对廉价的服务器组成大规模集群,这就需要高并发架构来支持。
高并发架构主要用到负载均衡、反向代理、分布式缓存等技术,有大量的开源产品可供使用。包括LVS、varnish、haproxy等。

大型站点高并发架构就是利用负载均衡技术、反向代理技术、数据库集群、web服务器集群、Nosql技术等

高并发架构通过使用负载均衡,缓存之类的技术,实现active-active, 或者active-standby的架构。

实现大型web站点高并发: web层可以使用LVS实现负载均衡;数据库层可以使用mysql读写分离,redis;另外可以使用CDN网站加速

 

技术可以通过负载均衡技术LVS,haproxy,web集群技术如nginx 反向代理tomcat集群或者apache集群,缓存技术如Varnish,memache,redis,mongodb,数据库集群如mysql的AB复制,通过开源的mysql中间件如Atlas,cobar,TDDL实现数据库的读写分离等等。

 

1:从用户浏览器端可能就已经使用了浏览器的缓存功能,设置了cache-expired的时间,让重复访问的内容尽快的被访问到。
2,在用户发起请求后,经过DNS的分发的时候,可能使用了DNS的负载均衡或者DNS的策略分发。
3,请求经过分发后,首先会达到CDN。
4,CDN如果有就返回给用户,如果没有,则请求源站点。
5,源站点可能用到的技术有LVS, HAPROX,NGINX,VARNISH,TOMCAT等,缓存层可能会用到memcached,redis,mongodb,数据库层面可能会用到主从 ,主主,MHA等,或者读写分离等。

 

另外,我想请问老师,如果老板问你,我想抗住并发100W用户的访问。需要多少硬件资源。
评估的来源是不是:
首先得测试下:单台服务器可以抗住多少应用。然后单台的TPS*N=100W
那用什么工具来测试呢?loadrun还是Jmeter.测试服务器本身也达不到100W的TCP连接数吧。

 

大型站点高并发网站架构的模型和OSI七层模型是一样的,都是分层的架构。
而这种高并发的站点架构都是随着公司的业务规模不断增长,对我们的技术人员提出了更为高标准的要求;在某个程度上来说。可以说是公司业务规模的发展早就了这种大型站点的架构。比如淘宝,腾讯等等。
        现在来说淘宝的单天的日志数据量已经达到TB级别,甚至是更多了;更不要说是独立的ip,pv以及DB数据量了哦。
        网站架构也由最初的LAMP。也就是nginx作为流量的入口,交给后面的php和MySQL交互处理网站事务;后来随着业务的增长,首先是从前端的流量入口开始拆分,可能是使用了lvs做四层的流量转发,到后端的web入口,此时web前端还有可能增加了类似varnish之类的web缓存,然后到数据库的缓存等等;甚至是TFS这种分布式的文件系统等等。可以说是在每个可以拆分的点上面又按照业务甚至页面进行了独立的拆分。
        这就是典型的大型网站架构的水平拆分,由单台---多台----单一的文件系统和数据库,一步一步演变为每个业务都是有上千台的独立服务器做支撑。
        
        上面说到负载均衡器作为整个流量的入口,那么,如果此时的负载均衡器坏掉了怎么办呢?这时,高可用的概念就出来了。高可用一般是master|slave的架构,作为流量的入口对他们进行检测,以lvs或者nginx为例,这些都是可以作为负载均衡或者反向代理的软件,那么如果其中一台挂了怎么办呢?此时整个用户的访问就会中断了,也就是拒绝服务了;那么此时如果有类似keepalived之类的高可用软件就可以很好的解决整个问题。当keepavived检测到对方的keepalived挂了之后,就直接接管了,从而不间断对用户的服务。
         所谓的大型架构无非就是:负载均衡+高可用+缓存(DB 缓存以及WEB缓存),当然了还有队列,以及NoSQL ,分布式文件系统等等都会有所涉及。

 

能够承受大并发用户访问的架构;随着用户数的增多,对原先的LAMP架构逐步调整,比如将apache换成能够承受更高并发的nginx;并且增加一层webcache,比如squid等;于此同时,增加数据库的cache,如memcache,redis等;并且对数据库进行优化,对数据库进行水平分割或者换成nosql的数据库来提高并发性能.

技术包括负载均衡、缓存、镜像、图片服务器分离、数据库集群和库表散列等。

负载均衡LVS、缓存服务Varnish、反向代理HAproxy等技术来分流,保证网站的正常运行,以实现大型网站的高并发架构。此外,还会通过Corosync+Pacemaker、Keepalived等高可用技术来保证大型网站的运行。

对于负载均衡,有硬件的负载均衡和软件的负载均衡。
硬件负载均衡效率高,但是价格贵,比如F5等。
软件负载均衡系统价格较低或者免费,效率较硬件负载均衡系统低,不过对于流量一般或稍大些网站来讲也足够使用,比如lvs。

 

高并发架构包括几个层次:
1.可以高可用的负载均衡器(可用lvs),
2.缓存服务器(varnish),
3.反向代理服务器(haproxy)
4.可能会需要各种不同的web服务器(apache, tomcat, ....)

 

高并发架构需要有以下的功能:

1) 可以承载高并发的服务器软件,包括Apache,nginx,Tomcat。以及用来动态请求的应用服务器,例如PHP服务器,JavaEE服务器。
2) 要有负载均衡的功能。我个人目前所维护的系统使用硬件来做负载均衡,软件方面的话可以用LVS实现。
3) 要有处理高并发请求的能力。使用缓存服务varnish,和haproxy技术。
4) 要有HA功能,保证集群中的任何一台或几台服务器出问题不至于影响到整个系统的运作。会使用到如下的技术:
corosync+pacemaker, KeepAlived

 

集群加上其它技术,就出现了高并发架构,现在的技术各种各样,可谓八仙过海,各显神通,有mysql+heartbeat+DRBD+LVS,nginx+php+mysql+memcache+mongodb,Node.js越来越热,hadoop及其子项目虽然成熟,但spark,storm越来越流利

 

高并发的架构用到的知识点包括:负责均衡策略,CDN策略,反向代理技术,LVS,缓存服务器,数据库的读写分离技术,分布式数据库技术等等技术

负载均衡系统、反向代理系统、Web服务器系统、分布式存储系统、底层服务系统、数据库系统

 

对于Web服务器来说,不管是Apache、IIS还是其他容器,图片是最消耗资源的,于是我们有必要将图片与页面进行分离,这是基本上大型网站都会采用的策略,他们都有独立的图片服务器,甚至很多台图片服务器。这样的架构可以降低提供页面访问请求的服务器系统压力,并且可以保证系统不会因为图片问题而崩溃
HTML静态化效率最高、消耗最小的就是纯静态化的html页面,所以我们尽可能使我们的网站上的页面采用静态页面来实现,这个最简单的方法其实也是最有效的方法。架构方面的缓存,对Apache比较熟悉的人都能知道Apache提供了自己的mod_proxy缓存模块,也可以使用外加的Squid进行缓存,这两种方式均可以有效的提高Apache的访问响应能力。
负载均衡将是大型网站解决高负荷访问和大量并发请求采用的终极解决办法。

大型Web站点高并发架构一般都采用如下的技术: 1、大量使用缓存技术改善站点的性能,提供用户体验;对应的技术点有redis、memcached等 2、应用服务器集群提高网站的高并发处理能力;对应的技术点有apache、nginx、haproxy等 3、数据库进行读写分离;对应的技术点有MySQL读写分离/高可用,NOSQL等 4、使用反向代理和CDN加速网站响应;对应的技术点有suqid、CDN等 5、根据业务需要,使用分布式文件系统和分布式数据库系统;对应的技术点有hadoop等

 

整个系统的架构可以是LVS+VANISH缓存+HAPROXY+Apache/Ngnix。负载均衡还涉及到CDN,DNS等等方面的问题。

 

大型站点高并发架构主要利用了以下一些技术:
数据库,使用读写分离,分库分表解决大量的读写请求。
服务器,使用负载均衡(4层lvs,7层nginx,apache等做反向代理)保证多台机器能够提供服务
缓存,使用squild等做反向代理

 

一.大型站点高并发架构:
   1.1 满足高并发用户请求&满足节点负载均衡高可用
   1.2 域名智能解析、资源按区域多节点cdn推送
   1.3 后端高并发高可用型数据库读写处理能力
二.为什么会出现高并发架构
   2.1 满足高密集、高速的互联网发展时代,必须出现高并发架构
三.主要运用了哪些技术等对大型web站点高并发架构
   3.1 高可用负载均衡技术&cdn及各种cache网络推送技术
   3.2 提供加速处理能力的中间件
   3.3 读写性能交优异的硬件及软优化调试资源
   3.4 高性能读写的nosql处理能力
   3.5 多节点web、DB服务池 
   3.6 良好的代码执行率 & 大型防火墙

 

上次看资料时看到应该从分层的角度去看

前端架构
        浏览器优化技术(缓存,压缩,合并减少请求)
        CDN
        静态资源独立部署
        反向代理
        DNS
应用层架构
        并发结构
        负载均衡
        session管理
        动态转静态(访问多,变化少)
        业务拆分
服务层架构
        分布式服务
        分布式消息
        分布式缓存
        分布式配置
存储层架构
        分布式文件系统
        关系数据库分库
        NOSQL
        数据同步
后台架构
        搜索引擎
        数据仓库
        推荐系统
数据采集与监控
        浏览器数据采集
        服务器(业务,性能)数据采集
        系统监控
        系统报警
安全架构
        WEB攻击
        数据保护

高并发架构使用的技术包括:负载均衡(LVS、F5设备、Haproxy、Nginx),高速缓存服务(Varnish)、,反向代理(squid)等技术来实现访问分流,多设备实现高可用技术(corosync+pacemker,KeepAlived等),数据库也采用反向代理、Memcache等技术实现快速查询。

 

1.我们常用的系统架构有三种,第一种是linux+Apache+PHP+MySQL、第二种是Linux+Apache+Java(WebSphere)+Oracle、第三种是Windows Server+IIS+C#/ASP.NET+数据库

2. 大型网站一般都使用缓存服务器群,并使用多层缓存。最常用的有Squid、memcahe、e-Accelerator

 

常见的高并发架构技术:
LAMP、LNMP
负载均衡系统 LVS
反向代理系统:Haproxy
缓存服务器:Varnish
Web服务器集群:Apache、Nginx、Tomcat

 

高并发架构主要是为了解决等待而且出现的,比如在淘宝上如果找一个商品要等上10分钟,我想就没有人会在淘宝上买东西了,再比如伟大的12306,是不是让人抓狂呢?所以高并发架构一定是业务出现瓶颈了,才想办法解决瓶颈出现的各种方案的汇总。

3.重要的高并发技术
  1.负载均衡技术:为了解决服务器集群的高可用及负载,平均分配资源,以减少服务的延时。常用的硬件解决方案如F5;软件解决方案如LVS(工作在4层和7层),Haproxy,Nginx(工作在7层)以及zookeeper等。
  2.CDN技术,这是为了解决静态页面及图片缓存的,提高访问效率
  3.缓存技术
  4.数据库级的高并发技术,如分库、分表,高可用集群等。

 

消息中间件,分布式缓存,分布式数据库,再加上负载均衡器(包括简单的HTTP/TCP的,也包括其它的像MyCAT这种数据库的)。这些都是实现高并发架构的重要组成部分。

高并发有三个瓶颈:

传输层,大量用户发出请求后,会对网络带宽和web服务器的I/O造成瓶颈;

计算层,将会造成业务服务器的瓶颈;

存储层,会导致数据库和存储的瓶颈。

大型并发架构就是利用负载均衡,缓存,分布式集群等技术,把访问量分散到不同的机器上处理

 

主要运用了哪些技术等对大型web站点高并发架构进行论述:
--web服务器:apache、nagix、tomcat
--lamp、lnmp
--负载均衡技术:lvs
--缓存服务器:varnish
--缓存代理:haproxy
--高并发:haproxy
--高可用:corosync+pacemaker 、KeepAlived

 

1、海量用户访问,如12306等
2、海量用户数据存储,如 google等

涉及到的技术:

负载均衡、持久化存储(mysql、nosql)消息中间件 CDN 分布式缓存,分布式文件 搜索引擎 离线计算等

 

高可用解决方案(corosync,pacemaker,KeepAlived)负载均衡(LVS)缓存服务(Varnish)反向代理(haproxy)web服务器(Apache,Nginx,Tomcat)站点架构(Lamp,Lnmp)以及现在所使用的分布式架构和NOSQL的架构整合在一起去满足所需。

高并发架构主要运用了:扩展技术(垂直扩展和水平扩展)、冗余、负载均衡、缓存技术、HTML静态化、图片服务器分离、镜像技术。

 优化大型web站点高并发架构的手段包括负载均衡、缓存、反向代理、CDN加速、读写分离、系统解耦、消息异步、NoSQL数据库等多方面

本文转载自:http://blog.csdn.net/zdyueguanyun/article/details/52123572

浮躁的码农

浮躁的码农

粉丝 73
博文 880
码字总数 165612
作品 0
松江
程序员
私信 提问
大型站点的前期规划

从低成本、高性能和高扩张性的角度来说说站点的规划:HTML静态化、图片server分离、数据库集群和库表散列、缓存…… 一个小型的站点。比方个人站点,能够使用最简单的html静态页面就实现了,...

技术mix呢
2017/11/08
0
0
说说大型高并发高负载网站的系统架构

发布:倪海涛 来自:BudiChina.com 更新:2010-03-15 11:53:58 转帖:http://www.toplee.com/blog/71.html 摘要:一个小型的网站,比如个人网站,可以使用最简单的html静态页面就实现了。随着...

晨曦之光
2012/03/09
561
1
高级Java架构学习资源来了——(1-5年开发 小白误入)

大型互联网公司分布式架构原理概述 http://www.365yg.com/item/6471499647222284814/ Mysql索引底层数据结构剖析 http://www.365yg.com/item/6470767465080029710/ 老司机带你用正确的姿势看...

阿阳啊啊
2017/10/08
0
0
支付宝架构师眼里的高并发架构

前言 高并发经常会发生在有大活跃用户量,用户高聚集的业务场景中,如:秒杀活动,定时领取红包等。 为了让业务可以流畅的运行并且给用户一个好的交互体验,我们需要根据业务场景预估达到的并...

java高级分享
2018/01/05
0
0
大型高并发高负载网站的系统架构

我在Cernet做过拨号接入平台的搭建,而后在Yahoo3721负载搜索引擎前端平台开发,又在猫扑处理过大型社区猫扑大杂烩的架构升级等工作,同时自己接触和开发过不少大中型网站的模块,因此在大型...

青夜之衫
2017/12/05
0
0

没有更多内容

加载失败,请刷新页面

加载更多

redis 学习2

网站 启动 服务端 启动redis 服务端 在redis 安装目录下 src 里面 ./redis-server & 可以指定 配置文件或者端口 客户端 在 redis 的安装目录里面的 src 里面 ./redis-cli 可以指定 指定 连接...

之渊
昨天
2
0
Spring boot 静态资源访问

0. 两个配置 spring.mvc.static-path-patternspring.resources.static-locations 1. application中需要先行的两个配置项 1.1 spring.mvc.static-path-pattern 这个配置项是告诉springboo......

moon888
昨天
4
0
hash slot(虚拟桶)

在分布式集群中,如何保证相同请求落到相同的机器上,并且后面的集群机器可以尽可能的均分请求,并且当扩容或down机的情况下能对原有集群影响最小。 round robin算法:是把数据mod后直接映射...

李朝强
昨天
4
0
Kafka 原理和实战

本文首发于 vivo互联网技术 微信公众号 https://mp.weixin.qq.com/s/bV8AhqAjQp4a_iXRfobkCQ 作者简介:郑志彬,毕业于华南理工大学计算机科学与技术(双语班)。先后从事过电子商务、开放平...

vivo互联网技术
昨天
24
0
java数据类型

基本类型: 整型:Byte,short,int,long 浮点型:float,double 字符型:char 布尔型:boolean 引用类型: 类类型: 接口类型: 数组类型: Byte 1字节 八位 -128 -------- 127 short 2字节...

audience_1
昨天
11
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部