默认

解密“达达-京东到家”的订单即时派发技术原理和实践

查看数: 143829 | 评论数: 3 | 收藏 5
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2018-09-03 01:00

正文摘要:

本文由达达京东到家Java工程师季炳坤原创分享。 1、前言 达达-京东到家作为优秀的即时配送物流平台,实现了多渠道的订单配送,包括外卖平台的餐饮订单、新零售的生鲜订单、知名商户的优质订单等。为了提升平台的用 ...

评论

xueshengst 发表于 3 个月前
引用:jevensonv 发表于 2019-12-02 15:55
博主,你好,没看明白TimingWheel:
1,如果tickMs=1ms,wheelSize=20,那么便能计算出此时的时间是以20ms ...

对于第一个问题,我感觉它比较类似秒钟、分钟、时钟;第一层tickMS=1ms, timingwheel=20,第二层的一格就相当于第一层的一轮(可以理解为第一层转一圈,第二层才转一格),所以tickMS=20ms, timingwheel=20;以此类推,第三层的一格相当于第二层的一圈,即tickMS=400ms, timingwheel=20。所以180ms位于第二层[180, 200]这个区间,所以是第8个格子。
不知道我的理解有没有问题,希望对你有帮助
jevensonv 发表于 4 年前
博主,你好,没看明白TimingWheel:
1,如果tickMs=1ms,wheelSize=20,那么便能计算出此时的时间是以20ms为一转动周期,
180ms的任务为何会升级到第二层的#8时间格?第一层是20ms,第二层应该是40ms才对
所以600ms这个也不太理解

2,假设当前时间currentTime为11:49:50,订单派发时间dispatchTime为11:49:57,那么时间轮的时间格#7中
为什么是#7?tickMs不是等于1吗,相差7秒,就是700ms,已经超过了时间跨度600ms

麻烦博主解答一下,不胜感激
clark.li 发表于 5 年前
先收藏,以后碰到类似的问题可以参考参考了

返回顶部