Skip to content
Yann Lastapis edited this page May 19, 2015 · 12 revisions

Serveur

Architecture Server

NodeJs + RequireJs

https://nodejs.org/ / http://requirejs.org/ Plateforme Javascript permettant un mode de programmation événementiel "StateLess" et pensé pour les applications modulables nécessitant une montée en charge importante.

PomeloJs

PomeloJs http://pomelo.netease.com/ Permet de créer une architecture distribuée et modulable. Il créera ainsi de nouveaux serveurs virtuels en fonction des besoins, à la volée. Cette architecture distribuée s'organise autour de deux types de serveurs : Applicatifs (A) et Connecteurs (C), ainsi qu'un seul et unique serveur de type Master (M)

  • Le Master se chargera de "booter" virtuellement les serveurs A & C requis.
  • Le Connecteur établira une connexion permanente entre le client (Au travers de NGinx) et le serveur Applicatif, via des appels RPC. Un "Keep-Alive" sauvegardera à intervalles régulier le statut de l'utilisateur connecté, et les serveurs Applicatifs associés.
  • Le serveur d'Application enfin effectuera les traitements logiques requis par les actions utilisateur.

Express

http://expressjs.com/ Mini-framework web NodeJs qui va permettre de gérer entre autres les Routes de notre application.

Socket.IO

http://socket.io/ Bibliothèque Javascript qui permet de faire de la communication en temps réel entre le client et le serveur, via des "sockets". Socket.io détermine pour chaque client quelle est la méthode de communication temps réel la plus adaptée, et essaiera "d'améliorer" le type de connexion, en fonction de ce que le client est capable d'accepter. Par exemple, si le navigateur ne support pas WebSocket mais que Flash est installé, socket.io passera par Flash pour faire de la communication temps réel. Sinon, il peut utiliser d'autres techniques comme l'AJAX Long Polling.

Types de connexions : WebSocket / Adobe Flash Socket / AJAX long polling / AJAX multipart streaming / Forever Iframe / JSONP Polling

MongoDb

https://www.mongodb.org/ Système de gestion de base de données orientée documents, qui permet de stocker des objets sous format JSon. Vu qu'il n'y a pas de structure définie, on peut stocker tout et n'importe quoi, il faut donc faire attention à bien traiter les données récupérées. MongoDb Servira ici de "ColdStorage", soit l'ensemble des données applicatives (Comptes clients, messages envoytés, etc...) qui ne doivent surtout pas être perdues en cas de crash de la plateforme.

Redis

http://redis.io/ Système de gestion de base de données clef-valeur scalable, très hautes performances. Redis Servira ici de "HotStorage", soit l'ensemble des données qui peuvent être perdues en cas de crash de la plateforme (Données de connexion, statut actuel des utilidateurs et connecteurs, etc...).

Client

Clone this wiki locally