cs_cogno
Messages postés26Date d'inscriptiondimanche 6 décembre 2009StatutMembreDernière intervention12 décembre 2009
-
8 déc. 2009 à 20:12
cs_cogno
Messages postés26Date d'inscriptiondimanche 6 décembre 2009StatutMembreDernière intervention12 décembre 2009
-
9 déc. 2009 à 17:24
Bonjour la famille,
j'ai un petit exercice simple d'énoncé a vous soumettre, je n'ai pas trouvé de solution. Il s'agit d'un exercice temps réel.
Prenons un serveur(dans le sens général) qui reçoit en entrée 2000 messages par seconde. Le serveur les traites dans l'ordre d'arrivée,en gardant l'ordonnencement, puis les renvoie en temps réel.
Chaque message reçu par le serveur est traité de la manière suivante:
-> tout les messages entrants demandent un accès en lecture à une base de données (qu'n appellera BD)
-> 20 messages entrants par seconde(parmis les 2000) demandent en plus un acces en écriture à la BD
La BD possède les caractéristiques suivantes:
-> un maximum de 80 acces (écriture et/ou lecture) par seconde max
-> elle a une taille de 500M
La question est: comment faire pour garder le temps réel?
cptpingu
Messages postés3837Date d'inscriptiondimanche 12 décembre 2004StatutModérateurDernière intervention28 mars 2023123 9 déc. 2009 à 01:10
Ce n'est pas la solution, mais une idée comme ça.
Le problème que tu as c'est que tu ne peux faire que 80 accès pour 2000 messages entrant.
C'est donc impossible en l'état.
L'astuce consiste à dupliquer les BD, sur différentes machines si possible, et de répartir la charge à l'aide loadbalancer (répartisseur de charge).
Une fois la charge répartit, si tu as suffisamment de BD, c'est bon !
Petit problème qui complique tout: les accès en écriture. Si tu n'écris pas dans toutes les bases au même moment, c'est foutu !
Mais si tu écris dans toutes les bases, c'est foutu aussi puisque tu bloques tout.
L'astuce consiste à prendre une BD supplémentaire et à faire tourner régulièrement un processus de réplication. Si tu n'écris que dans une seule BD, il suffit alors d'utiliser la BD supplémentaire pour instaurer un cycle de roulement pour la réplication. Tu recopies une BD, la BD qui est recopiée étant gelée, il est nécessaire d'avoir une base de plus que prévu pour ne pas engendrer de perte de performance.
Si tu synchronise bien tout ceci, alors tu peux conserver ton temps réel.
Quelques petits défaut, tout de même:
- Prends beaucoup de place (nb de BD (au moins 25) * 500Mo)
- Peut coûter cher si on veut faire les choses biens et acheter suffisamment de machine.
- Les données se synchronise par cycle, et donc il peut y avoir des différences de résultats temporaire entre les BD. Ce qui peut très bien être inacceptable, tout dépend du contexte.
- Il faut correctement synchroniser tout ceci, ce qui est une vraie plaie à créer et à maintenir.
cptpingu
Messages postés3837Date d'inscriptiondimanche 12 décembre 2004StatutModérateurDernière intervention28 mars 2023123 9 déc. 2009 à 16:29
Ben, en faisant une file d'attente, ouais, mais ce n'est plus du temps réel, il y aura un temps de latence de plus en plus grand au fur et à mesure que la liste grandit.
Si tu reçoit 2000 accès et que la base ne peut en gérer que 80, je suis désolé, mais ce n'est pas possible, ou encore une fois, je serais très intéressé par une solution à ce problème !
cs_cogno
Messages postés26Date d'inscriptiondimanche 6 décembre 2009StatutMembreDernière intervention12 décembre 2009 9 déc. 2009 à 16:40
Moi aussi j'ai proposé d'empiler les messages d'entrée et bien, plus de temps réel.
Comme la question avant l'exercice etait en gros: "connaissez vous le multi tache?"
A mon avis il faut partir la dessus. DOnc cest ce que j'ai dit tout de suite "a ca cest du multi tache" mdr
Mais sans toucher a la BD ca me paraissait impossible, donc j'ai clairement posé la question, il m'a dit que oui cest possible tel quel...
Petit indice il m'a dit : "si vous aviez trouvé comment faire, je vous aurais demandé que se passe-t-il quand on augmente le nombre de message entrant."
Sous entendu je pense: il y a une solution pour cette exercice, mais avec ces valeurs la précisément. Au dela la solution montre ses limites...
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_juju12
Messages postés966Date d'inscriptionsamedi 3 avril 2004StatutMembreDernière intervention 4 mars 20104 9 déc. 2009 à 17:11
Sûrement une c?????ie, mais...
Ne peux-tu pas récupérer des infos pour plusieurs messages en même temps?
Par exemple, plusieurs messages demandant accès aux mêmes données, ou à des données similaires que tu pourrais récupérer d'un coup...
Cela nécessiterait un tri des messages entrant suivant certains critères, selon ce qu'il y a dans ta BD.