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 分库分表(垂直拆分,水平拆分)
 

 

posted @ 2022-11-21 12:25  NingShare  阅读(427)  评论(0编辑  收藏  举报