写点什么

dubbo 长连接

  • 2022 年 4 月 30 日
  • 本文字数:957 字

    阅读完需:约 3 分钟

先看下有总共有 4 个提供者


<dubbo:service interface="com.**.MenuFacade" ref="menuFacadeImpl"/>


<dubbo:service interface="com.**.MaterialFacade" ref="materialFacadeImpl"/>


<dubbo:service interface="com.**.QrCodeFacade" ref="qrCodeFacadeImpl"/>


<dubbo:service interface="com.**.WeChatCommonFacade" ref="weChatCommonFacadeImpl" />


提供者 provider 端口是 18220;有若干个消费者;先不做额外操作;先看一下有多少个 tcp 长连接


netstat -an |grep 18220



结果可以看到有 8 个连接

[](()1.将某个 provider 链接设置为 10 个,consumer 不设置

<dubbo:service interface="com.*.WeChatCommonFacade" ref="weChatCommonFacadeImpl" connections="10" />


启动然后查看 tcp 链接数


netstat -an |grep 18220 | wc -l


显示的结果为 38;


之前是 8 个中有三个消费者是消费 WeChatCommonFacade 服务的;现在变成了 38,明显是多了很多个,这个多出来的是 WeChatCommonFacade 这个 Provider 跟它的消费者连接数,WeChatCommonFacade 的消费者有三个



3*10=30 个链接数了;

[](()2.将一台 comsumer 的连接数配置成 5 个

在之前的基础上,我们把其中一台 ip 为:..*.194 的 consumer 连接数改成 5


<dubbo:reference id="weChatCommonFacade" check="false" interface="com.*.WeChatCommonFacade" connections="5" />


再看看提供者的 tcp 连接数



总共有 33 个;少了 5 个,说明我们修改了 consumer 的连接数起作用了,以 consumer 为准了;


(至于 194 的连接数有 6 个不用在意,多出的那个 tcp 链接是另一个消费者消费了另一个提供者)

[](()3.将 consumer 设置为懒连接 lazy=“true”

<dubbo:reference id="weChatCommonFacade" check="false" interface="com.*.WeChatCommonFacade" connections="5" lazy="true" />


netstat -an |grep 18220 | wc -l


结果:28


又少了五个连接;因为这个服务没有被调用,所以没有建立起 tcp 链接;等第一次调用这个服务的时候就会建立起这个 tcp 的长连接的;所以 lazy 延迟连接有利于减少长连接数;

[](()4.粘滞连接 sticky=“true”

<dubbo:reference id="weChatCommonFacade" check="false" interface="com.*.WeChatCommonFacade" connections="5" sticky="true" />


粘滞连接用于有状态服务,尽可能让客户端总是向同一提供者发起调用,除非该提供者挂


了,再连另一台。


粘滞连接将自动开启延迟连接,以减少长连接数。

用户头像

还未添加个人签名 2022.04.13 加入

还未添加个人简介

评论

发布
暂无评论
dubbo 长连接_Java_爱好编程进阶_InfoQ写作社区