这么牛的调度策略和代码结构设计是怎么来的?

来源:16-5 重构和总结

matthew21

2022-04-04

问题

我想了解一下,这个思路是怎么来的,我感觉自身不太可能想到这种处理方式?

我的理解(可以跳过)

重新找其他材料学了一遍go的语法后,在看了几遍觉得大受震撼,先说下我的理解

  1. 我们在QueueSchedule中维护了两个chan,分别是
    • chan of Request:用来处理各方来的request
    • chan of Worker: 用来存放worker(内存上就是每个worker创建的chan of Request
  2. 在ConCurrentEngine中,通过死循环处理 chan of Result的数据,并将新的request发送给QueueSchedule
  3. 在QueueScheduler的RUN保存了调度策略如下:
    • 用queue of Request缓存 Request
    • 用queue of Worker缓存Worker
    • 当同时存在两者的时候,就把request发送给worker
    • 每个worker内部在创建时启动了死循环读取自身 chan of request的数据并处理
      以上就完成了整个链路,这些都是基本逻辑

最牛的地方在于,调度策略是解耦的。我们只需要改变调度器的RUN方法,就可以更改worker和request的调度关系。

写回答

1回答

matthew21

提问者

2022-04-04

有的同学反馈读了10遍才看懂,这些都是有天赋的。这个层面的设计,我周围感觉没有人能自己想出来和落地下来,有太多细节感觉完美。绝大部分的老师能讲到 simpleScheduler就到顶了

0
0

Google资深工程师深度讲解Go语言 由浅入深掌握Go语言

语法+分布式爬虫实战 为转型工程师量身打造

5995 学习 · 1909 问题

查看课程