Hi all
issue 地址在这儿:https://github.com/apache/incubator-dubbo/issues/3151
我已经在 issue 中提到了非 netty 服务器的场景,我提出这个改进的初衷就是针对 netty 而言的。
首先我们需要明确的一点是 dubbo 支持多协议,对于 netty 能够实现的协议,基本都是使用 netty 去实现的,例如 dubbo 协议, 我们认为
netty 是可信赖的,
所以对于使用 netty 实现的协议,加入 IdleStateHandler 是一个优雅的设计。注意 IdleStateHandler
取代的不是心跳,而是取代了触发心跳发送请求的方式,取代的是自定义的 Timer
对于 dubbo 中的其他协议,大部分是短连接的,比如 rmi/hessian/http/rest … 所以我们不需要关心连接保活的问题
其次,针对于非 netty 实现/长连接 的其他协议保活特性的,也可以在对应的协议中单独实现,我并不认为 Timer
抽象成一个统一的概念去实现连接保活是一个优雅的设计
this.heartbeat = client.getUrl().getParameter(Constants.HEARTBEAT_KEY, dubbo !=
null && dubbo.startsWith("1.0.") ? Constants.DEFAULT_HEARTBEAT : 0);
这是 dubbo 中目前开启心跳定时器的标识,只会用在 dubbo 协议中,但是判断发生在公共的 remoting 层,应该说,这才是特判的逻辑。
[ Full content available at:
https://github.com/apache/incubator-dubbo/issues/3151 ]
This message was relayed via gitbox.apache.org for
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]