API网关性能优化之PoolingHttpClientConnectionManager

笔记

使用自定义zuul网关的时候,与后台主机通信采用HttpClient类,使用PoolingHttpClientConnectionManager作为HttpClient的链接管理对象,可以有效减少创建连接的资源开销,尤其是网关类应用,与后台主机通信的时候,长连接比较合适。

HttpClient在与后台主机通讯时候,会启用本地的随机一个tcp端口与远程主机的tcp端口进行连接。PoolingHttpClientConnectionManager可以设置两个参数维护连接对应的每个后台主机连接池,以及全部连接池。setMaxPerRoute(默认值20)方法和setMaxTotal(默认值200)方法,前者设置请求同一个远程主机地址的本地tcp端口数量,后者则是HttpClient对象维护的整个tcp端口数量。

例如,当setMaxPerRoute为2的时候,setMaxTotal为4的时候,并发请求3个相同的目的主机,httpclient首先启用两个本地tcp端口与远程主机通讯,当结果返回后,第三个请求才能执行。