NOTE
2.8 如何设计池化技术
1. 什么是池化技术 预先创建对象并存放到池子里,使用的时候从池子中获取对象而不是创建,使用结束把对象归还给池子而不是销毁 2. 为什么需要池化技术 - 频繁创建、销毁对象开销大 - 对象占用资源多,需要限制对象的数量否则会把资源耗尽 3. 池化技术的缺点 池化技术属于利用空间换时间,所以会消耗内存
这是历史学习笔记,可能存在过时或不完整的理解。
1. 什么是池化技术
预先创建对象并存放到池子里,使用的时候从池子中获取对象而不是创建,使用结束把对象归还给池子而不是销毁
2. 为什么需要池化技术
- 频繁创建、销毁对象开销大
- 对象占用资源多,需要限制对象的数量否则会把资源耗尽
3. 池化技术的缺点
池化技术属于利用空间换时间,所以会消耗内存
4. 如何设计池化技术
关键四个参数:最小空闲对象数+最大空闲对象数+最大对象数+超时时间
- 当前对象数<最小空闲对象数
- 创建新的对象并放入对象池
- 当前对象数>最小空闲对象数
- 如果有有空闲对象,那么使用空闲对象
- 如果没有空闲对象,
- 如果当前对象数<最大空闲对象数,那么创建新的对象并放入对象池
- 如果当前对象数>最大空闲对象数
- 如果当前对象数<最大对象数,那么创建新的对象但不放入对象池,用完即销毁
- 如果当前对象数>最大对象数,那么等待空闲对象
- 对于>最小空闲对象数的那些空闲对象,当超过了超时时间那么销毁
4.1. 如何确定最大对象数
同业务系统设计分析思路.md的发布
- 计算单个对象所能支撑的QPS,参考压力测试.md(关联笔记尚未公开)
- 计算最大对象数 = 业务预估QPS/单个对象所能支撑的QPS + 一点富余量
4.2. 如何确定最大空闲对象数
如果存在突发流量,那么和最大对象数设置的一样;不存在则设置的小一点
4.3. 如何确定最小空闲对象数
4.4. 如何确定超时时间
4.5. 如何确定
5. 池化技术应用
5.1. 线程池
5.2. 协程池
协程池.md(关联笔记尚未公开)