2015-10-05 2 views
1

Vu:équilibrage de charge dans le système distribué

  • producteurs n et les consommateurs m, n >> m
  • les consommateurs à faire des demandes aux producteurs pour les données
  • tout producteur peut être utilisé par un seul consommateur à temps-à-dire le consommateur peut travailler avec plusieurs producteurs, mais le producteur doit travailler avec seul consommateur

nécessaire:

  • Les consommateurs doivent se coordonner afin que chaque consommateur puisse posséder un sous-ensemble de producteurs.
  • Si le consommateur baisse, d'autres consommateurs devraient prendre ses producteurs.
  • Les consommateurs devraient échanger leurs producteurs afin d'assurer une charge égale aux consommateurs.

Question:

Y at-il des papiers/algorithmes/bibliothèques pour ce cas ou devrais-je inventer une autre roue?

+0

avez-vous essayé Apache Kafka an Zookeeper? –

+0

C'est exactement le cas. Le sujet Kafka en tant que producteur ne peut être utilisé que par un seul consommateur. Si nous avons n Kafka sujets, nous devrions les distribuer en quelque sorte entre les consommateurs –

+0

Comme je le sais, Zookeeper va gérer les consommateurs et l'équilibrage de charge entre eux. –

Répondre

1

Une approche consiste à utiliser un côté client LB comme SmartStack (http://nerds.airbnb.com/smartstack-service-discovery-cloud/), Baker Street (http://bakerstreet.io), ou consul HAProxy (https://hashicorp.com/blog/haproxy-with-consul.html), avec un algorithme d'équilibrage/de routage de charge personnalisée.

Tous ces systèmes utilisent HAProxy pour transmettre intelligemment vos demandes entre producteur et consommateur. Le proxy lui-même utilise un mécanisme de découverte de service pour déterminer ce qui est disponible. Vous devez apporter des modifications au mécanisme de découverte de service pour renvoyer le bon résultat en fonction des contraintes indiquées ci-dessus.