Fluxy est un serveur tcp/udp en C++ et basé sur la bibliothèque Libevent qui permet la génération de flux d'actualités (newsfeeds) pour les réseaux sociaux.

Fluxy - Serveur tcp/udp libre pour la gestion de newsfeeds

Fluxy a été originalement écrit pour la plate-forme de blogs Skyrock.com et permet de gérer les newsfeed de 20 millions d'utilisateurs sur une simple paire de machines (active/passive) depuis décembre 2009.

Fluxy est distribué sous licence GPLv3.

Documentation

Téléchargement

rat plombier

Dépendances

Pour compiler Fluxy vous aurez besoin des bibliothèques suivantes :

Installation

Comme d'habitude, à partir de la racine de l'archive décompressée :

./configure
make
sudo make install

Paquet Debian

Vous trouverez un paquet Debian source, ainsi qu'un paquet binaires pour amd64 à cette adresse.

Il est possible d'utiliser la commande dget pour récupérer le paquet Debian source :

dget -x -u http://backports.skyrock.com/pool/main/f/fluxy/fluxy_0.19-2orbuslenny0.dsc

Fonctionnement

Rat prof

Généralités

Fluxy permet, pour chaque utilisateur, de maintenir en RAM un buffer contenant une liste FIFO d'événements (avec une taille maximale d'événements).
Chaque événement est composé de différents champs (id, date, flags, type, version, body).
Lors de l'insertion d'un nouvel événement, si le nombre d'événements maximal est atteint, les plus vieux messages sont supprimés.

Les événements ont une durée de vie limitée et sont supprimées automatiquement au bout d'une période donnée, libérant ainsi de la mémoire.

Il est possible de récupérer la liste des événements d'un utilisateur donné, ou bien d'agréger les événements d'une liste d'utilisateurs (fonction utilisée pour la génération du newsfeed lui même).
L'agrégation ne renvoie qu'un nombre limité d'événements classés par ordre chronologique. Il est possible de fournir un filtre binaire afin de limiter l'agrégation à un certain type d'événements.

Fluxy travaille exclusivement en RAM mais exporte régulièrement l'ensemble de ses données dans un fichier (par exemple, toutes les 6h). Les données sont également sauvegardées lors de l'arrêt du serveur.
Les buffers (de 128, 256, 512 octets etc...) libérés au cours de l'exécution de Fluxy sont mis de côté (ne sont pas détruits) pour être réutilisés en priorité lorsque le serveur va avoir besoin d'allouer de la mémoire.
De cette façon, la mémoire ne se fragmente jamais.

Fluxy possède deux interfaces:

Les données renvoyées par Fluxy, sont, en général, renvoyées au format php serialize.

Syntaxe des requètes

à rédiger

Utilisation en PHP

Il est possible d'utiliser l'extension PHP "Topy" qui permet de gérer un pool de connexions persistantes. De plus l'extension "Topy" permet de desérialiser automatiquement les informations retournées par le serveur.

Voici un petit exemple de script écrit en PHP utilisant l'extension Topy pour communiquer avec Fluxy :

<?php
$handle = topy_connect("localhost", "8888");
if (!$handle) die("Could not connect to Fluxy Server!\n");
$result = topy_query("stats");
var_dump($result);
?>

Monitoring

Fluxy est distribué avec un plugin Munin qui permet de grapher les informations suivantes :