Les rouages du travail distribué
   julien.salleyron@gmail.com
    ◦ Geek
                                                @juguul
    ◦ Copix Team

    ◦ Lead developper de l’extension AOP pour PHP*


                                   https://github.com/AOP-PHP




                * Présentation de AOP et AOP-PHP à 15h45 même salle
« O Draconian Devil ! Oh Lame Saint. »
 « Leonardo Da Vinci, The Mona Lisa »
?
manager
« Quelqu’un de dispo sait faire ça ? »
Gearman




             Worker              Worker             Worker


Je sais faire « Hello »   Je sais faire « Bye »   Je sais faire « Hello »
                                                  Je sais faire « Bye »
Tâches       Tâches    Workers
                    en attente   en cours    total


   telnet server port (telnet 127.0.0.1 4730)
    ◦ Status




    ◦ Workers
Client   J’aimerai faire « Hello » ?




            Gearman




                              Worker
 Worker     Worker
                             « Hello »
« Hello »   « Bye »
                              « Bye »
Moi aussi                                        Bah moi
je veux faire     Client             Client     Je veux faire
   « Hello »                                       « Bye »



                           Gearman




                                           Worker
             Worker        Worker
                                          « Hello »
            « Hello »      « Bye »
                                           « Bye »
« Quelle est la plus grosse tâche ? »
FIFO
(First In First Out)
FIFO
  (First In First Out)

           FIFE
(First In First Execute)
12:00:00 -> demande « BonjourMadame »
12:00:05 -> demande « HelloTheWorld »

12:00:07 <- réponse « HelloTheWorld »
12:00:10 <- réponse « BonjourMadame »
12:00:00 -> demande « Bye » (1)
12:00:01 -> demande « Bye » (2)
12:00:02 -> demande « Bye » (3)

12:00:05 <- réponse « bye » (1)
12:00:10 <- réponse « bye » (2)
12:00:15 <- réponse « bye » (3)
Client3
Client1   Client2
                     HIGH




          Gearman




          Worker
           Bye
Client2
Client1             Client3
           LOW




          Gearman




          Worker
           Task
12:00:00   ->   demande       «   Hello   »   (1)
12:00:01   ->   demande       «   Hello   »   (Low 2)
12:00:02   ->   demande       «   Hello   »   (3)
12:00:03   ->   demande       «   Hello   »   (High 4)

12:00:05   <-   réponse   «   Hello   »   (1)
12:00:10   <-   réponse   «   Hello   »   (4)
12:00:15   <-   réponse   «   Hello   »   (3)
12:00:20   <-   réponse   «   Hello   »   (2)
Un manager polyglotte
   Création d’un worker qui compte :


Appel client d’un worker qui compte :
gearman -f wc -h localhost -p 4730
   PECL (utilisé dans les slides)
pecl install gearman


   PEAR
pear install Net_Gearman
« Et les workers, ils travaillent sans données ? »
Chaine de caractères *




                         * Norme JSON
Reconnaissance de QRCode
« J’aimerai reconnaitre
un QRCode »




                          Gearman




                                    « Je sais reconnaitre les QRCode »
« Plus de puissance ! Toujours plus de
                         puissance ! »
Client             Client




             Gearman




                                Worker
Worker       Worker
                                Task1
Task1        Task2
                                Task2
Server 1               Server 2


      Client                 Client




                Gearman




                                      Worker
Worker          Worker
                                      Task1
Task1           Task2
                                      Task2

Server 3                  Server 4
Server 1             Server 2


      Client                Client




                Server




                                     Worker
Worker          Worker
                 Worker              Task1
                                     Worker
Task1           Task2
                  Task1              Task2
                                      Task1
                  Task2               Task2
Server 3                Server 4
Server 1                 Server 2


            Client                   Client




                           Server




                                                          Worker
Worker                Worker          Worker
                                                          Task1
Task1                 Task1           Task2
                                                          Task2

Server 5              Server 3                 Server 4
Server 1                         Server 2


               Client                           Client




                                   Server




                                                                   Worker
Worker                   Worker                  Worker
                                                                   Task1
Task1                    Task1                   Task2
           Worker                     Worker                Worker Task2
           Task1                      Task1                 Task1
Server 5                 Server 3                         Server 4

           Server N                 Server N+1            Server N+2
                         GearMan                          39
Server 1                 Server 2


            Client                   Client




                           Server




                                                          Worker
Worker                Worker          Worker
                                                          Task1
Task1                 Task1           Task2
                                                          Task2

Server 5              Server 3                 Server 4
mais ce n’est pas tout !
Le résultat m’importe peu, « just do it » !
Client    « Tu le feras plus tard »
Background




 Gearman




  Worker
   Task
Gestion des logs
Client
Background




 Gearman



  Worker
 Envoi log
 par mail
Client
             « Tant que tu le fais un jour »
Background




 Gearman
   Gestion par timeout
« Elle est où la liste des tâches à faire »
« il reste tout ça à
             faire »




Gearman
   gearmand -d -q libsqlite3 --libsqlite3-db ./test.db



                   « ce qu’il reste à faire »



                                                BDD



                            Gearman
« Tous ensemble, tous ensemble ! Hey !! »
Client
          Task1
            +
          Task1
            +
          Task2




         Gearman




                   Worker
Worker   Worker
                   Task1
Task1    Task2
                   Task2
Tarification multi-produit
« Mais il est où ce bug »
« les workers ont planté,
 faut les relancer !!!!!!! »
« Au fait, il prends quoi
en paramètre ton worker ? »
Des questions ?

Gearman

  • 1.
    Les rouages dutravail distribué
  • 2.
    julien.salleyron@gmail.com ◦ Geek @juguul ◦ Copix Team ◦ Lead developper de l’extension AOP pour PHP* https://github.com/AOP-PHP * Présentation de AOP et AOP-PHP à 15h45 même salle
  • 3.
    « O DraconianDevil ! Oh Lame Saint. » « Leonardo Da Vinci, The Mona Lisa »
  • 4.
  • 5.
  • 6.
    « Quelqu’un dedispo sait faire ça ? »
  • 7.
    Gearman Worker Worker Worker Je sais faire « Hello » Je sais faire « Bye » Je sais faire « Hello » Je sais faire « Bye »
  • 9.
    Tâches Tâches Workers en attente en cours total  telnet server port (telnet 127.0.0.1 4730) ◦ Status ◦ Workers
  • 10.
    Client J’aimerai faire « Hello » ? Gearman Worker Worker Worker « Hello » « Hello » « Bye » « Bye »
  • 11.
    Moi aussi Bah moi je veux faire Client Client Je veux faire « Hello » « Bye » Gearman Worker Worker Worker « Hello » « Hello » « Bye » « Bye »
  • 13.
    « Quelle estla plus grosse tâche ? »
  • 14.
  • 15.
    FIFO (FirstIn First Out) FIFE (First In First Execute)
  • 16.
    12:00:00 -> demande« BonjourMadame » 12:00:05 -> demande « HelloTheWorld » 12:00:07 <- réponse « HelloTheWorld » 12:00:10 <- réponse « BonjourMadame »
  • 17.
    12:00:00 -> demande« Bye » (1) 12:00:01 -> demande « Bye » (2) 12:00:02 -> demande « Bye » (3) 12:00:05 <- réponse « bye » (1) 12:00:10 <- réponse « bye » (2) 12:00:15 <- réponse « bye » (3)
  • 18.
    Client3 Client1 Client2 HIGH Gearman Worker Bye
  • 19.
    Client2 Client1 Client3 LOW Gearman Worker Task
  • 21.
    12:00:00 -> demande « Hello » (1) 12:00:01 -> demande « Hello » (Low 2) 12:00:02 -> demande « Hello » (3) 12:00:03 -> demande « Hello » (High 4) 12:00:05 <- réponse « Hello » (1) 12:00:10 <- réponse « Hello » (4) 12:00:15 <- réponse « Hello » (3) 12:00:20 <- réponse « Hello » (2)
  • 22.
  • 25.
    Création d’un worker qui compte : Appel client d’un worker qui compte : gearman -f wc -h localhost -p 4730
  • 27.
    PECL (utilisé dans les slides) pecl install gearman  PEAR pear install Net_Gearman
  • 28.
    « Et lesworkers, ils travaillent sans données ? »
  • 29.
    Chaine de caractères* * Norme JSON
  • 31.
  • 32.
    « J’aimerai reconnaitre unQRCode » Gearman « Je sais reconnaitre les QRCode »
  • 34.
    « Plus depuissance ! Toujours plus de puissance ! »
  • 35.
    Client Client Gearman Worker Worker Worker Task1 Task1 Task2 Task2
  • 36.
    Server 1 Server 2 Client Client Gearman Worker Worker Worker Task1 Task1 Task2 Task2 Server 3 Server 4
  • 37.
    Server 1 Server 2 Client Client Server Worker Worker Worker Worker Task1 Worker Task1 Task2 Task1 Task2 Task1 Task2 Task2 Server 3 Server 4
  • 38.
    Server 1 Server 2 Client Client Server Worker Worker Worker Worker Task1 Task1 Task1 Task2 Task2 Server 5 Server 3 Server 4
  • 39.
    Server 1 Server 2 Client Client Server Worker Worker Worker Worker Task1 Task1 Task1 Task2 Worker Worker Worker Task2 Task1 Task1 Task1 Server 5 Server 3 Server 4 Server N Server N+1 Server N+2 GearMan 39
  • 40.
    Server 1 Server 2 Client Client Server Worker Worker Worker Worker Task1 Task1 Task1 Task2 Task2 Server 5 Server 3 Server 4
  • 41.
    mais ce n’estpas tout !
  • 42.
    Le résultat m’importepeu, « just do it » !
  • 43.
    Client « Tu le feras plus tard » Background Gearman Worker Task
  • 45.
  • 46.
    Client Background Gearman Worker Envoi log par mail
  • 48.
    Client « Tant que tu le fais un jour » Background Gearman
  • 50.
    Gestion par timeout
  • 51.
    « Elle estoù la liste des tâches à faire »
  • 52.
    « il restetout ça à faire » Gearman
  • 53.
    gearmand -d -q libsqlite3 --libsqlite3-db ./test.db « ce qu’il reste à faire » BDD Gearman
  • 54.
    « Tous ensemble,tous ensemble ! Hey !! »
  • 55.
    Client Task1 + Task1 + Task2 Gearman Worker Worker Worker Task1 Task1 Task2 Task2
  • 57.
  • 61.
    « Mais ilest où ce bug »
  • 63.
    « les workersont planté, faut les relancer !!!!!!! »
  • 64.
    « Au fait,il prends quoi en paramètre ton worker ? »
  • 65.