Java 高并发,什么方式解决?高并发和大流量解决方案

 

对于我们所研发的网站,若网站的访问量非常大,那么我们必须考虑相关的并发访问问题,而并发问题是绝大部分的程序员头疼的问题。本 Chat 带你领略一下相关概念和解决方案:

概念类:

  • 什么是 QPS、PV、UV、QPS 不等于并发连接数?
  • 大中小三种类型网站的 QPS 一般是多少?
  • 具体解决方案:数据库层面、Web 负载层面、IP Hash 策略、Nginx 负载均衡策略......

第一章 哪些必须掌握的常用概念

1.1 什么是 QPS?

QPS:

每秒查询率(Query Per Second),每秒的响应请求数,也即是最大吞吐能力。 QPS = req / sec = 请求数 / 秒。 QPS 统计方式 (一般使用 http _ load 进行统计)。 QPS = 总请求数 / ( 进程总数 * 请求时间 )。 QPS:单个进程每秒请求服务器的成功次数。

峰值QPS:

原理:每天 80% 的访问集中在 20 % 的时间里,这 20 % 时间叫做峰值时间。

单台服务器每天 PV 计算

公式1:每天总 PV = QPS * 3600 * 6 。 公式2:每天总 PV = QPS * 3600 * 8。

集群服务器计算

服务器数量 = ceil(每天总 PV / 单台服务器每天总 PV) 峰值 QPS 和机器计算公式

  • 原理:每天 80 % 的访问集中在 20 % 的时间里,这 20 % 时间叫做峰值时间 。
  • 公式:( 总 PV 数 * 80 % ) / ( 每天秒数 * 20 % ) = 峰值时间每秒请求数(QPS)
  • 机器:峰值时间每秒 QPS / 单台机器的 QPS = 需要的机器

举例 1: 每天 600 w PV 的在单台机器上,这台机器需要多少 QPS? ( 6000000 * 0.8 ) / (86400 * 0.2 ) = 278 (QPS)

举例 2: 如果一台服务器机器的 QPS 是 58,需要几台机器来支持? 278 / 65 = 4.3 采用进 1 算法,需要 5 台机器支持。

以上 数据仅供 chat 讲解知识,参考,勿要对应自己服务器,请以自己服务器的性能为准。

1.2 什么是 PV?

PV 是 page view 的缩写,即页面浏览量,或点击量;通常是衡量一个媒体频道或网站甚至一条网络文章的主要指标。

控制 PV 的网站:24 小时算一次 PV 。 例子:点我查看,24 小时只算一次 PV。

普通的 PV 的网站:每访问一次 PV 增加一次。例子:点我查看,刷新看看人数,没刷新增加1人。

Array 老师提醒: 针对大并发和大流量的网站,一定要做好这个,否则,黑客利用 PV 漏洞,及其容易刷 PV,导致服务器崩溃。

PV:一个网站的 PV,从某种程度上已成为投资者衡量商业网站表现的最重要尺度,可以通过专业的工具查询和计算。

第三方查询工具: http://www.alexa.cn/ 这个可以查询或者搜索 alexa 的工具。

1.3 什么是UV ?

UV:

独立访客即 Unique Visitor,访问您网站的一台电脑客户端为一个访客。00:00 - 24:00 内相同的客户端只被计算一次,指访问某个站点或点击某条新闻的不同 IP 地址的人数。

在同一天内,uv 只记录第一次进入网站的具有独立 IP 的访问者,在同一天内再次访问该网站则无效。独立 IP 访问者提供了一定时间内不同观众数量的统计指标,而没有反应出网站的全面活动状况。

分析:PV 和 UV 各有各的用途,但是往往 UV 更为准确,但是 PV 更能查看活动值。

1.4 什么是 PR 值

PR 值,即 PageRank,网页的级别技术。取自 Google 的创始人 Larry Page,它是 * 运算法则(排名公式)的一部分,用来标识网页的等级 / 重要性。级别从 1 到 10 级,10 级为满分。PR 值越高说明该网页越受欢迎(越重要)。

一个 PR 值为 1 的网站表明这个网站不太具有流行度,而 PR 值为 7 到 10 则表明这个网站非常受欢迎。

我们可以这样说:一个网站的外部链接数越多其 PR 值就越高;外部链接站点的级别越高,网站的 PR 值就 越高。

例如:如果
https://edu.csdn.net/course/detail/8566 网站上有一个 www.ugaoxin.com 网站的链接,那为 CSDN 网站必须提供一些干货,搜索引擎认为来自 ugaoxin.com 的友情链接,从而对 CSDN 的网站增加PR值。

1.5 QPS 不等于并发连接数

通过前面的计算公式和各自概念的关系:我们得出结论 QPS 不等于并发连接数。

QPS 是每秒 HTTP 请求数量,并发连接数是系统同时处理的请求数量。

(总 PV 数 80 %)/(6小时秒数 20 %)= 峰值每秒请求数(QPS) 80 % 的访问量集中在 20 % 的时间。

这点谨防在面试中误入陷阱,面试中该部分是拔高的部分,很多人被面试官带篇。Array 老师在做面试官期间,问过很多次,如果面试者打不上了你自己做的系统是 QPS 和并发连接数,或者误认为是一个的话,在以后的谈薪资等容易被动,甚至让你回家等消息了,因为这是实际项目经验不可或缺的一部分,要不你不上心。

那么如果被面试官问道你做的网站的 QPS 是多了?你该怎么回答?尤其是对这方面缺乏或者没有实战经验的同学,请查看下面的章节。

第二章 大中小三种类型网站的 QPS 一般是多少?

随着 QPS 的增长,每个阶段需要根据实际情况来进行优化,优化的方案也与服务器等硬件、网络带宽等现实的物理条件息息相关。

2.1网站的大小标准

一个网站的“大小”,所采用的架构不同,用到的技术也大相径庭,众多种衡量的方法 。对于并发业界的,存在争议,这里从数量级层面总结归纳一下。

网站的热度:日均 PV,同时在线人数、注册用户数,活跃用户等运营数据。

互联网的“3 秒定律”,大型网站要求 1.5 秒以内加载整页,或者至少可以达到浏览。

2.2 分类

2.2.1 平均值 < 50QPS

小型网站,一般的服务器就可以应付,可以用最简单的方法快速搭建,短期没有太多的技术瓶颈,只要服务器稳定即可,网络通畅即可。

2.2.2 50QPS < 平均值 < 100QPS

DB 数据库极限型:常用的关系型数据库的每次请求大多都能控制在 0.01 秒左右,就算你研发的 Web 网站每页面只有一次数据库请求,那么页面请求无法保证在 1 秒钟内完成 100 个请求,这个阶段要考虑做 Cache 或者多 DB 负载。

2.2.3 300QPS<平均值<800QPS

带宽极限型

服务器常用 IDC 提供的“百兆带宽”,这意味着网站出口的实际带宽是 8 M Byte左右。假定每个页面只有 10 K Byte,在这个并发条件下,百兆带宽已经快速的占用资源完毕。

这要就可能考虑优化的技术如同:CDN 加速 & 异地缓存,集群负载等技术。

2.2.4 500QPS < 平均值 < 1000QPS

内网带宽极限+缓存极限型

由于 Key/value 的特性,每个页面对缓存技术的请求远大于直接对 DB 的请求。

例:Memcache 的悲观并发数在 2w 左右,现在的实际项目,可能在大并发之前内网的带宽就已经吃光。

Array 老师当初做电商项目的时候,用的也是 memcached,但是压力测试的时候,在 7991QPS 的时候,memcached 已经不稳定,存在各种无法预知的程序问题,这是压力迅速到到 mysql 的数据库上了,整个系统性能迅速下降,这样就会出现网站访问变慢,甚至无法访问的 404 等情况,我们当时做的是 wait.xxxxx.com,跳转到等待界面,这样提示更加的友好。

2.2.5 1000QPS < 平均值 < 2000QPS

FORK / SELECT,锁模式极限型

线程模型决定吞吐量。不管你系统中最常见的锁是什么锁,这个级别下,文件系统访问锁都成为了灾难。这就要求系统中不能存在中央节点,所有的数据都必须分布存储,数据需要分布处理。总之, 分布

Array 老师提醒:这个是常说的是否需要做分布式的标准,如果达到了这个标准,必须做分布式。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值