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.
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>
> >>>>>>>>
> >>>>>>>
> >>>>>>
> >>>>>
> >>>>
> >>
> >>
> >>
> >>
>
>
>
>

Reply via email to