begin process at 2012 05 29 05:25:36
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C++ & C++ .NET

 > 

Divers

 > 

Général

 > 

Exercice temps réel


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Exercice temps réel

mardi 8 décembre 2009 à 20:12:40 | Exercice temps réel

cogno

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?

(à mon avis c'est une question de multi thread)

Merci pour votre aide la famille
mercredi 9 décembre 2009 à 01:10:01 | Re : Exercice temps réel

CptPingu

Administrateur CodeS-SourceS
Réponse acceptée !
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.
mercredi 9 décembre 2009 à 16:25:14 | Re : Exercice temps réel

cogno

Réponse acceptée !
Merci Pingu,

je n'étais pas allé si loin avec le gars qui m'a posé le problème.

Cependant il m'a dit que ca pouvait se faire en gardant cette BD uniquement (j'ai donc compris sans la dupliquer) est ce possible?
mercredi 9 décembre 2009 à 16:29:03 | Re : Exercice temps réel

CptPingu

Administrateur CodeS-SourceS
Réponse acceptée !
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 !
mercredi 9 décembre 2009 à 16:40:38 | Re : Exercice temps réel

cogno

Réponse acceptée !
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...

mercredi 9 décembre 2009 à 17:11:57 | Re : Exercice temps réel

juju12

Réponse acceptée !
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.
mercredi 9 décembre 2009 à 17:24:55 | Re : Exercice temps réel

cogno

je ne sais pas peut etre faut il trier els messages,

en tout cas il faut garder l'ordre des messages et le temps réel.

Sinon pour info, cest pas un bout de code que le mec attendait, cest plus un algorithme ou une methode de faire...



Cette discussion est classée dans : serveur, temps, messages, réel, exercice


Répondre à ce message

Sujets en rapport avec ce message

LiNuX - Langage C - Appli Multiclient / Serveur [ par azurone ] Bonjour, Il a déja été fait pour un tp une application sous Win client/serveur, où les caractères envoyés par le client s'inscrive sur le serveur en t interrompre un programme de calcul en temps réel [ par koaber ] Bonjour, je souhaiterais utiliser une fonction qui interrompt le progamme en cours et renvoie au menu principal si on appuie sur 'm' (comme menu) ; c' Client/Serveur en C++ [ par nephilik ] Hello !Je souhaite développer sur une même machine deux terminaux communiquant, en même temps en mode client/serveur...Le problème est que, avec des s prob socket [ par flatou ] salutj'ai créé une appli serveur, banale : un client se connecte, il envoi un message et le serveur affiche le message.j'ai utilisé cela pour la recep Client - serveur C++ avec thread [ par nono_in_maribor ] Bonjour!!Voila, je previens tout de suite je ne suis pas un pro du c++. Mon probleme est le suivant : j'ai fait un client-serveur en c++ (sous devc++) affichage temps réel [ par coyotte63 ] Bonjour, Je réalise actuellement un projet qui consiste à afficher la valeur des angles dans des résolveurs en temps réel. Pour ça je passe par un sys Calcul du point GPS a partir de l'acquisition en temps réel des trames d'un recepteur [ par berenger_R ] Bonjour,     Je doit réaliser un programme orientée objet en C++ sous linux qui réalise le calcul du point GPS à partir de l'acquisition en temps réel Amplification et filtrage Audio en temps réel [ par pdc_666 ] Bonjour à tous, voilà j'aimerai pouvoir amplifié (et éventuellement filtré le bruit) d'un signal audio provenant d'un eligne téléphoniue. Mon principa Creation d'un jeu de strategie temps reel via le web [ par Thirael ] Bonjour tout le monde !!!  Je souhaiterais creer un jeu de gestion genre oGame. Vous allez me dire encore un autre ... et ben oui !!! lol. J epense qu Synthèse audio en temps réel [ par louba ] Bonjour à tous,Je cherche à faire de la synthèse audio en temps réel, c'est à dire que je voudrais générer un son qui changerait avec le mouvement de


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,655 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales