并发
【高并发】
当前系统能够同时承载的并发数
tps:每秒事务处理的数量
qps:每秒事务查询数量
如何支撑高并发
硬件资源:
cpu:核心数,并行任务数量(几核),程序执行
内存:存储数据;
磁盘:读写;
网卡:数据传输;
软件资源:
CPU -> 线程,8核(同时可以运行8个线程)
IO -> 数据库交互 -> 数据刷到磁盘,内存/缓存/异步刷盘策略(为了提高IO效率);数据库做分库分表、分布式缓存(1、内存中;2、存储在数据库中是按照特定的数据结构,这些是将关系型数据库中的数据计算出来,将数据非结构化存储在缓存中,减少计算带来的性能损耗)、分布式消息中间件(异步,减少性能损耗,时间)。
单节点遇到瓶颈,多个计算机组成一个分布式计算机。
多线程技术
java程序 -> .java源文件(磁盘) -> JVM(编译).class -> main方法运行这个程序(加载到内存中) -产生一个线程
CPU来执行这个程序的指令
假设进程中,有一个从磁盘加载一个文件保存到数据库的操作。
CPU的运算效率和磁盘的IO效率。(磁盘->内存->用户空间)
CPU的运算效率比磁盘的IO效率更快,会造成CPU阻塞。
CPU是计算机汇中最核心的资源(CPU阻塞会造成CPU资源浪费)
多道程序设计 :多进程,让多个进程同时加载到内存,进程之间是相互隔离不影响。
分时系统:利用CPU的时间片切换
线程为轻量级进程
线程特征
- 异步(注册->发送email)
- 并行(CPU核数)
java中使用线程
- 集成Thread
- 实现Runnable
- Callable/Future