高并发场景

高并发:一种系统运行过程中的一种“短时间内遇到大量操作请求”的情况,主要web系统集中大量访问收到大量请求,如12306抢票、双11等,
        该情况的发生会导致系统在该段时间内执行大量操作,例如对资源的请求、数据库的操作等。
        
高并发处理指标:

  1. 响应时间:系统对请求做出相应的时间
  2. 吞吐量:单位时间内处理的请求数
  3. 每秒查询率QPS: 每秒相应请求数
  4. 并发用户数:同时承载正常使用系统功能的用户数量

    
 高并发:-->秒杀系统等会导致在短时间内执行大量请求操作,若处理不好,不仅降低用户体验(请求响应时间过长),同时可能导致系统宕机

  1. 多线程:多线程可以理解为处理高并发的一种编程方法 --->为了提高jvm的执行效率,java提供了多线程机制提高数据处理效率
  2. 多线程并发技术:线程池、线程状态、线程间协作、悲观锁与乐观锁、共享数据访问的阻塞同步(synchronized与ReentrantLack)、非阻塞同步(CAS与原子数)
  3. 高并发技术方案:提高并发度

           3.1 分布式缓存(redis、memcached等):结合CDN来解决图片文件等访问

           3.2 消息队列:rabbitMQ、kaflka、activeMQ等,解决大量消息的异步处理

           3.3 分库分表读写分离:解决大数据查询问题

           3.4 数据库垂直拆分:

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

           3.6 sql与nosql组合:
            
   重要的是整体架构的设计、数据库的设计和优化、缓存系统等
            有几个常用的措施:  
                1、对常用功能建立缓存模块  
                2、网页尽量静态化  
                3、使用单独的图片服务器,降低服务器压力,使其不会因为图片加载造成崩溃  
                4、使用镜像解决不同网络接入商和不同地域用户访问差异  
                5、数据库集群图表散列  
                6、加强网络层硬件配置,硬的不行来软的。  
                7、终极办法:负载均衡
        大流量、高并发网站主要考虑的是可伸缩性,当用户量、流量增大的时候,可以通过增加机器来分担压力;
        大流量,高并发的网站主要的压力应该是在数据库的io操作上,优化查询语句,
        合理使用索引,减少sql语句执行的时间,主从复制、读写分离
        建立集群:将读写或计算操作分摊到多态机器上

你可能感兴趣的:(高并发)