高并发主要是因为网站PV访问量大,单台服务器涌承载大量访问所带来的压力,因此会采用多台服务器进行分流,采用服务器集群技术,对于每一个访问会被发送到哪台服务器,咱们采起负载均衡策略,常见的技术有LVS,因为网站中有大量的静态页面,因此采用缓存服务器和反向代理技术,包括HAPROXY,REDIS,数据库能够采用数据库集群,进行读写分离,缓解数据库压力。php
大型站点高并发架构就是利用负载均衡技术、反向代理技术、数据库集群、web服务器集群、Nosql技术等,以实现单台数据器不能达到的并发量,换句话说就是用一群屌丝代替一个高富帅。html
1.大型站点高并发架构是为了解决百万千万级PV带来的性能瓶颈。
2.出现高并发架构的缘由是大型网站发如今巨量pv下买更多更好的服务器已经没法简单的解决问题,只能从架构 上想办法来,充分发挥设备的效能。
3. 高可用解决方案(corosync,pacemaker,KeepAlived)负载均衡(LVS)缓存服务(Varnish)反向代理(haproxy)web服务器(Apache,Nginx,Tomcat)站点架构(Lamp,Lnmp)前端
大型站点高并发架构。首先,什么是大型站点,大型站点至少有两个特色(1)访问量大,淘宝的每日PV有几十亿(2)后台服务器多,淘宝后台服务器听说有十多万台。而后,大型网站的高并发架构,个人理解就是为了支持这么大的并发访问量,让众多的服务器硬件、操做系统、应用软件协同工做的技术架构。
高并发架构出现的主要缘由,是网站并发访问量,远远超过了单台PC服务器、单台小型机的处理能力。为了让多个同时到达的用户请求都能获得快速响应,同时下降成本,目前是用多台相对廉价的服务器组成大规模集群,这就须要高并发架构来支持。
高并发架构主要用到负载均衡、反向代理、分布式缓存等技术,有大量的开源产品可供使用。包括LVS、varnish、haproxy等。mysql
大型站点高并发架构就是利用负载均衡技术、反向代理技术、数据库集群、web服务器集群、Nosql技术等linux
高并发架构经过使用负载均衡,缓存之类的技术,实现active-active, 或者active-standby的架构。
实现大型web站点高并发: web层可使用LVS实现负载均衡;数据库层可使用mysql读写分离,redis;另外可使用CDN网站加速nginx
技术能够经过负载均衡技术LVS,haproxy,web集群技术如nginx 反向代理tomcat集群或者apache集群,缓存技术如Varnish,memache,redis,mongodb,数据库集群如mysql的AB复制,经过开源的mysql中间件如Atlas,cobar,TDDL实现数据库的读写分离等等。web
1:从用户浏览器端可能就已经使用了浏览器的缓存功能,设置了cache-expired的时间,让重复访问的内容尽快的被访问到。
2,在用户发起请求后,通过DNS的分发的时候,可能使用了DNS的负载均衡或者DNS的策略分发。
3,请求通过分发后,首先会达到CDN。
4,CDN若是有就返回给用户,若是没有,则请求源站点。
5,源站点可能用到的技术有LVS, HAPROX,NGINX,VARNISH,TOMCAT等,缓存层可能会用到memcached,redis,mongodb,数据库层面可能会用到主从 ,主主,MHA等,或者读写分离等。redis
另外,我想请问老师,若是老板问你,我想抗住并发100W用户的访问。须要多少硬件资源。
评估的来源是否是:
首先得测试下:单台服务器能够抗住多少应用。而后单台的TPS*N=100W
那用什么工具来测试呢?loadrun仍是Jmeter.测试服务器自己也达不到100W的TCP链接数吧。sql
大型站点高并发网站架构的模型和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 ,分布式文件系统等等都会有所涉及。mongodb
可以承受大并发用户访问的架构;随着用户数的增多,对原先的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站点高并发架构通常都采用以下的技术: 一、大量使用缓存技术改善站点的性能,提供用户体验;对应的技术点有redis、memcached等 二、应用服务器集群提升网站的高并发处理能力;对应的技术点有apache、nginx、haproxy等 三、数据库进行读写分离;对应的技术点有MySQL读写分离/高可用,NOSQL等 四、使用反向代理和CDN加速网站响应;对应的技术点有suqid、CDN等 五、根据业务须要,使用分布式文件系统和分布式数据库系统;对应的技术点有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
一、海量用户访问,如12306等
二、海量用户数据存储,如 google等
涉及到的技术:
负载均衡、持久化存储(mysql、nosql)消息中间件 CDN 分布式缓存,分布式文件 搜索引擎 离线计算等
高可用解决方案(corosync,pacemaker,KeepAlived)负载均衡(LVS)缓存服务(Varnish)反向代理(haproxy)web服务器(Apache,Nginx,Tomcat)站点架构(Lamp,Lnmp)以及如今所使用的分布式架构和NOSQL的架构整合在一块儿去知足所需。
高并发架构主要运用了:扩展技术(垂直扩展和水平扩展)、冗余、负载均衡、缓存技术、HTML静态化、图片服务器分离、镜像技术。
优化大型web站点高并发架构的手段包括负载均衡、缓存、反向代理、CDN加速、读写分离、系统解耦、消息异步、NoSQL数据库等多方面