• java高并发


    什么是高并发?
    高并发(High Concurrency)是互联网分布式系统架构设计中必须考虑的因素之一,它通常是指,通过设计保证系统能够同时并行处理很多请求。

    高并发相关常用的一些指标有响应时间(Response Time),吞吐量(Throughput),每秒查询率QPS(Query Per Second),并发用户数等。

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

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

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

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

    常见并发举例
    案例一、订票系统案例,某航班只有一张机票,假定有1w个人打开你的网站来订票,问你如何解决并发问题(可扩展到任何高并发网站要考虑的并发读写问题)

    案例二、股票交易系统、银行系统、移动网络系统的大数据量。
    1.股票交易系统的行情表,每几秒钟就有一个行情记录产生,一天下来就有(假定行情3秒一个) 股票数量×20×60*6 条记录,一月下来这个表记录数量多大? oracle中一张表的记录数超过100w后 查询性能就很差了,如何保证系统性能?
    2.中国移动有上亿的用户量,表如何设计?

    案例三、小米手机每周二的秒杀,可能手机只有1万部,但瞬时进入的流量可能是几百几千万。

    案例四、12306抢票,票是有限的,库存一份,瞬时流量非常多,都读相同的库存。读写冲突,锁非常严重。

    高并发的处理
    首先要了解高并发的的瓶颈在哪里?
    1、可能是服务器网络带宽不够
    2、可能web线程连接数不够
    3、可能数据库连接查询上不去。

    根据不同的情况,解决思路也不同。
    1、像第一种情况可以增加网络带宽,DNS域名解析分发多台服务器。
    2、负载均衡,前置代理服务器nginx、apache等等
    3、数据库查询优化,读写分离,分表等等

    在高并发下面需要常常需要处理的内容:
    ① 尽量使用缓存技术,包括用户缓存,页面信息缓存等,多花点内存来做缓存,可以大量减少与数据库的交互,提高性能。

    ② 用jprofiler等工具找出性能瓶颈,减少额外的开销。

    ③ 优化数据库查询语句,减少直接使用hibernate等工具的直接生成语句(仅耗时较长的查询做优化)。

    ④ 优化数据库结构,多做索引,提高查询效率。

    ⑤ 报表统计的模块,尽量采用定时任务执行,如果非得要实时进行刷新,那么可以采用缓存来做数据

    ⑥ 能使用静态页面的地方尽量使用,减少容器的解析(尽量将动态内容生成静态html来显示)。同时由于页面中有许多图片的这种,可以考虑一下把图片做成一个服务器,这样可以减少业务服务器的压力。

    ⑦ 使用集群的方式来解决,单台服务器性能的问题。

    ⑧ 把项目拆分成为多个应用小型服务器形式,来进行分布式部署。采用数据同步机制(可以使用数据库同步形式来做)达到数据一致性。

    ⑨ 使用负载均衡模式,来让每一个服务器资源进行合理的利用。

    ⑩ 缓存机制中,可以使用redis来做内存数据库缓存起来。也可以使用镜像分担,这样可以让两台服务器进行访问,提高服务器的访问量。

    转载自:https://blog.csdn.net/ght886/article/details/86535653

  • 相关阅读:
    DetailsView应用之雕虫小技
    Javascript 调用C# 代码并传递参数的两种方法
    一键还原后,重装一遍 bartender7.75软件, 添加空白标签的时候提示 无法找到字体,无法在没文字情况下运行 求电脑帝解释
    JS处理Enter键触发执行的操作
    SoundManager 2 实现web页面中嵌入声音播放
    用Nexus搭建Maven远程仓库[私服]
    AmCharts一款统计图表及股票图表的插件
    HTML5添加网页音效
    Jquerymenuaim流畅的菜单滑动体验
    UML之JUDE{Astah}使用介绍
  • 原文地址:https://www.cnblogs.com/JaxYoun/p/13307077.html
Copyright © 2020-2023  润新知