分布式系统中的负载平衡

时间:2015-10-05 09:49:56

标签: soa distributed distributed-computing microservices

假设:

  • n生产者和消费者,n>>米
  • 消费者向生产者请求数据
  • 任何生产者一次只能由一个消费者使用,即消费者可以与多个生产者合作,但生产者必须与单个消费者合作

需要:

  • 消费者需要协调,以便每个消费者都可以拥有生产者的子集。
  • 如果消费者沮丧,其他消费者应该选择他的生产者。
  • 消费者应该交换生产者以确保消费者的平等负担。

问题:

是否有针对该案例的论文/算法/库?或者我应该发明另一个轮子?

1 个答案:

答案 0 :(得分:1)

一种方法是使用客户端LB,如SmartStack(http://nerds.airbnb.com/smartstack-service-discovery-cloud/),Baker Street(http://bakerstreet.io)或Consul HAProxy(https://hashicorp.com/blog/haproxy-with-consul.html),以及自定义负载平衡/路由算法。

所有这些系统都是HAProxy,可以在生产者/消费者之间智能地代理您的请求。代理本身使用服务发现机制来确定可用的内容。您需要对服务发现机制进行一些更改,以根据上述约束返回正确的结果。