TorqueBox - Ruby na sterydach

1,014 views
953 views

Published on

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
1,014
On SlideShare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
2
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

TorqueBox - Ruby na sterydach

  1. 1. TorqueBox Ruby na sterydach
  2. 2. Marek.
  3. 3. +=
  4. 4. TorqueBox to klejpomiędzy JRuby aserwerem aplikacji JBoss AS.
  5. 5. JRuby.
  6. 6. Prawdziwe wątki.
  7. 7. Bardzo szybkie środowisko.
  8. 8. Biblioteki Javy.
  9. 9. JBoss AS.
  10. 10. Serwer aplikacji Java EE (klastrowanie, web,wiadomości, cache, etc)
  11. 11. Cel.
  12. 12. PierwszorzędnyRails / Sinatra / Rack
  13. 13. Drugorzędny Usługi / Zadania /Wiadomości / Transakcje /Cache / WebSockets / HA
  14. 14. Web.
  15. 15. Sinatramyapp/ config.ru myapp.rb torquebox.yml
  16. 16. myapp/ config/ torquebox.yml Rails application.rb ... app/ views/ controllers/ models/ ...
  17. 17. Poka poka.
  18. 18. Nuda.
  19. 19. Usługi.
  20. 20. Gdy wykonujemy coś w tle przezstart() jakiś czas, np....czas mija... pobieranie danych z Twitterastop()
  21. 21. class MyService def initialize(opts) end def start end def stop endend app/services/my_service.rb
  22. 22. services: MyService: config: foo: bar abc: 1 MySingletonService: singleton: true config/torquebox.yml
  23. 23. singleton: true Jedna aktywna usługa wjednym czasie w klastrze.
  24. 24. singleton: false Usługi aktywne nawszystkich węzłachklastra (domyślnie).
  25. 25. Zadania.
  26. 26. Gdy wykonujemy coś co jakiś czas.Co piątekW pierwszy dzień miesiącaCo 2 minutyNo, wiesz o co chodzi.
  27. 27. class MyJob def run endend app/jobs/my_job.rb
  28. 28. jobs: newsletter: job: MyJob cron: ‘0 0 0 1 * ?’ singleton: true cache_cleaner: job: CacheCleanerJob cron: ‘5 * * * * ?’ config/torquebox.yml
  29. 29. Wiadomości.
  30. 30. JMS.
  31. 31. queues: /queues/foo: /queues/bar:topics: /topics/foo: /topics/bar: config/torquebox.yml
  32. 32. Wysyłamy...class MyController < ApplicationControllerinclude TorqueBox::Injectors def index queue = inject(‘/queues/foo’) queue.publish(“Lecimy!”) endend app/controllers/ my_controller.rb
  33. 33. ...i odbieramyinclude TorqueBox::Messagingclass MyProcessor < MessageProcessor def initialize(opts) end def on_message(body) # body == “Lecimy!” endend app/processors/ my_processor.rb
  34. 34. messaging: /queues/foo: MyProcessor: filter: "language = ruby" concurrency: 3 config: foo: bar config/torquebox.yml
  35. 35. Transakcje.
  36. 36. Kolejka TematKod Cache Baza danych
  37. 37. Dystrybuowane. (trudne słowo)Sukces tylko wtedy gdywszystko się powiedzie.
  38. 38. Transakcje w AR?TorqueBox.transaction do User.create(:username => Kotori) TorqueBox.transaction do User.create(:username => Nemu) raise ActiveRecord::Rollback endend
  39. 39. Transakcje gdziekolwiek?TorqueBox.transaction do inject(/queues/foo).publish("blah")end
  40. 40. Cache.
  41. 41. Infinispan.Data Grid. Replikowalna,dystrybuowalna pamięć.
  42. 42. Zamiast memcached.
  43. 43. cache = TorqueBoxStore.new( :name => ‘foo’, :mode => :replicated)cache.put(...)cache.get(...)
  44. 44. Wstrzykiwanie zasobów.
  45. 45. UsługiKolejki / tematyJava CDI
  46. 46. inject(‘/queues/foo’).publish(...)inject(‘/topics/bar’).publish(...)
  47. 47. CDIpackage com.acme.blah;@ApplicationScopedpublic class MyBean { public void fire() { ... }}
  48. 48. bean = inject(com.acme.blah.MyBean)bean.fire
  49. 49. Klastrowanie.
  50. 50. JBoss AS ma wbudowanewspacie dla klastrowania.
  51. 51. mod_cluster
  52. 52. Jeszcze niewspomniałem o...
  53. 53. Backgroudables.
  54. 54. WebSockets.
  55. 55. Kilka słów o wydajności.
  56. 56. http://torquebox.org/news/2011/10/06/torquebox-2x-performance/
  57. 57. http://torquebox.org/news/2011/10/06/torquebox-2x-performance/
  58. 58. http://torquebox.org/http://github.com/torqueboxIRC: #torquebox on FreeNode@torquebox
  59. 59. Dzięki.Nie zapomnij o naklejkach!

×