SlideShare une entreprise Scribd logo
EventMachine

11 avril 2012
pierre couzy
Pourquoi
• Idée initiale : se débarrasser des IO bloquantes
• Les patterns les plus fréquents
  •   Du cache
  •   Des threads
  •   De l’asynchrone
  •   Le pattern Reactor
Le principe
• Supprimer la dépendance 1-1 entre thread et IO. Approche
  Thread-on-event
Qui ?
•   Node
•   Python
•   Java
•   C#
•   …



• Ruby
Comment ça marche ?
• Les tâches bloquantes sont déléguées à l’OS
• Ruby fournit à l’OS les moyens de rappeler votre code

• Deferrable
  • C’est la classe de base
  • Elle définit un pattern de callback
     • callback : quand tout va bien
     • errback : le reste du temps
la Boucle d’EventMachine




      •   EM.run
      •   EM.stop
      •   EM.next_tick
      •   EM.defer



http://timetobleed.com/eventmachine-scalable-non-blocking-io-in-ruby/
Les threads
• next_tick renvoie sur le thread principal
• defer renvoie sur le threadpool (20 par défaut)
EventMachine & callbacks
• Deferrable force l’utilisation d’un callback
  .. Dans lequel on va réutiliser le même pattern
      .. Qui va lui aussi imposer un callabck et un errback
         … et ça va vite devenir
            très difficile
               à relire.
Un peu de sucre ?
• Empiler les callbacks, c’est laid.

• Solution : les fibres
  • Fiber : thread coopératif
      • Le développeur maîtrise l’état
      • Le code rend la main explicitement (yield)
Exemple fibres
Et après ? EM::synchrony




http://www.youtube.com/watch?v=mPDs-xQhPb0
EventMachine
• C’est super !
  • Code lisible avec EM::synchrony
  • Utilisation optimale des threads


• C’est nul !
  • C’est TRES fragile
  • Toutes les libs doivent suivre

Contenu connexe

En vedette

Présentation du site Parlera (Portail des Actions et Ressources Linguistiques...
Présentation du site Parlera (Portail des Actions et Ressources Linguistiques...Présentation du site Parlera (Portail des Actions et Ressources Linguistiques...
Présentation du site Parlera (Portail des Actions et Ressources Linguistiques...
Coraia
 
Fichieracte117328
Fichieracte117328Fichieracte117328
Fichieracte117328genevieve38
 
Despidos colectivos. la comunicación de la decisión empresarial a los repres...
Despidos colectivos.  la comunicación de la decisión empresarial a los repres...Despidos colectivos.  la comunicación de la decisión empresarial a los repres...
Despidos colectivos. la comunicación de la decisión empresarial a los repres...
Universidad Autónoma de Barcelona
 
Zee entrepreneur 15: Live tweet story
Zee entrepreneur 15: Live tweet storyZee entrepreneur 15: Live tweet story
Zee entrepreneur 15: Live tweet story
Vivian Bertin
 
Francesco Zarati
Francesco ZaratiFrancesco Zarati
Francesco Zarati
Gobernabilidad
 
Derecho del Trabajo I. Curso 2010 2011. UAB. ADE.
Derecho del Trabajo I. Curso 2010 2011. UAB. ADE.Derecho del Trabajo I. Curso 2010 2011. UAB. ADE.
Derecho del Trabajo I. Curso 2010 2011. UAB. ADE.
Universidad Autónoma de Barcelona
 
De l’application mobile de santé au dispositif médical
De l’application mobile de santé au dispositif médicalDe l’application mobile de santé au dispositif médical
De l’application mobile de santé au dispositif médical
digitalMedLab
 
Unidad 2
Unidad 2Unidad 2
Unidad 2
Milenys Jimenez
 
Sobre el respeto a los pactos de suspensión contractual. Nulidad de los despi...
Sobre el respeto a los pactos de suspensión contractual. Nulidad de los despi...Sobre el respeto a los pactos de suspensión contractual. Nulidad de los despi...
Sobre el respeto a los pactos de suspensión contractual. Nulidad de los despi...
Universidad Autónoma de Barcelona
 
Alfabetizacion digital
Alfabetizacion digitalAlfabetizacion digital
(5econf) 16h45 JMap Radar Slide Show
(5econf) 16h45 JMap Radar Slide Show(5econf) 16h45 JMap Radar Slide Show
(5econf) 16h45 JMap Radar Slide Show
K2 Geospatial
 
B1 a3
B1 a3B1 a3
Girona Emprèn: La web 2.0 i el seu potencial per a l'empresa
Girona Emprèn: La web 2.0 i el seu potencial per a l'empresaGirona Emprèn: La web 2.0 i el seu potencial per a l'empresa
Girona Emprèn: La web 2.0 i el seu potencial per a l'empresaAnna Codina
 
Practica2 ataque troyano
Practica2 ataque troyanoPractica2 ataque troyano
Practica2 ataque troyano
Carolina Diaz
 
Instructivo rusicad
Instructivo rusicadInstructivo rusicad
Instructivo rusicad
Angel Chacin
 
Assises du Tourisme 2009 - F. Asselin, Coop Vallée Bras du Nord
Assises du Tourisme 2009 - F. Asselin, Coop Vallée Bras du NordAssises du Tourisme 2009 - F. Asselin, Coop Vallée Bras du Nord
Assises du Tourisme 2009 - F. Asselin, Coop Vallée Bras du Nordfgchevrier
 
2ème rencontre d'écrivains publics franciliens
2ème rencontre d'écrivains publics franciliens2ème rencontre d'écrivains publics franciliens
2ème rencontre d'écrivains publics franciliens
plumesolidaire2010
 
Horizons Économiques-Journal Étudiant ESG UQAM-septembre 2014
Horizons Économiques-Journal Étudiant ESG UQAM-septembre 2014Horizons Économiques-Journal Étudiant ESG UQAM-septembre 2014
Horizons Économiques-Journal Étudiant ESG UQAM-septembre 2014
Katy Borges
 

En vedette (20)

Présentation du site Parlera (Portail des Actions et Ressources Linguistiques...
Présentation du site Parlera (Portail des Actions et Ressources Linguistiques...Présentation du site Parlera (Portail des Actions et Ressources Linguistiques...
Présentation du site Parlera (Portail des Actions et Ressources Linguistiques...
 
Fichieracte117328
Fichieracte117328Fichieracte117328
Fichieracte117328
 
Despidos colectivos. la comunicación de la decisión empresarial a los repres...
Despidos colectivos.  la comunicación de la decisión empresarial a los repres...Despidos colectivos.  la comunicación de la decisión empresarial a los repres...
Despidos colectivos. la comunicación de la decisión empresarial a los repres...
 
Zee entrepreneur 15: Live tweet story
Zee entrepreneur 15: Live tweet storyZee entrepreneur 15: Live tweet story
Zee entrepreneur 15: Live tweet story
 
Francesco Zarati
Francesco ZaratiFrancesco Zarati
Francesco Zarati
 
Derecho del Trabajo I. Curso 2010 2011. UAB. ADE.
Derecho del Trabajo I. Curso 2010 2011. UAB. ADE.Derecho del Trabajo I. Curso 2010 2011. UAB. ADE.
Derecho del Trabajo I. Curso 2010 2011. UAB. ADE.
 
De l’application mobile de santé au dispositif médical
De l’application mobile de santé au dispositif médicalDe l’application mobile de santé au dispositif médical
De l’application mobile de santé au dispositif médical
 
Unidad 2
Unidad 2Unidad 2
Unidad 2
 
Sobre el respeto a los pactos de suspensión contractual. Nulidad de los despi...
Sobre el respeto a los pactos de suspensión contractual. Nulidad de los despi...Sobre el respeto a los pactos de suspensión contractual. Nulidad de los despi...
Sobre el respeto a los pactos de suspensión contractual. Nulidad de los despi...
 
Alfabetizacion digital
Alfabetizacion digitalAlfabetizacion digital
Alfabetizacion digital
 
(5econf) 16h45 JMap Radar Slide Show
(5econf) 16h45 JMap Radar Slide Show(5econf) 16h45 JMap Radar Slide Show
(5econf) 16h45 JMap Radar Slide Show
 
B1 a3
B1 a3B1 a3
B1 a3
 
Girona Emprèn: La web 2.0 i el seu potencial per a l'empresa
Girona Emprèn: La web 2.0 i el seu potencial per a l'empresaGirona Emprèn: La web 2.0 i el seu potencial per a l'empresa
Girona Emprèn: La web 2.0 i el seu potencial per a l'empresa
 
Practica2 ataque troyano
Practica2 ataque troyanoPractica2 ataque troyano
Practica2 ataque troyano
 
Ignite ac89
Ignite ac89Ignite ac89
Ignite ac89
 
Instructivo rusicad
Instructivo rusicadInstructivo rusicad
Instructivo rusicad
 
Assises du Tourisme 2009 - F. Asselin, Coop Vallée Bras du Nord
Assises du Tourisme 2009 - F. Asselin, Coop Vallée Bras du NordAssises du Tourisme 2009 - F. Asselin, Coop Vallée Bras du Nord
Assises du Tourisme 2009 - F. Asselin, Coop Vallée Bras du Nord
 
2ème rencontre d'écrivains publics franciliens
2ème rencontre d'écrivains publics franciliens2ème rencontre d'écrivains publics franciliens
2ème rencontre d'écrivains publics franciliens
 
Cremone Diapo Angelica
Cremone Diapo AngelicaCremone Diapo Angelica
Cremone Diapo Angelica
 
Horizons Économiques-Journal Étudiant ESG UQAM-septembre 2014
Horizons Économiques-Journal Étudiant ESG UQAM-septembre 2014Horizons Économiques-Journal Étudiant ESG UQAM-septembre 2014
Horizons Économiques-Journal Étudiant ESG UQAM-septembre 2014
 

Similaire à EventMachine

Caching reboot: javax.cache & Ehcache 3
Caching reboot: javax.cache & Ehcache 3Caching reboot: javax.cache & Ehcache 3
Caching reboot: javax.cache & Ehcache 3
Louis Jacomet
 
Cours java avance avancé thread arraylist
Cours java avance avancé thread arraylistCours java avance avancé thread arraylist
Cours java avance avancé thread arraylist
Houssem Hamrouni
 
Systemes d'explotation: Threads
Systemes d'explotation: ThreadsSystemes d'explotation: Threads
Systemes d'explotation: Threads
Alexandru Radovici
 
Solutions Linux 2014 – Alter Way : Industrialisation des développements en Ja...
Solutions Linux 2014 – Alter Way : Industrialisation des développements en Ja...Solutions Linux 2014 – Alter Way : Industrialisation des développements en Ja...
Solutions Linux 2014 – Alter Way : Industrialisation des développements en Ja...
ALTER WAY
 
YLT paris js - mars 2015
YLT paris js - mars 2015YLT paris js - mars 2015
YLT paris js - mars 2015
gaelmetais
 
Du JavaScript dans mon projet
Du JavaScript dans mon projetDu JavaScript dans mon projet
Du JavaScript dans mon projet
jollivetc
 
SdE 10 - Threads
SdE 10 - ThreadsSdE 10 - Threads
SdE 10 - Threads
Alexandru Radovici
 
Support NodeJS avec TypeScript Express MongoDB
Support NodeJS avec TypeScript Express MongoDBSupport NodeJS avec TypeScript Express MongoDB
Support NodeJS avec TypeScript Express MongoDB
ENSET, Université Hassan II Casablanca
 
Javascript & tools
Javascript & toolsJavascript & tools
Javascript & tools
Slim Soussi
 
FinistJUG - Apache TomEE
FinistJUG - Apache TomEEFinistJUG - Apache TomEE
FinistJUG - Apache TomEE
Horacio Gonzalez
 
Alphorm.com Formation Le langage Ruby
Alphorm.com Formation Le langage RubyAlphorm.com Formation Le langage Ruby
Alphorm.com Formation Le langage Ruby
Alphorm
 
.NET Microframework: du code, de l’électronique, de la robotique
.NET Microframework: du code, de l’électronique, de la robotique.NET Microframework: du code, de l’électronique, de la robotique
.NET Microframework: du code, de l’électronique, de la robotique
Microsoft
 
Multi threadingJava
Multi threadingJavaMulti threadingJava
Multi threadingJava
Nono Woguia Elvadas
 
Alphorm.com Formation Java, les fondamentaux
Alphorm.com Formation Java, les fondamentaux Alphorm.com Formation Java, les fondamentaux
Alphorm.com Formation Java, les fondamentaux
Alphorm
 
Plongée au cœur du Framework .NET 4.5
Plongée au cœur du Framework .NET 4.5Plongée au cœur du Framework .NET 4.5
Plongée au cœur du Framework .NET 4.5
Microsoft
 
Coding dojos : diffusez les bonnes pratiques de dev
Coding dojos : diffusez les bonnes pratiques de devCoding dojos : diffusez les bonnes pratiques de dev
Coding dojos : diffusez les bonnes pratiques de dev
Pascal LE MERRER
 
Programmation réactive avec Spring 5 et Reactor
Programmation réactive avec Spring 5 et ReactorProgrammation réactive avec Spring 5 et Reactor
Programmation réactive avec Spring 5 et Reactor
Florian Beaufumé
 
Backday xebia - Chercher la performance efficacement
Backday xebia - Chercher la performance efficacement Backday xebia - Chercher la performance efficacement
Backday xebia - Chercher la performance efficacement
Publicis Sapient Engineering
 

Similaire à EventMachine (20)

Caching reboot: javax.cache & Ehcache 3
Caching reboot: javax.cache & Ehcache 3Caching reboot: javax.cache & Ehcache 3
Caching reboot: javax.cache & Ehcache 3
 
Cours java avance avancé thread arraylist
Cours java avance avancé thread arraylistCours java avance avancé thread arraylist
Cours java avance avancé thread arraylist
 
Systemes d'explotation: Threads
Systemes d'explotation: ThreadsSystemes d'explotation: Threads
Systemes d'explotation: Threads
 
Solutions Linux 2014 – Alter Way : Industrialisation des développements en Ja...
Solutions Linux 2014 – Alter Way : Industrialisation des développements en Ja...Solutions Linux 2014 – Alter Way : Industrialisation des développements en Ja...
Solutions Linux 2014 – Alter Way : Industrialisation des développements en Ja...
 
YLT paris js - mars 2015
YLT paris js - mars 2015YLT paris js - mars 2015
YLT paris js - mars 2015
 
Du JavaScript dans mon projet
Du JavaScript dans mon projetDu JavaScript dans mon projet
Du JavaScript dans mon projet
 
SdE 10 - Threads
SdE 10 - ThreadsSdE 10 - Threads
SdE 10 - Threads
 
Support NodeJS avec TypeScript Express MongoDB
Support NodeJS avec TypeScript Express MongoDBSupport NodeJS avec TypeScript Express MongoDB
Support NodeJS avec TypeScript Express MongoDB
 
Javascript & tools
Javascript & toolsJavascript & tools
Javascript & tools
 
FinistJUG - Apache TomEE
FinistJUG - Apache TomEEFinistJUG - Apache TomEE
FinistJUG - Apache TomEE
 
Alphorm.com Formation Le langage Ruby
Alphorm.com Formation Le langage RubyAlphorm.com Formation Le langage Ruby
Alphorm.com Formation Le langage Ruby
 
Ns operationqueue
Ns operationqueueNs operationqueue
Ns operationqueue
 
.NET Microframework: du code, de l’électronique, de la robotique
.NET Microframework: du code, de l’électronique, de la robotique.NET Microframework: du code, de l’électronique, de la robotique
.NET Microframework: du code, de l’électronique, de la robotique
 
Multi threadingJava
Multi threadingJavaMulti threadingJava
Multi threadingJava
 
Alphorm.com Formation Java, les fondamentaux
Alphorm.com Formation Java, les fondamentaux Alphorm.com Formation Java, les fondamentaux
Alphorm.com Formation Java, les fondamentaux
 
Plongée au cœur du Framework .NET 4.5
Plongée au cœur du Framework .NET 4.5Plongée au cœur du Framework .NET 4.5
Plongée au cœur du Framework .NET 4.5
 
Coding dojos : diffusez les bonnes pratiques de dev
Coding dojos : diffusez les bonnes pratiques de devCoding dojos : diffusez les bonnes pratiques de dev
Coding dojos : diffusez les bonnes pratiques de dev
 
Programmation réactive avec Spring 5 et Reactor
Programmation réactive avec Spring 5 et ReactorProgrammation réactive avec Spring 5 et Reactor
Programmation réactive avec Spring 5 et Reactor
 
Le garbage collector .NEt
Le garbage collector .NEtLe garbage collector .NEt
Le garbage collector .NEt
 
Backday xebia - Chercher la performance efficacement
Backday xebia - Chercher la performance efficacement Backday xebia - Chercher la performance efficacement
Backday xebia - Chercher la performance efficacement
 

Plus de LeTesteur

RxJs - Reactive Extensions for JavaScript
RxJs - Reactive Extensions for JavaScriptRxJs - Reactive Extensions for JavaScript
RxJs - Reactive Extensions for JavaScript
LeTesteur
 
Drupal en environnement microsoft
Drupal en environnement microsoftDrupal en environnement microsoft
Drupal en environnement microsoft
LeTesteur
 
Développer et déployer WordPress en environnement microsoft
Développer et déployer WordPress en environnement microsoftDévelopper et déployer WordPress en environnement microsoft
Développer et déployer WordPress en environnement microsoft
LeTesteur
 
Développer et déployer une application php maintenable
Développer et déployer une application php maintenableDévelopper et déployer une application php maintenable
Développer et déployer une application php maintenable
LeTesteur
 
Web dev open door
Web dev   open doorWeb dev   open door
Web dev open door
LeTesteur
 
Joomla Days 2011 Lyon
Joomla Days 2011 LyonJoomla Days 2011 Lyon
Joomla Days 2011 LyonLeTesteur
 
Drupal in the cloud with Windows Azure
Drupal in the cloud with Windows AzureDrupal in the cloud with Windows Azure
Drupal in the cloud with Windows Azure
LeTesteur
 
Php sous Windows - webcamps Paris
Php sous Windows - webcamps ParisPhp sous Windows - webcamps Paris
Php sous Windows - webcamps ParisLeTesteur
 
Web Matrix (Microsoft WebCamps Paris)
Web Matrix (Microsoft WebCamps Paris)Web Matrix (Microsoft WebCamps Paris)
Web Matrix (Microsoft WebCamps Paris)LeTesteur
 
PHP Forum 2010 : Php et microsoft
PHP Forum 2010 : Php et microsoftPHP Forum 2010 : Php et microsoft
PHP Forum 2010 : Php et microsoftLeTesteur
 
Eclipse day paris
Eclipse day parisEclipse day paris
Eclipse day paris
LeTesteur
 
Reactive programming for javascript
Reactive programming for javascriptReactive programming for javascript
Reactive programming for javascript
LeTesteur
 
Comment approcherlecloud
Comment approcherlecloudComment approcherlecloud
Comment approcherlecloudLeTesteur
 
What linq is about
What linq is aboutWhat linq is about
What linq is about
LeTesteur
 

Plus de LeTesteur (14)

RxJs - Reactive Extensions for JavaScript
RxJs - Reactive Extensions for JavaScriptRxJs - Reactive Extensions for JavaScript
RxJs - Reactive Extensions for JavaScript
 
Drupal en environnement microsoft
Drupal en environnement microsoftDrupal en environnement microsoft
Drupal en environnement microsoft
 
Développer et déployer WordPress en environnement microsoft
Développer et déployer WordPress en environnement microsoftDévelopper et déployer WordPress en environnement microsoft
Développer et déployer WordPress en environnement microsoft
 
Développer et déployer une application php maintenable
Développer et déployer une application php maintenableDévelopper et déployer une application php maintenable
Développer et déployer une application php maintenable
 
Web dev open door
Web dev   open doorWeb dev   open door
Web dev open door
 
Joomla Days 2011 Lyon
Joomla Days 2011 LyonJoomla Days 2011 Lyon
Joomla Days 2011 Lyon
 
Drupal in the cloud with Windows Azure
Drupal in the cloud with Windows AzureDrupal in the cloud with Windows Azure
Drupal in the cloud with Windows Azure
 
Php sous Windows - webcamps Paris
Php sous Windows - webcamps ParisPhp sous Windows - webcamps Paris
Php sous Windows - webcamps Paris
 
Web Matrix (Microsoft WebCamps Paris)
Web Matrix (Microsoft WebCamps Paris)Web Matrix (Microsoft WebCamps Paris)
Web Matrix (Microsoft WebCamps Paris)
 
PHP Forum 2010 : Php et microsoft
PHP Forum 2010 : Php et microsoftPHP Forum 2010 : Php et microsoft
PHP Forum 2010 : Php et microsoft
 
Eclipse day paris
Eclipse day parisEclipse day paris
Eclipse day paris
 
Reactive programming for javascript
Reactive programming for javascriptReactive programming for javascript
Reactive programming for javascript
 
Comment approcherlecloud
Comment approcherlecloudComment approcherlecloud
Comment approcherlecloud
 
What linq is about
What linq is aboutWhat linq is about
What linq is about
 

EventMachine

  • 2. Pourquoi • Idée initiale : se débarrasser des IO bloquantes • Les patterns les plus fréquents • Du cache • Des threads • De l’asynchrone • Le pattern Reactor
  • 3. Le principe • Supprimer la dépendance 1-1 entre thread et IO. Approche Thread-on-event
  • 4. Qui ? • Node • Python • Java • C# • … • Ruby
  • 5. Comment ça marche ? • Les tâches bloquantes sont déléguées à l’OS • Ruby fournit à l’OS les moyens de rappeler votre code • Deferrable • C’est la classe de base • Elle définit un pattern de callback • callback : quand tout va bien • errback : le reste du temps
  • 6.
  • 7.
  • 8. la Boucle d’EventMachine • EM.run • EM.stop • EM.next_tick • EM.defer http://timetobleed.com/eventmachine-scalable-non-blocking-io-in-ruby/
  • 9. Les threads • next_tick renvoie sur le thread principal • defer renvoie sur le threadpool (20 par défaut)
  • 10. EventMachine & callbacks • Deferrable force l’utilisation d’un callback .. Dans lequel on va réutiliser le même pattern .. Qui va lui aussi imposer un callabck et un errback … et ça va vite devenir très difficile à relire.
  • 11. Un peu de sucre ? • Empiler les callbacks, c’est laid. • Solution : les fibres • Fiber : thread coopératif • Le développeur maîtrise l’état • Le code rend la main explicitement (yield)
  • 13. Et après ? EM::synchrony http://www.youtube.com/watch?v=mPDs-xQhPb0
  • 14. EventMachine • C’est super ! • Code lisible avec EM::synchrony • Utilisation optimale des threads • C’est nul ! • C’est TRES fragile • Toutes les libs doivent suivre