Java高并发应用设计之原理分析

预先善其事,必先利其器。 我们想要设计好一个高并发系统,必须要了解清楚底层基础原理,才能更好的去思考高并发接口功能的设计与实现。



一、高并发系统优化逻辑


01 什么事高并发?

就是指系统能够承载的最大并发数量,通常也指系统同时能够处理的最大请求数量。

关键指标: TPS 表示系统每秒处理的事务数量(写操作) ,QPS表示系统每秒处理的查询数量(读操作)


02 提高系统高并发的硬件因素

CPU: 增加CPU的核数,提高CPU的计算能力和处理能力,提升系统处理性能。

内存: 增加内存,将磁盘IO操作转化为内存操作,提升系统读写性能。

磁盘: 增加磁盘并更换为固态存储,提升硬件IO性能。

网卡: 升级网卡为万兆字节,提高网络带宽, 提升网络通信性能。


03 提高系统高并发的软件因素

使用缓存: 减少与数据库直接的直接交互计算,提升IO性能。

处理异步化: 采用线程异步处理请求,直接返回结果标志。(关键因素,基础因素)

集群化部署: 通过节点负载均衡,分摊请求流量,提升请求最大数量。



二、高并发业务应用场景


04 常用高并发业务场景

1.网络请求分发场景: tomcat处理请求。

2.大任务分解为小任务处理场景: 大型文件的下载/导入。

3.异步业务场景: 银行转账。

4.Socket通信场景: netty 高并发通信。



三、多线程常规优化


05 线程的运行状态切换

NEW新建状态 : new Thread()

RUNNABLE运行状态: xxx.start()

BLOCKED阻塞状态: synchronized加锁,并未抢到同步锁

WAITING等待状态: Object.wait()

TIMED_WAITING等待超时状态: sleep(xxx)

TERMINATED终止状态: run()执行结束 


06 线程安全中断的方式

在while循环处添加信号量。


07 减少上下文切换

1.减少线程数量。

2.采用无锁设计方案解决线程间共享资源竞争问题。比如CAS自旋操作。




做一个有灵魂的开发者。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容