高并发系统学习 Day10 池化技术

118 阅读2分钟
后台开发中常用的池化技术包括连接池和线程池。

1.  连接池

连接池是一种重复使用数据库连接的技术。在数据库连接的创建和关闭过程中,会涉及到一些比较耗时的操作,例如建立网络连接、验证用户身份等,这些操作都会消耗一定的时间。当应用程序需要频繁地与数据库进行交互时,每次都重新创建连接会影响系统的性能。

连接池就是为了解决这个问题而产生的技术。连接池中维护了一组可重用的数据库连接,应用程序需要与数据库进行交互时,直接从连接池中获取一个连接,使用完毕之后,将连接归还给连接池。这样就避免了重复创建和关闭连接,提高了系统的性能。

2.  线程池

线程池是一种管理线程的技术,它可以有效地管理和控制线程的数量。在线程池中,预先创建一定数量的线程,当需要执行任务时,从线程池中获取一个线程,执行完毕之后,将线程归还给线程池。

线程池的好处在于可以避免线程的频繁创建和销毁,减少系统的开销。此外,线程池还可以限制线程的数量,避免因过多的线程导致系统的负载过高而崩溃。

除了连接池和线程池,还有其他的池化技术,例如对象池、内存池等。这些技术都是为了优化系统的性能而产生的,应该根据实际情况选择合适的技术来使用。

池化技术的核心思想是空间换时间,期望使用预先创建好的对象来减少频繁创建对象的性能开销,同时还可以对对象进行统一的管理,降低了对象的使用的成本,总之是好处多多。
不过,池化技术也存在一些缺陷,比方说存储池子中的对象肯定需要消耗多余的内存,如果对象没有被频繁使用,就会造成内存上的浪费。再比方说,池子中的对象需要在系统启动的时候就预先创建完成,这在一定程度上增加了系统启动时间。
可这些缺陷相比池化技术的优势来说就比较微不足道了,只要我们确认要使用的对象在创建时确实比较耗时或者消耗资源,并且这些对象也确实会被频繁地创建和销毁,我们就可以使用池化技术来优化。

此文章为5月Day10学习笔记,内容来源于极客时间《高并发系统设计 40 问》