高并发技术
- 并发编程-> 异步编程
- 分布式消息中间件 -> 异步设计
- 分布式存储 -> I/O
- 分布式架构(服务治理) ->
- 性能优化
- JVM
- tomcat
- mysql
- 算法
三高
高并发:高性能、高扩展、高可用
指标要求
用户数量100w -> 1000W
- 架构设计
- 人员的招聘
- 人员管理
- 目标推进
- 。。。。
1000W个用户的问题分解
性能指标:TPS/QPS/并发数/RT/DAU
并发数量是多少?
qps*rt值
一个请求平均处理时间是3s = 54000
Tomcat
- 针对Tomcat的优化
连接数量(socket.accept)
192.168.221.128:8080
Socket/File: Can’t open so many file
fd
连接数量是对内存的占用
一个连接(4096) 8k 100W(服务器能够支撑的并发连接数量) - 如何在应用层面去支撑更多的连接数量(NIO机制)
- 线程池
参数配置
max-threads ; //cpu 200默认的最大工作线程数量 max-connections: //10000默认 NIO模式下; ARP :
tomcat参数详细参考
JVM
虚拟机
- gc算法
- 内存空间
空间不足的情况
- 频繁GC
- new object() , 内存溢出(OOM)
一台服务器能支撑多少qps =500 ,18000 = 36台服务器。
针对频繁访问的页面或者服务去增加服务器。
业务逻辑的处理本质上就是IO操作;
- 查询数据库(磁盘IO)
- 数据库层面的基本优化
- 访问磁盘(磁盘IO)
- 交易对账的时候. 文本的解析和存储
- 磁盘的页缓存(异步刷盘、同步刷盘)
- 顺序读写
- 零拷贝
- SSD(固态)- HDD (机械磁盘)
- mmap(内存映射,减少拷贝次数)
- 异步化(最有效的武器)
- 内存运算(内存IO)
- 内存缓存
- (远程通信)网络通信(网络IO)
- 池化技术(一次性创建多个连接)
- 长连接()
- 同网段通信
- 减少网络通信的场景
- 异步化设计
- 线程的设计
- MQ的使用
- 数据结构算法
采用微服务架构



