web高并发的解决方案
我们先了解一下什么是并发和并行
并发:并发是指两个或多个事件在同一时间间隔内发生,就是可以重叠在时间段启动,并发是指一个时间段中有几个程序都处于已启动运行到运行完毕之间,且这几个程序都是在同一个处理机上运行,但任一个时刻点上只有一个程序在处理机上运行。
并行:并行是指两个或者多个事件在同一时刻发生
高比发关心的参数
QPS(TPS):每秒钟 request/事务 数量,在互联网领域,指每秒响应请求数(指 http请求);
QPS = 并发数 / 平均响应时间
吞吐量:单位时间内处理的请求数量(通常由QPS与并发数决定);
响应时间:系统对一个请求做出响应的平均时间。例如系统处理一个HTTP请求需要 200ms,这个200ms就是系统的响应时间(我认为这里应该仅包含处理时间,网络传 输时间忽略)。
方案一:分离
对于web服务器来说,图片消耗的资源是十分大的,大型网站基本都采用图片分离,他们都是独立的,多台图片服务器,可以降低服务器的系统压力,在图片和web服务器上可以进行配置的优化,保证执行效率
方案二:使用缓存
缓存一词搞技术的都接触过,很多地方用到缓存。网站架构和网站开发中的缓存也 是非常重要。这里先讲述最基本的两种缓存。高级和分布式的缓存在后面讲述。 架构方面的缓存,对Apache比较熟悉的人都能知道Apache提供了自己的缓存模 块,也可以使用外加的Squid模块进行缓存,这两种方式均可以有效的提高Apache的访 问响应能力。 网站程序开发方面的缓存,Linux上提供的Memory Cache是常用的缓存接口,可以 在web开发中使用,比如用java开发的时候就可以调用MemoryCache对一些数据进行缓 存和通讯共享,一些大型社区使用了这样的架构。另外,在使用web语言开发的时候, 各种语言基本都有自己的缓存模块和方法,PHP有Pear的Cache模块,Java就更多 了,.net不是很熟悉,相信也肯定有。
方案三:HTML静态
可以使用静态的页面,尽量使用静态页面,一些信息发布的网站,交互性强的社区,使用静态就很有必要,html静态化也是某些缓存策略使用的手段,对于系统中频繁使用数据库查询 但是内容更新很小的应用,可以考虑使用html静态化来实现。比如论坛中论坛的公用设 置信息,这些信息目前的主流论坛都可以进行后台管理并且存储在数据库中,这些信息 其实大量被前台程序调用,但是更新频率很小,可以考虑将这部分内容进行后台更新的 时候进行静态化,这样避免了大量的数据库访问请求。
方案四:数据库集群
大型的网站结构很复杂,访问量大,用户多,一台数据库就容易达到瓶颈,在数据库集群方面,很多数据库都有自己的解决方案,Oracle、Sybase等都有很好 的方案,常用的MySQL提供的Master/Slave也是类似的方案,您使用了什么样的DB,就 参考相应的解决方案来实施即可。
方案五:CDN加速技术:
CDN的全称是内容分发网络。其目的是通过在现有的Internet中增加一层新的网络 架构,将网站的内容发布到最接近用户的网络“边缘”,使用户可以就近取得所需的内容, 提高用户访问网站的响应速度。 CDN有别于镜像,因为它比镜像更智能,或者可以做这样一个比喻:CDN=更智能 的镜像+缓存+流量导流。因而,CDN可以明显提高Internet网络中信息流动的效率。从技 术上全面解决由于网络带宽小、用户访问量大、网点分布不均等问题,提高用户访问网 站的响应速度。 CDN的类型特点 CDN的实现分为三类:镜像、高速缓存、专线。 镜像站点(Mirror Site),是最常见的,它让内容直接发布,适用于静态和准动态的 数据同步。但是购买和维护新服务器的费用较高,还必须在各个地区设置镜像服务器, 配备专业技术人员进行管理与维护。对于大型网站来说,更新所用的带宽成本也大大提 高了。 高速缓存,成本较低,适用于静态内容。Internet的统计表明,超过80%的用户经常 访问的是20%的网站的内容,在这个规律下,缓存服务器可以处理大部分客户的静态请 求,而原始的服务器只需处理约20%左右的非缓存请求和动态请求,于是大大加快了客 户请求的响应时间,并降低了原始服务器的负载。 CDN服务一般会在全国范围内的关键节点上放置缓存服务器。 专线,让用户直接访问数据源,可以实现数据的动态同步。
web高并发的解决方案的更多相关文章
- 手把手让你实现开源企业级web高并发解决方案(lvs+heartbeat+varnish+nginx+eAccelerator+memcached)
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://freeze.blog.51cto.com/1846439/677348 此文凝聚 ...
- 针对web高并发量的处理
针对web高并发量的处理 针对高并发量的处理 一个老生常谈的话题了 至于需要运维支持的那些cdn.负载均衡神马的就不赘述了 你们都懂的 虫子在此博文只讲一些从程序角度出发的一些不错的解决方案. 至于从 ...
- PHP 高并发秒杀解决方案
本文提供 PHP 高并发秒杀解决方案(附加三个案例说明(普通流程,使用文件锁,使用redis消息队列)) 1:(正常流程,不做任何高并发处理),代码如下: <?php $_mysqli = ne ...
- 多道技术 进程 线程 协程 GIL锁 同步异步 高并发的解决方案 生产者消费者模型
本文基本内容 多道技术 进程 线程 协程 并发 多线程 多进程 线程池 进程池 GIL锁 互斥锁 网络IO 同步 异步等 实现高并发的几种方式 协程:单线程实现并发 一 多道技术 产生背景 所有程序串 ...
- 高并发简单解决方案————redis队列缓存+mysql 批量入库(ThinkPhP)
问题分析 问题一:要求日志最好入库:但是,直接入库mysql确实扛不住,批量入库没有问题,done.[批量入库和直接入库性能差异] 问题二:批量入库就需要有高并发的消息队列,决定采用redis lis ...
- 转载:【高并发简单解决方案 | 靠谱崔小拽 】redis队列缓存 + mysql 批量入库 + php离线整合
需求背景:有个调用统计日志存储和统计需求,要求存储到mysql中:存储数据高峰能达到日均千万,瓶颈在于直接入库并发太高,可能会把mysql干垮. 问题分析 思考:应用网站架构的衍化过程中,应用最新的框 ...
- 【高并发简单解决方案】redis队列缓存 + mysql 批量入库 + php离线整合
需求背景:有个调用统计日志存储和统计需求,要求存储到mysql中:存储数据高峰能达到日均千万,瓶颈在于直接入库并发太高,可能会把mysql干垮. 问题分析 思考:应用网站架构的衍化过程中,应用最新的框 ...
- web 高并发分析
<高并发Web系统的设计与优化>的读后感 一口气看完了<高并发Web系统的设计与优化>,感觉受益匪浅,作者从高并发开始讨论问题,并逐步给出了非常有建设性的想法和建议,是值得我们 ...
- 【高并发简单解决方案】redis缓存队列+mysql 批量入库+php离线整合
原文出处: 崔小拽 需求背景:有个调用统计日志存储和统计需求,要求存储到mysql中:存储数据高峰能达到日均千万,瓶颈在于直接入库并发太高,可能会把mysql干垮. 问题分析 思考:应用网站架构的衍化 ...
随机推荐
- mysql 开发进阶篇系列 34 工具篇 mysqlcheck(MyISAM表维护工具)
一.概述 mysqlcheck客户端工具可以检查和修复MyISAM表,还可以优化和分析表.实际上,它集成了mysql工具中check,repair,analyze,optimize功能,对于check ...
- 高可用Hadoop平台-Hue In Hadoop
1.概述 前面一篇博客<高可用Hadoop平台-Ganglia安装部署>,为大家介绍了Ganglia在Hadoop中的集成,今天为大家介绍另一款工具——Hue,该工具功能比较丰富,下面是今 ...
- Java 面试基础总结(一)
1.九种基本数据类型的大小以及它们的封装类 java提供的九种基本数据类型:boolean.byte(1).char(2).short(2).int(4).long(8).float(4).doubl ...
- 火热的线上APP的源码分享,开箱即用
这篇文章是写给iOS的程序员或产品经理的,同样,对于入门学习iOS开发的人,也是一个很好的实战演练,因为这里分享的是一个已经上架的.拿了源码就能正常运行起来的项目. 在介绍这个项目的源码分享之前,小编 ...
- C语言实现多态
C语言实现多态 首先声明,大神就不要看了.小弟水平有限. C++多态是通过虚函数表实现的,类似于JAVA多态的实现方式.关于Java多态的实现方式可以看我之前写过的一篇不是很完善的文章.从JVM角度看 ...
- [译]ABP vNext介绍
译者注 ASP.NET Boilerplate是.Net平台非常优秀的一个开源Web应用程序框架,在国内也有大量的粉丝. 近日, 本人在github上闲逛, 发现ASP.NET Boilerplate ...
- 人生第一次成功的sql注入
看了一些学习视频,按着大神们的教程,搜索inurl:asp?id=,结果一个可以注入的站点都找不到,绝望. 不放弃,又找啊找,找啊找,终于找到了一个! 啦啦啦,注入点!ヾ(o◕∀◕)ノヾ!! 再来查数 ...
- POJ 1860 Currency Exchange(如何Bellman-Ford算法判断图中是否存在正环)
题目链接: https://cn.vjudge.net/problem/POJ-1860 Several currency exchange points are working in our cit ...
- swift 基础小结02 -- VFL约束、属性的get和set方法、懒加载、方法替换
一.属性的get和set方法 1.自定义属性的set和get方法 private(set) var _image:UIImage? //自定义属性get,s ...
- JavaSE-基础语法(一)--数据类型及包装类
一.JavaSE-基础语法(一) 一.数据类型 二.变量常量 三.流程控制语句 四.数组 一.数据类型 java语言的数据类型包括两种,基本数据类型和引用数据类型. (1).基本数据类型:变量名指向具 ...