2009-12-01 3 views
1

J'ai un gros script de récupération de flux de données en python.Equilibreur de charge sortant

Ma question est, comment puis-je équilibrer la charge sortant demandes de sorte que je ne touche pas trop souvent un hôte? Ceci est un gros problème pour Feedburner, car un grand pourcentage de sites proxy leur RSS via Feedburner et pour compliquer davantage les choses de nombreux sites alias un sous-domaine sur leur domaine à Feedburner pour obscurcir le fait qu'ils l'utilisent (par exemple "mysite" définit son URL RSS à feeds.mysite.com/mysite, où feeds.mysite.com rebondit à feedburner). Parfois, il me bloque pendant un certain temps et redirige vers leur "automated requests" error page.

+1

Les sites ne redirigent pas vers feedburner pour cacher le fait qu'ils l'utilisent, ils le font pour qu'ils gardent le contrôle sur l'URL de leur flux. –

Répondre

2

Si votre problème est lié à "l'étranglement" de Feedburner, c'est certainement dû à l'IP source de votre bot. La façon de «équilibrer la charge à Feedburner» serait d'avoir plusieurs adresses IP sources différentes à partir desquelles commencer.

Maintenant, il existe de nombreuses façons de parvenir, deux d'entre eux étant:

  1. serveur multirésident: plusieurs adresses IP sur la même machine
  2. machines discrètes multiples

Bien sûr, n'allez-vous pas mettre une boîte NAT en face d'eux maintenant ;-)


Le dessus t se soucie des "problèmes d'étranglement" possibles, maintenant pour la "partie ordonnancement". Vous devez maintenir un "planificateur virtuel" par "destination" et assurez-vous de ne pas dépasser les paramètres du service Web (par exemple Feedburner) en question. Maintenant, la partie la plus délicate est de saisir ces "limites" ... parfois elles sont annoncées et parfois vous devez les comprendre expérimentalement.

Je comprends que c'est « directives d'architecture de haut niveau », mais je ne suis pas prêt à être codage pour vous ... J'espère que vous me pardonnerez ;-)

1

« comment puis-je équilibrer la charge des requêtes sortantes afin que je ne frappe pas trop souvent un hôte? "

Généralement, vous le faites en concevant un meilleur algorithme. Par exemple, brouiller aléatoirement vos demandes. Par exemple:

Ou mélangez-les «équitablement» de manière à ce que vous puissiez faire un tour complet à travers les sources. Ce serait une liste simple de files d'attente où vous supprimez une requête de chaque hôte.

+0

... cela ne sera en aucun cas utile si les services à l'autre extrémité "étranglement par source IP". – jldupont

+0

... que tout Web Service ** devrait ** faire de toute façon. "Toujours gérer votre périmètre ou autre ..." – jldupont

+0

chose est que je dois aimer intercepter urllib au point de résolution DNS pour dire la charge sur chaque hôte –

3

Vous devriez probablement faire une demande unique (par semaine/mois, peu importe). pour chaque flux et suivez les redirections pour obtenir la "vraie" adresse. Indépendamment de votre situation de limitation à ce moment-là, vous devriez être en mesure de résoudre tous les flux, enregistrer ces données et ensuite le faire une fois pour chaque nouveau flux ajouté à la liste. Vous pouvez regarder urllib's geturl() car il renvoie l'URL finale de l'URL que vous avez mis en elle. Lorsque vous faites un ping sur les flux, assurez-vous d'utiliser l'original (gardez le "vrai" simplement pour l'équilibrage de charge) pour vous assurer qu'il redirige correctement si l'utilisateur l'a déplacé ou similaire. Une fois cela fait, vous pouvez simplement concevoir un mécanisme de chargement tel que seulement X demandes par heure pour un domaine donné, en passant par chaque flux et en ignorant les flux dont les hôtes ont atteint la limite.Si feedburner maintient ses limites publiques (peu probable), vous pouvez l'utiliser pour X, mais sinon vous devrez juste l'estimer et faire une estimation approximative que vous savez être en dessous de la limite. En connaissant google cependant, leurs limites pourraient mesurer des modèles et ne pas avoir une limite dure spécifique.

Modifier: Ajout d'une suggestion à partir du commentaire.

+0

Je changerais une fois à une fois par jour. Les gens changent leurs redirections de temps en temps. –