【GaussDB(DWS)通信连接池介绍】
本文在https://bbs.huaweicloud.com/blogs/200909 博客的基础上进行从各个对象的生命周期、组织结构等进行描述。
poolAgent:
1. 生命周期,一旦一个客户端连接建立好,则当前的服务线程就持有poolAgent对象,直到客户端连接断开此对象会释放。
2. 功能,此对象中包含主要包含客户端连接时设置的guc参数、user、database等信息,poolAgent对象建立好后会(查询条件为database、user、guc参数的等值条件)根据查询条件从DatabasePool链表中查询自己的DatabasePool对象,当查询需要下发到DN节点时,就需要从属于自己的DatabasePool中查找具体datanode的nodePool。nodePool中保存了连接具体datanode的连接句柄。
3. 组织结构, 每个nodePool保存在一个全局的数组中。
DatabasePool:
1. 生命周期, 实例启动就会有,直到实例停止。
2. 功能, 此对象中是中是保存nodePool的,主要是保存CN和DN之间的连接。
3. 组织结构,一个链表。
nodePool:
1.生命周期,一旦需要和某个DN建立连接,则就会创建连接,当服务线程退出后,就会将连接还给DatabasePool,其实质是还给对应的nodePool。
2. 功能, 存储连接信息,一旦一个线程需要使用连接时,就会首先从DatabasePool中查找属于自己Pool,最后需要依据连接哪个DN找到nodePool,最后从nodePool中找到一个连接(连接池中的连接都是没有使用的)然后从连接池中删除此连接,待使用完成后,再次归还给连接池。
- 点赞
- 收藏
- 关注作者
评论(0)