Ce diaporama a bien été signalé.
Nous utilisons votre profil LinkedIn et vos données d’activité pour vous proposer des publicités personnalisées et pertinentes. Vous pouvez changer vos préférences de publicités à tout moment.

Gearman presentation yopeso

474 vues

Publié le

This is Gearman presentation in romanian language

Publié dans : Technologie
  • Soyez le premier à commenter

  • Soyez le premier à aimer ceci

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!!!

×