Folks, Should we simply close this pull request if it is inappropriate? @carryxyh, @lexburner
Thanks, -Ian. On Sat, Jan 12, 2019 at 8:14 PM 徐靖峰 <[email protected]> wrote: > Hi > The changes don’t follow my attentions, I will submit my design later. > Maybe we need describe the problem more detailedly, then the problem has > solved for a half. > > > 在 2019年1月12日,下午7:45,Jun Alpha <[email protected]> 写道: > > > > Hello everyone, I have commit a pull request[1] to optimize Dubbo's > > heartbeat mechanise, > > witch is mentioned in this email and this issue[2],pls review it. > > > > [1] https://github.com/apache/incubator-dubbo/pull/3213 > > [2] https://github.com/apache/incubator-dubbo/issues/3151 > > > > 徐靖峰 <[email protected]> 于2019年1月11日周五 上午7:46写道: > > > >> @Jun Alpha great, I am glad to review your changes and wait for your > pull > >> request. > >> > >>> 在 2019年1月10日,下午8:00,Jun Alpha <[email protected]> 写道: > >>> > >>> I'll try it. > >>> > >>> Ian Luo <[email protected]> 于2019年1月10日周四 下午2:21写道: > >>> > >>>> It is a good suggestion any way, we should give it a try at least. > >>>> > >>>> -Ian. > >>>> > >>>> On Thu, Jan 10, 2019 at 10:21 AM yuhang xiu <[email protected]> > wrote: > >>>> > >>>>> hi, @jun alpha > >>>>> > >>>>> I agree. > >>>>> If netty can do more precise heartbeat control, we can integrate its > >>>> design > >>>>> in our heartbeat. Would you like to try it? > >>>>> > >>>>> Jun Alpha <[email protected]> 于2019年1月9日周三 下午9:21写道: > >>>>> > >>>>>> Hi,I left a comment in this issue[1],I think it's worth to learn > from > >>>>>> netty's heartbeat mechanism. > >>>>>> > >>>>>> [1] https://github.com/apache/incubator-dubbo/issues/3151 > >>>>>> > >>>>>> Ian Luo <[email protected]> 于2019年1月7日周一 下午10:47写道: > >>>>>> > >>>>>>> Thanks > >>>>>>> > >>>>>>> On Mon, Jan 7, 2019 at 2:50 PM yuhang xiu <[email protected]> > >>>> wrote: > >>>>>>> > >>>>>>>> Hi, I left some comments in this issue[1] > >>>>>>>> > >>>>>>>> Thanks to beiwei for reminding. I forgot that we have some > >>>> non-netty > >>>>>>>> servers. In this case, I personally prefer all heartbeats to use > >>>> the > >>>>>> same > >>>>>>>> set of mechanisms to guarantee. But we can learn from netty's > >>>>> heartbeat > >>>>>>>> mechanism to ensure more accurate heartbeat control. > >>>>>>>> > >>>>>>>> [1] https://github.com/apache/incubator-dubbo/issues/3151 > >>>>>>>> > >>>>>>>> Ian Luo <[email protected]> 于2019年1月7日周一 下午1:09写道: > >>>>>>>> > >>>>>>>>> It is an interesting topic. It is worthy to give it a try when > >>>>> Dubbo > >>>>>>> uses > >>>>>>>>> Netty, but pls. keep in mind that Dubbo has the ability to use > >>>>> other > >>>>>>>>> servers. I am not sure whether this suggestion will introduce > >>>>>>> unnecessary > >>>>>>>>> complexity. > >>>>>>>>> > >>>>>>>>> JingFeng, would you mind to file an issue and give it a try if > >>>> you > >>>>>> have > >>>>>>>>> time? > >>>>>>>>> > >>>>>>>>> Thanks, > >>>>>>>>> -Ian. > >>>>>>>>> > >>>>>>>>> > >>>>>>>>> On Mon, Jan 7, 2019 at 11:03 AM 徐靖峰 <[email protected]> wrote: > >>>>>>>>> > >>>>>>>>>> Hi all > >>>>>>>>>> > >>>>>>>>>> 现状: > >>>>>>>>>> > >>>>>>>>>> Dubbo > >>>>>>>>>> > >>>>>>>>> > >>>>>>>> > >>>>>>> > >>>>>> > >>>>> > >>>> > >> > 在应用层面发送心跳包保证连接的可用性,使用了定时器的设计,在客户端和服务端分别设置一个定时器,发送心跳,当发现连接断开时,客户端负责重连,服务端负责 > >>>>>>>>>> close。使用定时器并不是一个好的设计,在忙通信时,心跳是不必要的。建议使用 Netty 的 > >>>>>>>>>> IdleStateHandler,仅仅在检测到空闲连接时发送心跳。 > >>>>>>>>>> > >>>>>>>>>> 修改建议: > >>>>>>>>>> > >>>>>>>>>> 使用 IdleStateHandler 代替 Timer 发送心跳 > >>>>>>>>>> 关闭 ChannelOption.SO_KEEPALIVE,网络层面的 TCP 断连需要在机器级别设置,默认是 2 > >>>>>>>>>> 小时,几乎没有必要存在,却发出了无必要的 TCP 探测包,仅仅依赖于应用层的心跳来给连接保活即可。 > >>>>>>>>>> For now: > >>>>>>>>>> > >>>>>>>>>> Dubbo sends a heartbeat packet at the application level to > >>>> ensure > >>>>>> the > >>>>>>>>>> availability of the connection. A timer is set on the client > >>>> and > >>>>>> the > >>>>>>>>> server > >>>>>>>>>> to send a heartbeat. When the connection is found to be > >>>>>> disconnected, > >>>>>>>> the > >>>>>>>>>> client is responsible for reconnection and the server is > >>>>>> responsible > >>>>>>>> for > >>>>>>>>>> close. Using a timer is not a good design, and the heartbeat is > >>>>>>>>> unnecessary > >>>>>>>>>> when communicating busy. It is recommended to use Netty's > >>>>>>>>> IdleStateHandler > >>>>>>>>>> to send a heartbeat only when an idle connection is detected. > >>>>>>>>>> > >>>>>>>>>> Proposed changes: > >>>>>>>>>> > >>>>>>>>>> Send heartbeats using IdleStateHandler instead of Timer > >>>>>>>>>> Close ChannelOption.SO_KEEPALIVE, TCP disconnection at the > >>>>> network > >>>>>>>> level > >>>>>>>>>> needs to be set at the machine level. The default is 2 hours. > >>>>> There > >>>>>>> is > >>>>>>>>>> almost no need to exist, but an unnecessary TCP probe packet is > >>>>>>> issued. > >>>>>>>>> It > >>>>>>>>>> only depends on the heartbeat of the application layer to keep > >>>>> the > >>>>>>>>>> connection alive. Just fine. > >>>>>>>>>> > >>>>>>>>>> > >>>>>>>>> > >>>>>>>> > >>>>>>> > >>>>>> > >>>>> > >>>> > >> > >> > >> > >> > > > >
