@elibinary
2017-11-03T04:02:15.000000Z
字数 792
阅读 775
Pattern
连接池的意义,相信大家都比较清楚,简单列举下:
那么,如何去设计一个高可用的连接池呢,比如遇到下列情况:
上面的方案有一点需要注意就是,连接的引用计数到底是什么的计数,是标记该链接的使用次数?还是标记等待使用该链接的请求数?,因为与普通的资源不同同一时间,一个连接必然只能被一个请求使用,所以不存在同一时刻一个连接被多个请求引用的情况。
如果只是用来标记连接是否空闲的状态,那完全可以设置一个标识位而不必使用计数的方式。
如果是标记的使用次数,那么一般是为了达到一定使用次数后删除该连接,并重新开启新生连接。关于这一点我其实也有一点疑问,就是关闭健康连接的原因是什么?
如果是标记的等待使用数,那么当一个请求使用关闭释放时需要对其做 '-1'。当达到最大连接数,并且没有空闲连接可用时,就选择标记数最小的连接分配给请求,这里有一个问题需要注意!这时其实引用计数也兼任了连接调度分配的职责,需要考虑该连接的使用者中如果有耗时操作,就会导致后续请求的等待。