SlideShare ist ein Scribd-Unternehmen logo
1 von 14
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

Weitere ähnliche Inhalte

Andere mochten auch

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 storyVivian Bertin
 
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édicaldigitalMedLab
 
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
 
(5econf) 16h45 JMap Radar Slide Show
(5econf) 16h45 JMap Radar Slide Show(5econf) 16h45 JMap Radar Slide Show
(5econf) 16h45 JMap Radar Slide ShowK2 Geospatial
 
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 troyanoCarolina Diaz
 
Instructivo rusicad
Instructivo rusicadInstructivo rusicad
Instructivo rusicadAngel 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 franciliensplumesolidaire2010
 
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 2014Katy Borges
 

Andere mochten auch (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
 

Ähnlich wie EventMachine

Caching reboot: javax.cache & Ehcache 3
Caching reboot: javax.cache & Ehcache 3Caching reboot: javax.cache & Ehcache 3
Caching reboot: javax.cache & Ehcache 3Louis Jacomet
 
Cours java avance avancé thread arraylist
Cours java avance avancé thread arraylistCours java avance avancé thread arraylist
Cours java avance avancé thread arraylistHoussem Hamrouni
 
Systemes d'explotation: Threads
Systemes d'explotation: ThreadsSystemes d'explotation: Threads
Systemes d'explotation: ThreadsAlexandru 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 2015gaelmetais
 
Du JavaScript dans mon projet
Du JavaScript dans mon projetDu JavaScript dans mon projet
Du JavaScript dans mon projetjollivetc
 
Javascript & tools
Javascript & toolsJavascript & tools
Javascript & toolsSlim Soussi
 
Alphorm.com Formation Le langage Ruby
Alphorm.com Formation Le langage RubyAlphorm.com Formation Le langage Ruby
Alphorm.com Formation Le langage RubyAlphorm
 
.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 robotiqueMicrosoft
 
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.5Microsoft
 
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 devPascal 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 ReactorFlorian 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
 

Ähnlich wie 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
 

Mehr von LeTesteur

RxJs - Reactive Extensions for JavaScript
RxJs - Reactive Extensions for JavaScriptRxJs - Reactive Extensions for JavaScript
RxJs - Reactive Extensions for JavaScriptLeTesteur
 
Drupal en environnement microsoft
Drupal en environnement microsoftDrupal en environnement microsoft
Drupal en environnement microsoftLeTesteur
 
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 microsoftLeTesteur
 
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 maintenableLeTesteur
 
Web dev open door
Web dev   open doorWeb dev   open door
Web dev open doorLeTesteur
 
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 AzureLeTesteur
 
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 parisLeTesteur
 
Reactive programming for javascript
Reactive programming for javascriptReactive programming for javascript
Reactive programming for javascriptLeTesteur
 
Comment approcherlecloud
Comment approcherlecloudComment approcherlecloud
Comment approcherlecloudLeTesteur
 
What linq is about
What linq is aboutWhat linq is about
What linq is aboutLeTesteur
 

Mehr von 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