O slideshow foi denunciado.
Seu SlideShare está sendo baixado. ×

Hybrid concurrency patterns

Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Carregando em…3
×

Confira estes a seguir

1 de 45 Anúncio

Hybrid concurrency patterns

Baixar para ler offline

Ruby developers need to stop using EventMachine. It's the wrong direction.

Lost in the "Threads vs Event Driven vs Process Spawning" debate is that you can combine them! Learn how Celluloid is improving thread programming by abstracting them using a higher level framework called Celluloid, how you can use Celluloid::IO to throw a reactor pattern into a thread. Using this approach, you can take advantage of threading and use all CPU power on a machine with JRuby or Rubinius. I also discuss the future of distributed objects and computing, and where I think things are going.

Ruby developers need to stop using EventMachine. It's the wrong direction.

Lost in the "Threads vs Event Driven vs Process Spawning" debate is that you can combine them! Learn how Celluloid is improving thread programming by abstracting them using a higher level framework called Celluloid, how you can use Celluloid::IO to throw a reactor pattern into a thread. Using this approach, you can take advantage of threading and use all CPU power on a machine with JRuby or Rubinius. I also discuss the future of distributed objects and computing, and where I think things are going.

Anúncio
Anúncio

Mais Conteúdo rRelacionado

Diapositivos para si (20)

Semelhante a Hybrid concurrency patterns (20)

Anúncio

Mais recentes (20)

Hybrid concurrency patterns

  1. 1. Threads and Events in Harmony with Celluloid Kyle Drake
  2. 2. Hi, I’m Kyle Drake. I work at Geoloqi Esri. We built a geofencing Text and real-time location streaming platform.
  3. 3. Last year, IText a did talk at KRTConf.
  4. 4. I was really into pure event-driven Text (reactor pattern based) architecture.
  5. 5. EventMachine, Twisted, Node.js • Event-driven Text • No threads • One CPU core • Process Spawning
  6. 6. I released sinatra-synchrony, so I could use Text EventMachine without callbacks.
  7. 7. Since then, I’ve Text changed my mind.
  8. 8. I’m really not a fan of EventMachine Text anymore.
  9. 9. EventMachine is • A frankenstein - guts the ruby internals • Not in active development Text • Makes non-blocking IO block • Requires special code from Ruby libraries • Hard to use in an OOP way • Is really difficult to work with • Poorly documented
  10. 10. Ruby developers need to stop using EventMachine. It’s Text the wrong direction.
  11. 11. Check this benchmark Text out:
  12. 12. Text http://rhaas.blogspot.com/2012/04/did-i-say-32-cores-how-about-64.html
  13. 13. Predictions: More Cores. A lot more.
  14. 14. Predictions: More libraries = more memory
  15. 15. Will process spawning work forever? It might.
  16. 16. It might not. Thousands of cores?
  17. 17. Ruby MRI: Global Interpreter Lock (single CPU core) Rubinius and JRuby: Full threading (multiple CPU cores) ~20KB per thread
  18. 18. We’re not finding a lot of thread safety issues in Ruby.
  19. 19. “Threading is hard”
  20. 20. Threading is not an intention!
  21. 21. Let’s fix it by abstracting threads into how humans think!
  22. 22. http://celluloid.io • Developed by Tony Arcieri • Actor Pattern for Ruby • Lots of inspiration from Erlang
  23. 23. Each actor is a concurrent object running in its own thread
  24. 24. First “Killer App”: Sidekiq Mike Perham
  25. 25. Don’t get me wrong. Event- driven is still awesome.
  26. 26. “..seasoned engineers are using a mix of threaded, event-based, and alternative concurrency approaches like Actors” - Alex Payne
  27. 27. What if we could combine threads and reactor patterns.. and actors?!
  28. 28. https://github.com/celluloid/celluloid-io • One reactor pattern per Celluloid object • Multiple reactors? No problem! • Doesn’t mess with code outside of actor • Utilizes all CPU cores (using JRuby and Rubinius) • Websockets, messaging systems, your hugely successful blog
  29. 29. You don't have to choose between threaded and evented IO!
  30. 30. Let’s get distributed.
  31. 31. "I thought of objects being like biological cells and/or individual computers on a network, only able to communicate with messages" - Alan Kay
  32. 32. Guess who was really into distributed network objects?
  33. 33. NeXT experimented with distributed objects in the mid 90s. NeXT was way ahead of its time.
  34. 34. "Objects can message objects transparently that live on other machines over the network, and you don't have to worry about the networking gunk, and you don't have to worry about finding them, and you don't have to worry about anything. It's just as if you messaged an object that's right next door." - Steve Jobs
  35. 35. “Portable Distributed Objects”
  36. 36. https://github.com/celluloid/dcell • Objects talk over networks! • Uses 0MQ • Aware of eachothers’ existence • Distributed gossip protocol • Web UI • In the early stages, very promising
  37. 37. CODE EXAMPLES!
  38. 38. Help Us Build This!
  39. 39. Thanks! @kyledrake kyledrake.net

Notas do Editor

  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n

×