JAVA中的高并发
1 什么是高并发
1.1 高并发(High Concurrency)是互联网分布式系统架构设计中必须考虑的因素之一,它通常是指,通过设计保证系统能够同时并行处理很多请求。
1.2 高并发相关常用的一些指标有响应时间(Response Time),吞吐量(Throughput),每秒查询率QPS(Query Per Second),并发用户数等。
1.2.1 响应时间:系统对请求做出响应的时间。例如系统处理一个HTTP请求需要200ms,这个200ms就是系统的响应时间。
1.2.2 吞吐量:单位时间内处理的请求数量。
1.2.3 QPS:每秒响应请求数。在互联网领域,这个指标和吞吐量区分的没有这么明显。
1.2.4 并发用户数:同时承载正常使用系统功能的用户数量。例如一个即时通讯系统,同时在线量一定程度上代表了系统的并发用户数。
2 高并发的解决方法
总结:尽量使用乐观锁,分库分表,SQL优化,微服务,限流,缓存
2.1 使用Redis缓存原因
首先缓存技术是在用户请求时将数据保存在缓存中,下次请求时会检测缓存中是否有数据存在,防止多次请求服务器,导致服务器性能降低,严重导致服务器崩溃,这只是我自己的理解,详细的资料还是需要在网上收集;
2.2 Nginx生成页面静态化
2.3 图片服务器分离;图片是最消耗资源的
2.4 尽量使用乐观锁
乐观锁可以解决这个问题,不过乐观锁有时候会更新不到数据,此时就会去重试,增加系统开销,但相对悲观锁来说会好很多。可以使用redis的watch功能(redis乐观锁)。数据库加版本号,每次更新操作需要带版本号进行幂等操作。比如synchronized,lock,redis分布式锁,悲观锁容易造成阻塞。
2.5 拆分功能-微服务概念,这可能需要增加成本
比如一个系统里有会员信息、商品信息、交易信息,那么我们可以拆成3个微服务,图片、文件用专门的服务器存储,每个应用单独部署,且每个微服务部署集群,每个微服务有自己的数据库。这样就会用户请求跟数据交互都分流了。
2.6 分库分表(垂直拆分,水平拆分)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· DeepSeek在M芯片Mac上本地化部署