Forum général.cherche-logiciel Servir des informations mutualisées via http

Posté par  (site web personnel, Mastodon) .
Étiquettes : aucune
0
3
août
2012

Bonjour, je cherche une solution pour répondre au besoin suivant : je développe une application web qui doit permettre à des utilisateurs d'accéder à XXX ressources données mais avec N utilisateurs maximum à un instant donné. Un heartbeat me permet de savoir toutes les X secondes ou minutes si l'utilisateur utilise toujours la ressource. En résumé il s'agit d'un contrôle d'accès partagé quoi.

Les solutions que je vois :
- une appli "live" qui garde en mémoire la liste des ressources et les utilisateurs associés ; qui incrémente le contenu à chaque heartbeat reçu et qui en parallèle fait expirer les utilisations obsolètes (ie ayant été créées plus de X secondes / minutes auparavant)
- une appli qui ferait la même chose en stockant les données dans un fichier ou une base SQL ou nosql.

Ce qui m'intéresse, c'est de "garder en mémoire" toute l'info mais l'info reste volatile, donc une base de données me paraît beaucoup trop lourd.

J'ai l'impression que node.js serait une bonne solution. Je peux avoir jusqu'à 10000 ressources à gérer, moins de 10 utilisateurs pour chacune en parallèle, du coup je me demande si ça ne serait pas la bonne solution d'implémenter un serveur node.js qui gère une liste de ressources et les utilisateurs associés. En testant le code d'un chat basé sur node.js - https://github.com/ry/node_chat , j'ai l'impression que ça va être trivial à implémenter, d'autant que le code en question gère du JSON en entrée / sortie, c'est pile poil comme les autres services que j'ai mis en place.

Qu'en pensez-vous ? Bonne ou mauvaise idée ? Une meilleure techno ? Une autre solution ? Des retours d'expérience sur node.js ?

Merci d'avance pour vos retours

  • # configurer comme il faut ton apache/ngnix ou lighthttpd

    Posté par  . Évalué à 2.

    ils ont tous une option "max client", "max request per client"
    tu dois donc pouvoir limiter à 10 personnes en simultanée assez facilement avec les options par defaut

    • [^] # Re: configurer comme il faut ton apache/ngnix ou lighthttpd

      Posté par  . Évalué à 2.

      J'ai cru comprendre qu'il voulait limiter le nombre d'utilisateur simultané par ressource et non au global, non ?

      • [^] # Re: configurer comme il faut ton apache/ngnix ou lighthttpd

        Posté par  (site web personnel, Mastodon) . Évalué à 2.

        C'est tout à fait ça. De plus il ne s'agit pas d'une ressource "web" mais d'une ressource autre ; mon serveur doit simplement modéliser le nombre d'accès concurrents sur cette (ces) ressource(s).

        #tracim pour la collaboration d'équipe __ #galae pour la messagerie email __ dirigeant @ algoo

        • [^] # Re: configurer comme il faut ton apache/ngnix ou lighthttpd

          Posté par  . Évalué à 2.

          Redis pourrait peut être répondre à ton besoin.
          Il doit être possible de gérer un compteur (valeur) par ressource (clé) et l'incrémenter / décrémenter depuis les applications.
          Cela va créer un bottleneck dans ton architecture mais je crois que l'implémentation est assez efficace et donc rapide et scalable.
          Il doit être possible de faire cela en memcached aussi ce qui a l'avantage de pouvoir utiliser plusieurs serveurs.

          • [^] # Re: configurer comme il faut ton apache/ngnix ou lighthttpd

            Posté par  (site web personnel, Mastodon) . Évalué à 2.

            Merci pour ces pistes ; ça me semble en effet être une bonne idée. J'ai regardé les deux technos ; ça m'a l'air très bien, la seule question que je me pose (peut-être sauras-tu y répondre), c'est : comment ces serveurs montent-ils en charge en écriture ? memcached est connu pour être utilisé en mode "cache web", mais il s'agit plus de lectures que d'écritures. Dans mon cas, les écritures seront aussi nombreuses que les lectures. Est-ce que ça colle au mode de fonctionnement de redis et memcached ?

            #tracim pour la collaboration d'équipe __ #galae pour la messagerie email __ dirigeant @ algoo

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.