关注
放一些我的笔记:
思路
数据结构:
在服务端维护未完成的filename,reduceIndex;已完成map任务的计数器、已完成reduce任务的计数器;map任务和reduce任务的状态。这里的slice结构用一个mutex来保护,计数器用go的atomic包来保护。任务状态用sync.Map来保护。
过程:
在worker完成一个map或reduce任务后,发送一个RPC调用来告知coordinator任务已完成。coordinator需要等待worker 10秒,如果10秒完不成任务则把刚刚分配给该worker的任务重新入队。
坑:
这里有一个注意的点,如果某任务的状态为已完成,则后续的请求不能再将其修改为其他状态,这样能避免重复分配某个已完成的任务造成资源的浪费。举一个场景:worker A计算某个map任务,但计算过程中出现长时间卡顿导致coordinator认为其超时而将这个map任务分配给worker B;worker A恢复后完成了这个map任务,发送了RPC告知coordinator任务的完成,此时任务为完成状态。后续worker B超时,如果coordinator又修改这个任务的状态,那么会导致coordinator将这个任务再分配给worker C,导致了worker C资源的浪费。
查看原帖
5 评论
相关推荐
点赞 评论 收藏
分享
点赞 评论 收藏
分享
点赞 评论 收藏
分享
点赞 评论 收藏
分享
点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 我的实习收获 #
31074次浏览 502人参与
# 如果有时光机,你最想去到哪个年纪? #
47188次浏览 800人参与
# 实习吐槽大会 #
33022次浏览 160人参与
# 非技术岗简历怎么写 #
209832次浏览 2861人参与
# 晒一晒你的工位 #
85957次浏览 304人参与
# 26届秋招投递记录 #
3976次浏览 107人参与
# 2025牛客秋招季 #
4469次浏览 135人参与
# 双非能在秋招上岸吗? #
215245次浏览 1143人参与
# 被AI治愈的瞬间 #
52354次浏览 597人参与
# 怎么防止在试用期被辞退 #
122350次浏览 911人参与
# 我的租房踩坑经历 #
28639次浏览 288人参与
# 穿越回高考你还会选现在的专业吗 #
22123次浏览 267人参与
# 我和mentor的爱恨情仇 #
43809次浏览 278人参与
# 打工人的工作餐日常 #
40475次浏览 343人参与
# 软开人,说说你的烦心事 #
48123次浏览 359人参与
# 毕业旅行去哪玩儿 #
1270次浏览 33人参与
# 硬件/芯片公司工作体验 #
75283次浏览 664人参与
# 商战,最累的是我们 #
13087次浏览 52人参与
# 打工人锐评公司红黑榜 #
146063次浏览 920人参与
# 25届秋招公司红黑榜 #
262194次浏览 1094人参与