1. 什么是高并发?

    高并发(High Concurrency)是一种系统运行过程中遇到的一种“短时间内遇到大量操作请求”的情况,主要发生在web系统集中大量访问收到大量请求(例如:12306的抢票情况;天猫双十一活动)。该情况的发生会导致系统在这段时间内执行大量操作,例如对资源的请求,数据库的操作等。

    高并发的处理指标?

    高并发相关常用的一些指标有:

    1.响应时间(Response Time)

    响应时间:系统对请求做出响应的时间。例如系统处理一个HTTP请求需要200ms,这个200ms就是系统的响应时间

    2.吞吐量(Throughput)

    吞吐量:单位时间内处理的请求数量。

    3.每秒查询率QPS(Query Per Second)

    QPS:每秒响应请求数。在互联网领域,这个指标和吞吐量区分的没有这么明显。

    4.并发用户数

    并发用户数:同时承载正常使用系统功能的用户数量。例如一个即时通讯系统,同时在线量一定程度上代表了系统的并发用户数。

    高并发和多线程的关系和区别

    “高并发和多线程”总是被一起提起,给人感觉两者好像相等,实则 高并发 ≠ 多线程

    1.多线程

    多线程是java的特性,因为现在cpu都是多核多线程的,可以同时执行几个任务,为了提高jvm的执行效率,java提供了这种多线程的机制,以增强数据处理效率。多线程对应的是cpu,高并发对应的是访问请求,可以用单线程处理所有访问请求,也可以用多线程同时处理访问请求。

    在过去单CPU时代,单任务在一个时间点只能执行单一程序。之后发展到多任务阶段,计算机能在同一时间点并行执行多任务或多进程。虽然并不是真正意义上的“同一时间点”,而是多个任务或进程共享一个CPU,并交由操作系统来完成多任务间对CPU的运行切换,以使得每个任务都有机会获得一定的时间片运行。

    再后来发展到多线程技术,使得在一个程序内部能拥有多个线程并行执行。一个线程的执行可以被认为是一个CPU在执行该程序。当一个程序运行在多线程下,就好像有多个CPU在同时执行该程序。

    总之,多线程即可以这么理解:多线程是处理高并发的一种编程方法,即并发需要用多线程实现。

    2.高并发

    高并发不是JAVA的专有的东西,是语言无关的广义的,为提供更好互联网服务而提出的概念。

    典型的场景,例如:12306抢火车票,天猫双十一秒杀活动等。该情况的发生会导致系统在这段时间内执行大量操作,例如对资源的请求,数据库的操作等。如果高并发处理不好,不仅仅降低了用户的体验度(请求响应时间过长),同时可能导致系统宕机,严重的甚至导致OOM异常,系统停止工作等。

    如果要想系统能够适应高并发状态,则需要从各个方面进行系统优化,包括,硬件、网络、系统架构、开发语言的选取、数据结构的运用、算法优化、数据库优化等……而多线程只是其中解决方法之一。

    多线程并发技术

    java多线程编程将会涉及到如下技术点:

    1.并发编程三要素

    \2. 线程的五大状态

    3.悲观锁与乐观锁

    4.线程之间的协作:wait/notify/notifyAll等

    5.synchronized 关键字

    6.CAS

    CAS全称是Compare And Swap,即比较替换,是实现并发应用到的一种技术。操作包含三个操作数 —— 内存位置(V)、预期原值(A)和新值(B)。 如果内存位置的值与预期原值相匹配,那么处理器会自动将该位置值更新为新值 。否则,处理器不做任何操作。

    7.线程池

    如果我们使用线程的时候就去创建一个线程,虽然简单,但是存在很大的问题。如果并发的线程数量很多,并且每个线程都是执行一个时间很短的任务就结束了,这样频繁创建线程就会大大降低系统的效率,因为频繁创建线程和销毁线程需要时间。线程池通过复用可以大大减少线程频繁创建与销毁带来的性能上的损耗。

    高并发技术方案:提高高并发能力

    1.分布式缓存:redis、memcached等,结合CDN来解决图片文件等访问。

    2.消息队列中间件:activeMQ等,解决大量消息的异步处理能力。

    3.应用拆分:一个工程被拆分为多个工程部署,利用dubbo解决多工程之间的通信。

    4.数据库垂直拆分和水平拆分(分库分表)等。

    5.数据库读写分离,解决大数据的查询问题。

    6.还可以利用nosql ,例如mongoDB配合mysql组合使用。

    7.还需要建立大数据访问情况下的服务降级以及限流机制等。

阿里P8架构师谈(9):流量高峰时期的性能瓶颈有哪些、以及如何来解决相关推荐

  1. 阿里P8架构师谈:流量高峰时期的性能瓶颈有哪些、以及如何来解决

    在高并发大量用户的场景,系统一般会面临如下三个挑战: 1. 日益增长的用户数量 2. 日渐复杂的业务 3. 急剧膨胀的数据 这些挑战对于性能优化而言表现为:在保持和降低系统TP95响应时间(指的是将一 ...

  2. 阿里P8架构师谈:Web前端、应用服务器、数据库SQL等性能优化总结

    web前端性能优化 Web前端指网站业务逻辑之前的部分,包括: 1.浏览器加载 2.网站视图模型 3.图片服务 4.CDN服务等 主要优化手段有优化浏览器访问,使用反向代理,CDN等. 1.浏览器访问 ...

  3. 阿里P8架构师谈:多线程、架构、异步消息、Redis等性能优化策略

    常见性能优化策略分类 1.代码 之所以把代码放到第一位,是因为这一点最容易引起技术人员的忽视.很多技术人员拿到一个性能优化的需求以后,言必称缓存.异步.JVM等.实际上,第一步就应该是分析相关的代码, ...

  4. 阿里P8架构师谈:数据库、JVM、缓存、SQL等性能调优方法和原则

    编辑 性能优化基本是BAT等一线互联网公司程序员必备的技能,以下为大家完整揭晓性能完整的优化方案和方法:包含web网站调优.数据库.JVM调优.架构调优等方案. 第一:Web网站调优 1.尽可能减少H ...

  5. 阿里P8架构师谈:大数据架构设计(文章合集)

    架构师进阶有一块很重要的内容,就是需要掌握大数据的架构设计,主要涵括: MySQL等关系式数据库,需要掌握数据库的索引.慢SQL.以及长事务的优化等. 需要掌握非关系式数据库(NoSQL)的选型,以及 ...

  6. 阿里P8架构师谈(4):流量高峰时期的性能瓶颈有哪些、以及如何来解决

    在高并发大量用户的场景,系统一般会面临如下三个挑战: 日益增长的用户数量 日渐复杂的业务 急剧膨胀的数据 这些挑战对于性能优化而言表现为:在保持和降低系统TP95响应时间(指的是将一段时间内的请求响应 ...

  7. 阿里P8架构师谈:微服务Dubbo和SpringCloud架构设计、优劣势比较

    本文主要围绕微服务的技术选型.通讯协议.服务依赖模式.开始模式.运行模式等几方面来综合比较Dubbo和Spring Cloud 这2种开发框架.架构师可以根据公司的技术实力并结合项目的特点来选择某个合 ...

  8. 阿里P8架构师谈:Restful、SOAP、RPC、SOA、微服务之间的区别

    内容大纲: 1.介绍Restful.SOAP.RPC.SOA以及微服务 2.重点谈谈SOA与微服务的区别 3.以及为什么要使用微服务架构 什么是Restful Restful是一种架构设计风格,提供了 ...

  9. 阿里P8架构师谈:什么是缓存雪崩?服务器雪崩的场景与解决方案

    什么是应用服务雪崩 雪崩问题 分布式系统都存在这样一个问题,由于网络的不稳定性,决定了任何一个服务的可用性都不是 100% 的.当网络不稳定的时候,作为服务的提供者,自身可能会被拖死,导致服务调用者阻 ...

  10. psql where里有自定义函数慢_阿里P8架构师谈:MySQL慢查询优化、索引优化、以及表等优化总结...

    MySQL优化概述 MySQL数据库常见的两个瓶颈是:CPU和I/O的瓶颈. CPU在饱和的时候一般发生在数据装入内存或从磁盘上读取数据时候. 磁盘I/O瓶颈发生在装入数据远大于内存容量的时候,如果应 ...

最新文章

  1. EasyPHP-2.0b1+ Mantis-1.1.0安装及技巧
  2. 收藏 | 深度学习中神经网络的可视化解释!
  3. 在水晶报表中实现任意选择指定字段显示-模板及C#升级版
  4. java反射机制(三)---java的反射和代理实现IOC模式 模拟spring
  5. 【机器学习】模型压缩大杀器!详解高效模型设计的自动机器学习流水线
  6. Governing sand(权值线段树/主席树)
  7. [51nod1773]A国的贸易
  8. 苹果封装的对称加密和非对称加密API
  9. 《构建之法》(第四、十七章)读书笔记
  10. 从程序员到项目经理(三)
  11. delphi 如何知道 Treeview,Listview 当前最上面显示的节点
  12. IDEA使用SVN上传项目
  13. java web后台开发跟手机APP后台开发有什么不同? 二者怎么通信?
  14. python可以爬wind的数据_Python:爬取上市公司公告-Wind-CSMAR
  15. 驰骋计算产业数十年的Wintel联盟开始分崩离析
  16. 暴力破解zip,rar密码
  17. python-安居客-郑州二手房销售信息抓取
  18. mac版python怎么运行_mac 怎么运行python
  19. 智能制造案例——面向重型机械车间智能制造系统解决方案
  20. Word中的空格变成点的问题与解决

热门文章

  1. 万字博文讲解如何用shell来实现一个俄罗斯方块小游戏
  2. app营销实训报告_实习报告:软件销售实习报告
  3. 关于电脑BIOS解密,如何解密问题?
  4. opencv检测尺寸+部署时踩过的坑
  5. 多目标优化问题概述(基本模型和概念)
  6. ssh 安装及登录提示:connection refused(ssh: connect to host XX.XX.XX.XX port 22: Connection refused)的解决办法
  7. 银汇通支付解析固定pos机与移动pos机的优缺对比
  8. Writing device drivers in Linux: A brief tutorial
  9. php+head+下载,CMSHead 开源的PHPCMS系统下载/CMSHead 开源的PHPCMS系统官方下载-太平洋下载中心...
  10. eclipse 国内下载镜像地址