Question

J'écris un site Web qui utilise plusieurs services Web avec des restrictions d'accélérateur. C'est à dire. Amazon est 1 demande par seconde, une autre est de 5000 / jour, un autre est x / minute.

Lorsqu'un utilisateur fait quelque chose, je dois déclencher une ou plusieurs demandes aux services ci-dessus et retourner les résultats (au navigateur) lorsqu'il est disponible.

Le besoin de solution pour être flexible pour que je puisse facilement ajouter / services supprimer.

Je pensais que d'un système FIFO les files d'attentes, mais certaines demandes ultérieures peut effectivement être admissible au traitement avant les précédentes.

Je demande un modèle de conception, mais toutes les suggestions technologiques appropriées sont bienvenus, en particulier .NET.

Merci!

Était-ce utile?

La solution 2

Merci pour votre commentaire. Fondamentalement, je ne veux pas rejeter les demandes, je veux les file d'attente et l'affichage de retour à l'utilisateur quand ils ont été traités. Un peu comme un système de commande.

00:00:01 demande Amazon est disponible en -> fente disponible suivant est en 2 secondes (0:00:03)

00:00:02 x requête arrive -> prochain créneau disponible pour ce service est de 5 secondes (0:00:07)

00:00:03 demande Amazon est disponible en -> fente disponible suivant est en 2 secondes (0:00:05)

Je besoin d'un système de file d'attente qui va tirer le 2 amazone demande en premier. Je suppose que mes mensonges question de savoir si de créer des files d'attente séparées pour chaque service et une technologie commune (c.-à-Service Broker) qui est bien adapté à la limitation, sinon je vais finir par créer ma propre limitation / système de file d'attente, ce qui est la raison pour laquelle je était à la recherche de modèles de conception commune (c.-à-producteur / consommateur ou quelque chose) car il n'est pas FIFO en raison de l'exemple ci-dessus.

Jusqu'à présent, il ressemble à une file d'attente FIFO pour chaque service, avec sa propre limitation, ressemble à la façon d'avancer.

Autres conseils

Je ne suis pas sûr que je l'ai bien compris où vous voyez le problème. De

  

certaines demandes plus tard peut effectivement être admissible au traitement avant les précédentes.

Je déduis que vous êtes préoccupé par les demandes en mémoire tampon qui ne peut pas être SATISIFIED maintenant, mais peut-être travaillé sur peu de temps.

Vous avez reçu une demande telle que

 { Amazon, X }

et en raison de (par exemple) ne peut pas X limitation satisify cette demande en ce moment.

Ma première question serait, les demandes indépendantes, qui est ce que je peux traiter la demande Amazon immédiatement et la file d'attente la demande de X? Si oui, alors simple file d'attente FIFO pour chaque servive va sûrement faire le travail. Vous aurez probablement besoin d'avoir une taille maximale de file d'attente (étant donné que requêtes HTTP délai d'attente, vous ne pouvez pas attendre pendant des heures).

Si vous avez à l'esprit la demande de reporter l'émission Amazon jusqu'à ce qu'il soit possible d'émettre la demande de X alors les choses deviennent plus compliquées. Je pense que vous avez en effet un problème de planification de réunion. Vous devez trouver une fente lorsque les deux Amazon et X sont gratuits. Donc, vous pourriez avoir une sorte de liste des Queues, chaque file d'attente est que les demandes soient SATISIFIED dans cette unité de temps pour un service.

Amazon(3 per sec)
      09:05:31  -  request A, B, C
      09:05:32  -  request D, E, F
      09:05:33  -  request G  -  -  <=== slots available
      ---                           <=== times and slots available

X (2 per min)
      09:05     -  request M, N
      09:06     -  request O        <=== slot available

Voici notre {Amazon, X} a une fente disponible à 09h06

Amazon(3 per sec)
      09:05:31  -  request A, B, C
      09:05:32  -  request D, E, F
      09:05:33  -  request G  -  -  <=== slots available
      ---                           <=== times and slots available
      09:06:01  -  request P

 X (2 per min)
      09:05     -  request M, N
      09:06     -  request O, P

Personnellement, je commence par quelque chose de beaucoup plus simple. Si la demande ne peut être SATISIFIED en ce moment, car une limite de service est atteint, rejeter simplement la demande

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top