TorqueBox - Ruby na sterydach

68

description

 

Transcript of TorqueBox - Ruby na sterydach

Page 1: TorqueBox - Ruby na sterydach
Page 2: TorqueBox - Ruby na sterydach

TorqueBoxRuby na sterydach

Page 3: TorqueBox - Ruby na sterydach

Marek.

Page 4: TorqueBox - Ruby na sterydach
Page 5: TorqueBox - Ruby na sterydach
Page 6: TorqueBox - Ruby na sterydach
Page 7: TorqueBox - Ruby na sterydach
Page 8: TorqueBox - Ruby na sterydach
Page 9: TorqueBox - Ruby na sterydach

+

=

Page 10: TorqueBox - Ruby na sterydach
Page 11: TorqueBox - Ruby na sterydach

TorqueBox to klej pomiędzy JRuby a serwerem aplikacji

JBoss AS.

Page 12: TorqueBox - Ruby na sterydach

JRuby.

Page 13: TorqueBox - Ruby na sterydach

Prawdziwe wątki.

Page 14: TorqueBox - Ruby na sterydach

Bardzo szybkie środowisko.

Page 15: TorqueBox - Ruby na sterydach

Biblioteki Javy.

Page 16: TorqueBox - Ruby na sterydach

JBoss AS.

Page 17: TorqueBox - Ruby na sterydach

Serwer aplikacji Java EE (klastrowanie, web,

wiadomości, cache, etc)

Page 18: TorqueBox - Ruby na sterydach
Page 19: TorqueBox - Ruby na sterydach

Cel.

Page 20: TorqueBox - Ruby na sterydach

Rails / Sinatra / Rack

Pierwszorzędny

Page 21: TorqueBox - Ruby na sterydach

Usługi / Zadania / Wiadomości / Transakcje / Cache / WebSockets / HA

Drugorzędny

Page 22: TorqueBox - Ruby na sterydach

Web.

Page 23: TorqueBox - Ruby na sterydach

myapp/ config.ru myapp.rb torquebox.yml

Sinatra

Page 24: TorqueBox - Ruby na sterydach

myapp/ config/ torquebox.yml application.rb ... app/ views/ controllers/ models/ ...

Rails

Page 25: TorqueBox - Ruby na sterydach

Poka poka.

Page 26: TorqueBox - Ruby na sterydach

Nuda.

Page 27: TorqueBox - Ruby na sterydach

Usługi.

Page 28: TorqueBox - Ruby na sterydach

start()

...czas mija...

stop()

Gdy wykonujemy coś w tle przez jakiś czas, np. pobieranie danych z Twittera

Page 29: TorqueBox - Ruby na sterydach

class MyService def initialize(opts) end

def start end

def stop endend

app/services/my_service.rb

Page 30: TorqueBox - Ruby na sterydach

services: MyService: config: foo: bar abc: 1

MySingletonService: singleton: true

config/torquebox.yml

Page 31: TorqueBox - Ruby na sterydach

Jedna aktywna usługa w jednym czasie w klastrze.

singleton: true

Page 32: TorqueBox - Ruby na sterydach

Usługi aktywne na wszystkich węzłach klastra (domyślnie).

singleton: false

Page 33: TorqueBox - Ruby na sterydach

Zadania.

Page 34: TorqueBox - Ruby na sterydach

Co piątekW pierwszy dzień miesiącaCo 2 minuty

No, wiesz o co chodzi.

Gdy wykonujemy coś co jakiś czas.

Page 35: TorqueBox - Ruby na sterydach

class MyJob def run endend

app/jobs/my_job.rb

Page 36: TorqueBox - Ruby na sterydach

jobs: newsletter: job: MyJob cron: ‘0 0 0 1 * ?’ singleton: true

cache_cleaner: job: CacheCleanerJob cron: ‘5 * * * * ?’

config/torquebox.yml

Page 37: TorqueBox - Ruby na sterydach

Wiadomości.

Page 38: TorqueBox - Ruby na sterydach

JMS.

Page 39: TorqueBox - Ruby na sterydach
Page 40: TorqueBox - Ruby na sterydach

queues: /queues/foo: /queues/bar:

topics: /topics/foo: /topics/bar:

config/torquebox.yml

Page 41: TorqueBox - Ruby na sterydach

class MyController < ApplicationControllerinclude TorqueBox::Injectors

def index queue = inject(‘/queues/foo’) queue.publish(“Lecimy!”) end

end

app/controllers/my_controller.rb

Wysyłamy...

Page 42: TorqueBox - Ruby na sterydach

include TorqueBox::Messaging

class MyProcessor < MessageProcessor def initialize(opts) end

def on_message(body) # body == “Lecimy!” endend

app/processors/my_processor.rb

...i odbieramy

Page 43: TorqueBox - Ruby na sterydach

messaging: /queues/foo: MyProcessor: filter: "language = 'ruby'" concurrency: 3 config: foo: bar

config/torquebox.yml

Page 44: TorqueBox - Ruby na sterydach

Transakcje.

Page 45: TorqueBox - Ruby na sterydach

Kolejka

Temat

Baza danych

Cache

Kod

Page 46: TorqueBox - Ruby na sterydach

Dystrybuowane.(trudne słowo)

Sukces tylko wtedy gdy wszystko się powiedzie.

Page 47: TorqueBox - Ruby na sterydach

TorqueBox.transaction do User.create(:username => 'Kotori') TorqueBox.transaction do User.create(:username => 'Nemu') raise ActiveRecord::Rollback endend

Transakcje w AR?

Page 48: TorqueBox - Ruby na sterydach

TorqueBox.transaction do inject('/queues/foo').publish("blah")end

Transakcje gdziekolwiek?

Page 49: TorqueBox - Ruby na sterydach

Cache.

Page 50: TorqueBox - Ruby na sterydach

Infinispan.

Data Grid. Replikowalna, dystrybuowalna pamięć.

Page 51: TorqueBox - Ruby na sterydach

Zamiast memcached.

Page 52: TorqueBox - Ruby na sterydach

cache = TorqueBoxStore.new( :name => ‘foo’, :mode => :replicated)

cache.put(...)cache.get(...)

Page 53: TorqueBox - Ruby na sterydach

Wstrzykiwanie zasobów.

Page 54: TorqueBox - Ruby na sterydach

UsługiKolejki / tematyJava CDI

Page 55: TorqueBox - Ruby na sterydach

inject(‘/queues/foo’).publish(...)inject(‘/topics/bar’).publish(...)

Page 56: TorqueBox - Ruby na sterydach

package com.acme.blah;

@ApplicationScopedpublic class MyBean { public void fire() { ... }}

CDI

Page 57: TorqueBox - Ruby na sterydach

bean = inject(com.acme.blah.MyBean)bean.fire

Page 58: TorqueBox - Ruby na sterydach

Klastrowanie.

Page 59: TorqueBox - Ruby na sterydach

JBoss AS ma wbudowane wspacie dla klastrowania.

Page 60: TorqueBox - Ruby na sterydach

mod_cluster

Page 61: TorqueBox - Ruby na sterydach

Jeszcze nie wspomniałem o...

Page 62: TorqueBox - Ruby na sterydach

Backgroudables.

Page 63: TorqueBox - Ruby na sterydach

WebSockets.

Page 64: TorqueBox - Ruby na sterydach

Kilka słów o wydajności.

Page 67: TorqueBox - Ruby na sterydach

http://torquebox.org/http://github.com/torquebox

IRC: #torquebox on FreeNode

@torquebox

Page 68: TorqueBox - Ruby na sterydach

Dzięki.

Nie zapomnij o naklejkach!