摘要
dubbo消费者同提供者之间的tcp连接是长连接形式,连接由消费方建立随机端口主动向提供者的dubbo端口发起连接请求,一旦连接建立,除非服务停止、网络异常,否则双方不会主动关闭tcp连接。也就是说dubbo消费方在调用提供者方法时使用的tcp连接都是长连接且是复用的。
TCP建立的时机
在dubbo消费者reference的提供者接口bean被spring实例化时会向注册中心发送消费方数据(比如ZK中此时可在/dubbo/xx.xxService/consumers节点下看到消费方数据),并且在此时会主动向提供者发起连接建立请求。当配置的连接数较大时,建立这些连接会比较耗时(根据某次测试,建立250个tcp连接大约耗时7秒)。
请注意,因为是在bean实例化时建立tcp连接,因此当项目中使用了spring的自动注入功能(比如@Autowired注解),那么在消费方启动过程中会同此被注入的service的提供者建立tcp连接。如果配置了懒加载bean