分布式系统中的资源分配
我有一个关于分布式系统中资源分配的问题。
假设我们有一个由 10K 台主机组成的系统,我们必须根据以下限制在它们之间分配传出的飞行带宽(我们已向下游发送但尚未完成的项目数):
- 总体而言,本地带宽的总和为 本地小于 MAX_GLOBAL_BANDWIDTH
- ,对于每个主机,带宽最多应为 MAX_LOCAL_BANDWIDTH。
- 每个主机将有许多需要发送的工作单元,形成积压。每个工作单元的发送成本正好是 1 个带宽单元。
- 积压较多的主机应该接收更多的带宽,
- 每个主机之前已经发送了一定量的工作,但仍在进行中,LOCAL_INFLIGHT,它计入 MAX_LOCAL_BANDWIDTH,限制了我们当前可以从主机发送的内容,
- 优化整体发送尽可能多的工作单元
我们应该采用什么算法来在主机之间公平地分配飞行中的带宽以及什么类型的算法是最好的(分布式计算与集中式方法,考虑到我们需要执行此操作经常计算)?
I have a question regarding the allocation of resources in a distributed system.
Let's say we have a system of 10K hosts and we have to split an outgoing inflight bandwidth (how many items have we sent to a downstream but have not yet completed) among them according to the following limitations:
- overall the sum of the local bandwidths has to be less than MAX_GLOBAL_BANDWIDTH
- locally, for each host the bandwidth should be at most MAX_LOCAL_BANDWIDTH
- each host will have a number of work units that need to be sent forming a backlog. Each unit of work costs exactly 1 bandwidth unit to send out.
- the hosts with a higher backlog should receive more of the bandwidth
- each host has already sent an amount of work previously which is still inflight, LOCAL_INFLIGHT, which counts towards the MAX_LOCAL_BANDWIDTH, limiting what we can send currently from the host
- optimize the overall sending of as much units of work as possible
What algorithm should we employ to distribute this inflight bandwidth fairly across the hosts and also what type of algorithm is best (distributed calculation versus a centralized approach, considering the fact we need to perform this computation often) ?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论