2011-06-06 3 views
2

Pour un projet sur lequel je travaille, je dois implémenter un fil d'actualité similaire à celui de Facebook, à la différence près qu'il serait rafraîchi à un rythme similaire à celui d'un salon de discussion et que le flux serait contribué à par les utilisateurs (uniquement les mises à jour de statut). J'avais l'intention d'utiliser Thrift, avec php sur le client et C++ sur le serveur. Parce que le taux de rafraîchissement doit être si élevé, sur le serveur, je pensais garder les dernières 20 entrées dans les flux dans une liste chaînée (ou une structure similaire) en mémoire pour un accès rapide (puisque quelqu'un ne rafraîchit que a besoin des dernières entrées) tout en envoyant toutes les anciennes entrées à une base de données mysql pour le stockage.Newsfeed Architecture

Est-ce que cela semble être une bonne architecture pour cette implémentation? Si oui, quel serait un bon moyen d'envoyer les anciennes entrées à la base de données? Considérant l'utilisation de memcached devant votre base de données.

Répondre

0

C'est pour ça que c'est conçu.

Mais avant même que vous fassiez cela, implémentez simplement la chose sans mise en cache. Voir comment ça se passe. Peut-être que cela fonctionnera bien avec une implémentation plutôt ennuyeuse

0

Désolé pour la réponse simpliste mais je voudrais envoyer des entrées à la base de données comme ils sont arrivés sur le serveur, pas comme le "vieilli". Aucun point d'attente. Vous pouvez ensuite utiliser votre base de données comme référentiel de stockage et l'interroger lorsqu'un nouveau client arrive pour les 20 dernières entrées.

1

Envoyez tous les éléments directement à la base de données, mais gardez une liste des 100 derniers.

Si vous utilisez le modèle de référentiel, conservez la liste dans votre classe de référentiel et ajoutez une méthode appelée GetLatest. Le reste de votre application ne devrait pas se soucier s'ils sont mis en cache ou non.

Si vous utilisez nhibernate, vous pouvez activer la mise en cache et demander à nhibernate de s'en occuper.