这么牛的调度策略和代码结构设计是怎么来的?
来源:16-5 重构和总结

matthew21
2022-04-04
问题
我想了解一下,这个思路是怎么来的,我感觉自身不太可能想到这种处理方式?
我的理解(可以跳过)
重新找其他材料学了一遍go的语法后,在看了几遍觉得大受震撼,先说下我的理解
- 我们在QueueSchedule中维护了两个chan,分别是
- chan of Request:用来处理各方来的request
- chan of Worker: 用来存放worker(内存上就是每个worker创建的chan of Request
- 在ConCurrentEngine中,通过死循环处理 chan of Result的数据,并将新的request发送给QueueSchedule
- 在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就到顶了
00
相似问题