作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我的应用程序有几个工作人员(作为不同的进程处理不同的事情)和一些资源(工作单元)。不同的 worker 需要在所有工作单元上处理。例如,我有 W1、W2 和 W3 等 worker ,工作单元 U1 和 U2。那么 W1 需要处理 U1 和 U2,与 W2 和 W3 相同。限制是不同的 worker 不能同时在同一个工作单位工作。
我有两种设计,想请教哪一种更好。
最佳答案
“拉”模型的优点是每个工作人员都知道本地加载了多少,因此可以管理其负载。
此外,“拉”模型可能更加“解耦”,因为“负载”的变量对工作人员保持本地化,而在“推”模型中,需要通信协议(protocol)(和开销)来传达此状态。
想想汽车行业“拉动”模式的成功:它从传统的“推”模式(库存难以追踪、需要大量反馈)转变为现在成功且无处不在的“拉”模式。
在扩展方面,您可以拥有一个“调度程序”的中间层,用于“轮询”来自上一层的作业。基础工作人员现在可以以分区方式与中间层交互。
请注意,在任一模型中都需要协调通信协议(protocol):这是协调协议(protocol)的性质那不同。在“推模型”中,需要一个额外的控制循环来报告/轮询每个 worker 的“负载因子”。随着系统的扩展,需要更多的带宽,调度程序端的更多状态,更多的延迟等。
关于design-patterns - 设计模式征求意见 : push model v. s。拉模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1826317/
我是一名优秀的程序员,十分优秀!