Yuhang,

Nice catch. Could you pls. review my comments on your pull request?

Thanks,
-Ian.


On Tue, Jan 22, 2019 at 11:36 AM yuhang xiu <[email protected]> wrote:

> Hi, jingfeng,
>
> I saw beiwei merge your pr, nice work!
>
> However, I think we still need to consider two things.
>
> Since we are using a shared timer, this timer will not be closed when a
> client is closed.
> In this case, we need to control our tasks without unlimited growth. My
> current practice is to create a mapping between client and task. When our
> client is closed, we can find the corresponding task and cancel them. The
> canceled task will not be re-inserted into the timer.
>
> The other thing, I modified the size of the shared timer. In the old
> version, since each client uses a timer alone, the size of the timer is
> only 16, and now it is changed to 128 to reduce the hash conflict.
>
> My pr is here:
> https://github.com/apache/incubator-dubbo/pull/3299
>
> Would u pls have a look?
>
> 徐靖峰 <[email protected]> 于2019年1月15日周二 下午2:49写道:
>
> > Hi folks,
> >
> > Here is my suggestion to improve Dubbo’s HeartBeat Design.
> >
> > - The design of the two-way heartbeat is unnecessary, compatible with the
> > existing logic, allowing the client to send a one-way heartbeat when the
> > connection is idle, and the server periodically detects the connection
> > availability. Timed time to ensure: client timeout * 3 ≈ server timeout
> > - Remove the timing tasks for reconnection and disconnection. Dubbo can
> > judge whether the heartbeat request fails to respond. You can learn from
> > the design of the improved scheme, maintain a mark of the number of
> > heartbeat failures at the connection level, and successfully respond to
> any
> > failures. Clear the mark; continuous heartbeat failure. The client
> > initiates a reconnection. This can reduce an unnecessary timer, and any
> > polling method is not elegant.
> >
> > I've described more details in my blog, about Dubbo's existing heartbeat
> > program, its shortcomings, and the advantages of replacing it with a new
> > solution, as well as some forward thinking, welcome to discuss.
> >
> > bolg:https://www.cnkirito.moe/heartbeat-design/ <
> > http://www.cnkirito.moe/heartbeat-design/>
> >
> > ---
> >
> > Hi 乡亲们:
> >
> > 我给现有 Dubbo 的心跳方案改进提了两条建议
> >
> > - 双向心跳的设计是不必要的,兼容现有的逻辑,可以让客户端在连接空闲时发送单向心跳,服务端定时检测连接可用性。定时时间尽量保证:客户端超时时间 *
> > 3 ≈ 服务端超时时间
> > - 去除处理重连和断连的定时任务,Dubbo
> > 可以判断心跳请求是否响应失败,可以借鉴改进方案的设计,在连接级别维护一个心跳失败次数的标记,任意响应成功,清除标记;连续心跳失败 n
> > 次,客户端发起重连。这样可以减少一个不必要的定时器,任何轮询的方式,都是不优雅的。
> >
> > 我的博客中描述了更多的细节,关于 Dubbo 现有的心跳方案,它的不足之处,以及替换成新的方案的优势,以及一些展望思考,欢迎讨论。
> >
> > 博客地址:https://www.cnkirito.moe/heartbeat-design/
>

Reply via email to