前言
在分布式高并发服务器中,client到server以及server中的多个节点之间的连接往往使用连接池来管理。简单来说就是将提前创建好的连接保存在池中,当有请求到来时,直接使用连接池中的连接对server端访问,省去了创建连接和销毁连接的开销(TCP建立连接时的三次握手和释放连接时的四次挥手),从而提高了性能。
目录
设计原则
- 连接池的扩缩容
- 空闲连接的超时与保活
- 池满的处理机制
连接池的扩缩容
通常连接池属性包含最大空闲连接数和最大活跃连接数。
最大空闲连接数
:连接池一直保持的连接数,无论这些连接被使用与否都会被保持。如果客户端对连接池的使用量不大,便会造成服务端连接资源的浪费。
最大活跃连接数
:连接池最多保持的连接数,如果客户端请求超过次数,便要根据池满的处理机制
来处理没有得到连接的请求。
扩容
:当请求到来时,如果连接池中没有空闲的连接,同时连接数也没有达到最大活跃连接数,便会按照特定的增长策略创建新的连接服务该请求,同时用完之后归还到池中,而不是关闭连接。
缩容
:当连接池一段时间没有被使用,同时池中的连接数超过了最大空闲连接数,那么便会关闭一部分连接,使池中的连接数始终维持在最大空闲连接数。
空闲连接的超时与保活
超时
如果连接没有被客户端使用的话,便会成为空闲连接,在一段时间后,服务端可能会