Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Gearman presentation yopeso

476 views

Published on

This is Gearman presentation in romanian language

Published in: Technology
  • Be the first to comment

  • Be the first to like this

Gearman presentation yopeso

  1. 1. Gearman nu este ceva ce trebuie de lasat in frunzis!
  2. 2. Ce criterii descriu serverul de job-uri GearmanOpen Source Wow, asta e un news bun!Multi-language C, PHP, Perl, MySql UDF, Python, Java, Ruby, GoFlexible Nu esti legat de nici un design pattern specificFast Are un protocol simplu si este realizat in CEmbeddable Introducerea intr-o aplicatie este trivialaNo single point of failure Actioneaza intr-un mod tolerant la erori
  3. 3. Ce trebuie de luat in considerare inainte sa incepem1. Gearman transmite datele de la client la worker in forma destring. SOLUTIE: folositi serializarea datelor BEST PRACTICE: MsgPack- serializare binary foarte rapida(la fel realizata pentru multiple limbaje)2. Gearman necesita workeri porniti, insa ei pot “muri” din mai multe cauze. SOLUTIE: supravegheati workerii cu alti daemoni BEST PRACTICE: folositi Supervisor pentru supraveghere
  4. 4. Kick Ass Start...# puteti descarca sursa http://gearman.org/index.php?id=downloadsudo apt-get install gearman libgearman-dev# compilati si instalati biblioteca p-tru PHPpecl download gearman-0.8.0tar -xvf gearman-0.8.0.tgzcd gearman-0.8.0phpize./configuremakemake install# porniti serverul (inserati -vvv pentru debugging)sudo gearmand -d -u root
  5. 5. Ce trebuie sa stim despre modul de lucru1. Lucrul consta din 2 parti(+ Gearman ca mediator): Client si Worker2. Internal, Gearman se poate compara cu Priority Queue(Coada, FIFO)3. Se imparte in 3 tiputi dupa prioritate: I- Low II- Normal III- High4. Se imparte in 2 tipuri dupa modul de rulare: I- Normal II- Background(nu interactioneaza cu clientul)5. Se imparte in 2 tipuri dupa modul de executie: I- Sync (sincronizate) II- Async (paralele)
  6. 6. Din ce este constituita partea PHPGearmanClient- este cel ce adauga taskuri in gearman p-tru workeriGearmanTask- obiectul taskului care contine metodele necesare p-tru lucruGearmanWorker- workerul(daemon) care primeste job-uri de la clientiGearmanJob- este obiectul job-ului transmis de la client si este emis ca argument in callback-ul inregistrat de worker p-tru o functie+ GearmanException ca exceptie folosita de aceasta biblioteca
  7. 7. Exemple de taskuri p-tru GearmanTask sincronizat:$rev = $client->do( "reverse", msgpck_pack([v1, v2 /* ... much more */]));Task Paralel:for($i = 0; $i < 10; $i++) { $client->addTask("reverse", "Hello World!");}P.S Setarea clientului din php: $client = new GearmanClient(); $client->addServer(); // localhost by default
  8. 8. Exemplu de worker p-tru Gearman// setam workerul$worker = new GearmanWorker();$worker->addServer(); // localhost by default// adaugam o functie$worker->addFunction("reverse", "reverse_fn");// ciclu in care workerul asteapta joburi si controleaza starea conexiunii// cu serverul Gearmanwhile ($worker->work()) { if ($worker->returnCode() != GEARMAN_SUCCESS) beak;}// definim functiafunction reverse_fn($job){ $result= strrev($job->workload();); return $result;}
  9. 9. Leave oldies at museum!!!
  10. 10. Leave oldies at museum!!!

×