fastdfs连接池
思想
为了提高连接速度,fastdfs使用到了连接池,并用hash数组来加速查找,key为ip_port, value为:ConnectionManager(见后面),当需要进行连接某个ip:port时,以该ip_port作为key,到hash数组中查找,得到value:ConnectionManager,该结构中保存了针对该ip:port的已建立连接的socket,第一次连接时,会调用conn_pool_connect_server函数建立连接,当需要关闭某个连接时,会调用conn_pool_close_connection_ex函数来将该连接放入连接池中或者直接关闭该连接,放入连接池中即会插入到hash数组中去,此外还会依据该连接的上次访问时间,如果很久没有访问该连接了,就会关闭该连接,见conn_pool_get_connection函数,通过hash数组+关闭连接时将该连接保存到hash数组中来实现连接池,提高连接速度;
用到的数据结构
1 | typedef struct |
相关代码
connection_pool.h/connection_pool.c
核心函数:conn_pool_get_connection
本文作者:
L
本文链接: http://damotiansheng.github.io/uncategorized/2016-12-03/fastdfs连接池.html
版权声明: 本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。转载请注明出处!
本文链接: http://damotiansheng.github.io/uncategorized/2016-12-03/fastdfs连接池.html
版权声明: 本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。转载请注明出处!