dubbo 长连接

简介: dubbo 长连接

1dubbo://

Dubbo 缺省协议采用单一长连接和 NIO 异步通讯,适合于小数据量大并发的服务调用,以及 服务消费者机器数远大于服务提供者机器数的情况。 反之,Dubbo 缺省协议不适合传送大数据量的服务,比如传文件,传视频等,除非请求量很 低。 Transporter: mina, netty, grizzy Serialization: dubbo, hessian2, java, json Dispatcher: all, direct, message, execution, connection ThreadPool: fixed, cached 特性 缺省协议,使用基于 mina 1.1.7 和 hessian 3.2.1 的 tbremoting 交互。 连接个数:单连接 连接方式:长连接 传输协议:TCP 传输方式:NIO 异步传输 序列化:Hessian 二进制序列化 适用范围:传入传出参数数据包较小(建议小于100K),消费者比提供者个数多,单一 消费者无法压满提供者,尽量不要用 dubbo 协议传输大文件或超大字符串。 适用场景:常规远程服务方法调用 约束 参数及返回值需实现 Serializable 接口 参数及返回值不能自定义实现 List , Map , Number , Date , Calendar 等接口,只能用 JDK 自带的实现,因为 hessian 会做特殊处理,自定义实现类中的属性值都会丢失。 Hessian 序列化,只传成员属性值和值的类型,不传方法或静态变量,兼容情况 详细查看官方文档


2问题

看过一篇博客 讲解的是dubbotcp链接过多的情况dubbo连接池爆满然后跟着实验了一遍; 先看下有总共有4个提供者

<!-- dubbo服务发布配置文件 -->
<dubbo:serviceinterface="com.**.MenuFacade"ref="menuFacadeImpl"/>
<dubbo:serviceinterface="com.**.MaterialFacade"ref="materialFacadeImpl"/>
<dubbo:serviceinterface="com.**.QrCodeFacade"ref="qrCodeFacadeImpl"/>
<dubbo:serviceinterface="com.**.WeChatCommonFacade"ref="weChatCommonFacadeImpl"  />

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

netstat -an |grep 18220

网络异常,图片无法展示
|
结果可以看到有8个连接

1.将某个provider链接设置为10个,consumer不设置

<dubbo:serviceinterface="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:referenceid="weChatCommonFacade"check="false"interface="com.*.WeChatCommonFacade"connections="5"lazy="true" />

netstat -an |grep 18220 | wc -l 结果:28 又少了五个连接;因为这个服务没有被调用,所以没有建立起tcp链接;等第一次调用这个服务的时候就会建立起这个tcp的长连接的;所以lazy延迟连接有利于减少长连接数;

4.粘滞连接 sticky="true"

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

粘滞连接用于有状态服务,尽可能让客户端总是向同一提供者发起调用,除非该提供者挂 了,再连另一台。 粘滞连接将自动开启延迟连接,以减少长连接数。

5.actives="" 可建立连接数如果小于connections连接数的话tcp连接会一直尝试建立连接

网络异常,图片无法展示
|
可以看到一直是TIME_WAIT状态

dubbo官网如果访问不了,去下面链接直接下载dubbo文档下载

相关文章
|
运维 监控 Dubbo
Dubbo协议异步单一长连接原理与优势
Dubbo协议异步单一长连接原理与优势
576 0
|
Dubbo Java 应用服务中间件
dubbo协议下的单一长连接与多线程并发如何协同工作
dubbo协议下的单一长连接与多线程并发如何协同工作
241 0
dubbo协议下的单一长连接与多线程并发如何协同工作
|
7月前
|
Dubbo Java 应用服务中间件
微服务学习 | Springboot整合Dubbo+Nacos实现RPC调用
微服务学习 | Springboot整合Dubbo+Nacos实现RPC调用
|
2月前
|
Dubbo Java 应用服务中间件
Spring Cloud Dubbo:微服务通信的高效解决方案
【10月更文挑战第15天】随着信息技术的发展,微服务架构成为企业应用开发的主流。Spring Cloud Dubbo结合了Dubbo的高性能RPC和Spring Cloud的生态系统,提供高效、稳定的微服务通信解决方案。它支持多种通信协议,具备服务注册与发现、负载均衡及容错机制,简化了服务调用的复杂性,使开发者能更专注于业务逻辑的实现。
75 2
|
4月前
|
Dubbo Java 应用服务中间件
💥Spring Cloud Dubbo火爆来袭!微服务通信的终极利器,你知道它有多强大吗?🔥
【8月更文挑战第29天】随着信息技术的发展,微服务架构成为企业应用开发的主流模式,而高效的微服务通信至关重要。Spring Cloud Dubbo通过整合Dubbo与Spring Cloud的优势,提供高性能RPC通信及丰富的生态支持,包括服务注册与发现、负载均衡和容错机制等,简化了服务调用管理并支持多种通信协议,提升了系统的可伸缩性和稳定性,成为微服务通信领域的优选方案。开发者仅需关注业务逻辑,而无需过多关心底层通信细节,使得Spring Cloud Dubbo在未来微服务开发中将更加受到青睐。
90 0
|
1月前
|
Dubbo Cloud Native 应用服务中间件
阿里云的 Dubbo 和 Nacos 深度整合,提供了高效的服务注册与发现、配置管理等关键功能,简化了微服务治理,提升了系统的灵活性和可靠性。
在云原生时代,微服务架构成为主流。阿里云的 Dubbo 和 Nacos 深度整合,提供了高效的服务注册与发现、配置管理等关键功能,简化了微服务治理,提升了系统的灵活性和可靠性。示例代码展示了如何在项目中实现两者的整合,通过 Nacos 动态调整服务状态和配置,适应多变的业务需求。
43 2
|
2月前
|
Dubbo Java 应用服务中间件
Dubbo学习圣经:从入门到精通 Dubbo3.0 + SpringCloud Alibaba 微服务基础框架
尼恩团队的15大技术圣经,旨在帮助开发者系统化、体系化地掌握核心技术,提升技术实力,从而在面试和工作中脱颖而出。本文介绍了如何使用Dubbo3.0与Spring Cloud Gateway进行整合,解决传统Dubbo架构缺乏HTTP入口的问题,实现高性能的微服务网关。
|
3月前
|
Dubbo 应用服务中间件 Apache
Star 4w+,Apache Dubbo 3.3 全新发布,Triple X 领衔,开启微服务通信新时代
在 Apache Dubbo 突破 4w Star 之际,Apache Dubbo 团队正式宣布,Dubbo 3.3 正式发布!作为全球领先的开源微服务框架,Dubbo 一直致力于为开发者提供高性能、可扩展且灵活的分布式服务解决方案。此次发布的 Dubbo 3.3,通过 Triple X 的全新升级,突破了以往局限,实现了对南北向与东西向流量的全面支持,并提升了对云原生架构的友好性。
156 14
|
7月前
|
Dubbo Java 应用服务中间件
阿里巴巴资深架构师深度解析微服务架构设计之SpringCloud+Dubbo
软件架构是一个包含各种组织的系统组织,这些组件包括Web服务器,应用服务器,数据库,存储,通讯层),它们彼此或和环境存在关系。系统架构的目标是解决利益相关者的关注点。
|
4月前
|
负载均衡 Dubbo 应用服务中间件
框架巨擘:Dubbo如何一统异构微服务江湖,成为开发者的超级武器!
【8月更文挑战第8天】在软件开发中,微服务架构因灵活性和可扩展性备受欢迎。面对异构微服务的挑战,Apache Dubbo作为高性能Java RPC框架脱颖而出。它具备服务注册与发现、负载均衡及容错机制等核心特性,支持多种通信协议和序列化方式,能有效连接不同技术栈的微服务。Dubbo的插件化设计保证了面向未来的扩展性,使其成为构建稳定高效分布式系统的理想选择。
66 5