Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2761 connectés 

  FORUM HardWare.fr
  Programmation
  HTML/CSS

  obtenir un identifiant unique pour le poste

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

obtenir un identifiant unique pour le poste

n°1481228
Taz
bisounours-codeur
Posté le 24-11-2006 à 12:16:50  profilanswer
 

Salut,
pour faire du loadbalancing entre plusieurs instances d'une application dans un javascript, je cherche une méthode pour répartir les usagers de manière déterministe.
 
Actuellement la répartition se fait par exemple comme ça :

Code :
  1. case (le type de la requete):
  2. type1: serveur1
  3. ...
  4. typeN: serveurN


 
Avantage: il est facile de suivre et d'analyser toutes les requêtes d'un même type pour un utilisateur donnée puisqu'elles sont toutes résolues par le même serveur/
Inconvénient: ça répartit un peu la charge, mais pas équitablement, certains types de requêtes étant plus fréquents que d'autres.
 
Pour une meilleure répartition, j'ai essayé de faire quelque chose avec du Math.random pour chaque requête. Ca améliore la distribution, mais il devient quasi impossible de suivre les connexions d'un usagers parce qu'elles sont justement réparties ça et là.
 
Donc en gros, je cherches une méthode pour obtenir un identifiant propre au poste/utilisateur/client que je pourrais utiliser pour répartir les connexions. Genre obtnir un nom de machine, une IP locale, etc. Il faut que ça soit compatible tout navigateur, et que cet identifiant soit unique au moins le temps de la session de l'utilisateur. Des idées ?
 
Merci.

mood
Publicité
Posté le 24-11-2006 à 12:16:50  profilanswer
 

n°1481234
lorill
Posté le 24-11-2006 à 12:29:39  profilanswer
 

Math.random + cookie ?
 
une concaténation de propriétés relatives au navigateur ? (bon, en intranet ca sera pas terrible). T'es réellement limité au js ? parce que si tu peux recuperer l'ip du client, coté serveur, quitte a le mettre dans une variable js générée, tu peux t'en sortir, mais avec que du code coté client...

n°1481236
Taz
bisounours-codeur
Posté le 24-11-2006 à 12:39:22  profilanswer
 

je peux pas avoir de cookie, ni rien, et il faut que ça se fasse par le client. La seule chose que je peux faire, c'est évaluer quelque chose. à chaque requete, j'ai une fonction javascript d'appelée, et je peux juste travailler avec elle sans effet de bord.
 
le problème de l'identifiant du poste, c'est que le parc informatique est homogène, et donc ça va souvent généré la même chose.

n°1481254
anapajari
s/travail/glanding on hfr/gs;
Posté le 24-11-2006 à 13:31:32  profilanswer
 

tu peux tout a fait ecrire/lire un cookie en js voir http://developer.mozilla.org/en/do [...] ent.cookie par exemple.
Pour l'ip par contre c'est pas possible en js ( à ma connaissance) mais tu peux eventuellement faire appel à un script js qui est en fait un script serveur, qui te sette une variable ip.
edit: si tu aimes pas l'import, tu peux egalement envisager un xmlHttpRequest dans ta fonction js vers un script serveur qui te retournerait uniquement l'ip de ton visiteur.


Message édité par anapajari le 24-11-2006 à 13:32:40
n°1481305
FlorentG
Posté le 24-11-2006 à 14:27:22  profilanswer
 

Ouais, si tu peux quand-même accepter un cookie en client-side... Sinon en général, les solutions pour avoir un identifiant utilisent une combinaison entre ip + navigateur + langue sélectionnée. Maintenant évidemment sur un parc homogène, va pas y avoir beaucoup de différences...

n°1481375
Taz
bisounours-codeur
Posté le 24-11-2006 à 15:33:25  profilanswer
 

mais est-ce qu'il y a une méthode simple pour récupérer côté client son IP (et pas 127.0.0.1) et sans dialogue avec le serveur ? Je n'ai trouvé aucune documentation là dessus.

n°1481384
FlorentG
Posté le 24-11-2006 à 15:45:11  profilanswer
 

A cause des problèmes de sécurité pouvant survenir, y'a rien en JS pour trouver l'IP, à part générer un script sur le serveur :(

n°1481439
Taz
bisounours-codeur
Posté le 24-11-2006 à 16:34:14  profilanswer
 

bon bah je suis donc coincé avec Math.random :/

n°1481498
anapajari
s/travail/glanding on hfr/gs;
Posté le 24-11-2006 à 18:01:18  profilanswer
 

mais t'as vraiment pas moyen de faire un coup xmlHttpRequest dasn ton js

n°1491354
Taz
bisounours-codeur
Posté le 14-12-2006 à 14:48:25  profilanswer
 

Pour info, j'ai trouvé une solution très performante. La répartition est quasi-idéale, les gains sont impressionnants. J'ai essayé différentes méthodes de hash, mais finalement, j'ai fait très simple :

Code :
  1. if (req.length % N == I) ...


 
Ca fonctionne bien, la répartition est déterministe et en rejouant des données j'ai validé statistiquement que la distribution était adéquate.


Message édité par Taz le 14-12-2006 à 14:48:40
mood
Publicité
Posté le 14-12-2006 à 14:48:25  profilanswer
 

n°1491396
FlorentG
Posté le 14-12-2006 à 15:34:23  profilanswer
 

Genre tu prends la longueur de la requête ? [:johneh]

n°1491402
lorill
Posté le 14-12-2006 à 15:38:04  profilanswer
 

pourquoi pas, apres tout ?

n°1491602
leflos5
On est ou on est pas :)
Posté le 15-12-2006 à 00:55:42  profilanswer
 

Ce qui m'intrigue dans cette histoire, c'est pourquoi laisser faire au client vu que c'est impossible de faire une répartition totalement égale :??:
 
Alors qu'en plus côté serveur, tu peux évaluer la charge et répartir le client à chaque requête en fonction de la charge à ce moment :??: Je suis consciens que ça a un coup, peut être la réponse à ma question :whistle:

n°1491699
Taz
bisounours-codeur
Posté le 15-12-2006 à 11:20:21  profilanswer
 

la longueur de la requête, c'est une fonction de hash simple mais qui fonctionne bien dans mon cas. Et c'est au client de parler avec le bon serveur, parce que je n'ai pas de frontal donc les serveurs ne peuvent pas se répartir entre eux la charge. Il n'existe pas de frontal pour ce que je fais. Le prix n'est pas un problème. La plateforme en place est bien dimensionnée, il s'agit surtout de mieux utiliser les matériels existant, pour ne pas avoir de serveurs qui se tournent les pouces.  
 
Avec la longueur de la requête, ça marche plutôt bien, la distribution est homogène. J'en saurais plus avec les stats que j'aurais lundi, mais a priori, c'est quasi-parfait.
 
Biensur j'aurais préféré router toutes les requetes d'un poste vers un même serveur pour faciliter la tracabilité et profiter de pipelining.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  HTML/CSS

  obtenir un identifiant unique pour le poste

 

Sujets relatifs
Récuperer le login du poste.Nombre aléatoire unique
Obtenir Votre pageRank maintenantObtenir le temps restant
Obtenir adresse ip externe (internet) de la passerelle ? image inside![MySQL]Administration : limiter le nombre de connexions par poste
comment obtenir un objet à partir de son nom ?Obtenir le Jour sous Dos
Obtenir la position d'un noeud[APACHE] Obtenir le login de la personne connectée
Plus de sujets relatifs à : obtenir un identifiant unique pour le poste


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR