+20 millions
de réservations
Créée en
2007 !
Cahier de
réservation
électronique
Site internet &!
applications
mobiles
▪ LaFourchette est un service de réservation de tables, en ligne et sur mobile dans plus de 12 500 restaurants!
!
▪ Le service permet aux internautes de trouver et réserver un restaurant en moins de 30s!
!
▪ LaFourchette développe des solutions pour les restaurateurs afin de :!
⁞ Gérer efficacement leur activité grâce à la solution MyFourchette : gestion des réservations centralisée et optimisation du taux de
remplissage !
⁞ Développer leur visibilité sur internet
Slide 4
Slide 4 text
Big Data ?
Slide 5
Slide 5 text
Les big data, littéralement les grosses données, parfois appelées données massives,
est une expression anglophone utilisée pour désigner des ensembles de données qui
deviennent tellement volumineux qu'ils en deviennent difficiles à travailler avec des outils
classiques de gestion de base de données ou de gestion de l'information
Slide 6
Slide 6 text
No content
Slide 7
Slide 7 text
Big Data ?
Avoir beaucoup de données en base (100 Go, 1To, 1Po) ?
Slide 8
Slide 8 text
Big Data ?
Avoir un « messaging system » (rabbitmq, hornetq…) ?
Slide 9
Slide 9 text
Big Data ?
Avoir un traffic de plus en plus dense (4000, 10000 utilisateurs
simultanés) ?
Slide 10
Slide 10 text
Big Data ?
Lors d’un pic d’audience, comment je fais pour
Envoyer des emails Cropper une image
Chauffer des caches Mettre à jour mon moteur de
recherche
Slide 11
Slide 11 text
No content
Slide 12
Slide 12 text
No content
Slide 13
Slide 13 text
Solutions ?
Slide 14
Slide 14 text
Gearman ?
Open Source
Multi-langage - clients codés dans un langage différent
des workers
Design applicatif flexible
Persistance
Slide 15
Slide 15 text
Langages ?
Slide 16
Slide 16 text
2005 http://brad.livejournal.com/2106943.html
Implémenté en Perl
Créer par Danga Interactive (Memcache et MogileFS)
Slide 17
Slide 17 text
2008 Réécrit en C par Brian Aker
Extension php créé par James Luedke
C
Slide 18
Slide 18 text
Qui utilise ?
Slide 19
Slide 19 text
Les bases
Utilise TCP, port 4730
Client - Crée un job à démarrer et l’envoi au job server
Worker - s’enregistre auprès d’un job server et récupère
des jobs au fur et à mesure
Job server - coordonne l’assignation des jobs entre les
clients et les workers et gère le redémarrage des jobs si
un worker disparait
Slide 20
Slide 20 text
La Stack
Your Client Application Code
Gearman Client API
(C, PHP, Perl, MySQL UDF,…)
Gearman Job Server
gearmand
Gearman Worker API
(C, PHP, Perl,…)
Your Worker Application Code
Your
Application
Provided by
Gearman
Slide 21
Slide 21 text
En cluster
Job Server
Client Client
Worker Worker
Job Server
Client Client
Worker Worker
1 array(4) {
2 [0] => # le job est connu
3 bool(false)
4 [1] => # le job tourne toujours
5 bool(false)
6 [2] => # Numérateur
7 int(0)
8 [3] => # Dénominateur
9 int(0)
10 }
API client status
Slide 29
Slide 29 text
Jobs et tasks
Les « tasks » sont parallélisables!
Slide 30
Slide 30 text
Task callback
GearmanClient::setDataCallback()
Définit une fonction de rappel à appeler lorsqu'un paquet de données est reçu pour une tâche
GearmanClient::setCreatedCallback()
Définit une fonction de rappel à appeler lorsqu'une tâche est placée dans la file d'attente
GearmanClient::setExceptionCallback()
Définit une fonction de rappel pour les exceptions émises par l'agent
GearmanClient::setFailCallback()
Définit une fonction de rappel à appeler lorsqu'un travail échoue
GearmanClient::setStatusCallback()
Définit une fonction de rappel pour collecter les statuts d'une tâche
GearmanClient::setWarningCallback()
Définit une fonction de rappel lors de l'émission d'alerte depuis l'agent
GearmanClient::setWorkloadCallback()
Définit une fonction de rappel lors de la réception de mises à jour de données incrémentales