TorqueBox - Marek Goldmann...JBoss AS. JRuby. Prawdziwe wątki. Bardzo szybkie środowisko....

68

Transcript of TorqueBox - Marek Goldmann...JBoss AS. JRuby. Prawdziwe wątki. Bardzo szybkie środowisko....

Page 1: TorqueBox - Marek Goldmann...JBoss AS. JRuby. Prawdziwe wątki. Bardzo szybkie środowisko. Biblioteki Javy. JBoss AS. Serwer aplikacji Java EE (klastrowanie, web, wiadomości, cache,
Page 2: TorqueBox - Marek Goldmann...JBoss AS. JRuby. Prawdziwe wątki. Bardzo szybkie środowisko. Biblioteki Javy. JBoss AS. Serwer aplikacji Java EE (klastrowanie, web, wiadomości, cache,

TorqueBoxRuby na sterydach

Page 3: TorqueBox - Marek Goldmann...JBoss AS. JRuby. Prawdziwe wątki. Bardzo szybkie środowisko. Biblioteki Javy. JBoss AS. Serwer aplikacji Java EE (klastrowanie, web, wiadomości, cache,

Marek.

Page 4: TorqueBox - Marek Goldmann...JBoss AS. JRuby. Prawdziwe wątki. Bardzo szybkie środowisko. Biblioteki Javy. JBoss AS. Serwer aplikacji Java EE (klastrowanie, web, wiadomości, cache,
Page 5: TorqueBox - Marek Goldmann...JBoss AS. JRuby. Prawdziwe wątki. Bardzo szybkie środowisko. Biblioteki Javy. JBoss AS. Serwer aplikacji Java EE (klastrowanie, web, wiadomości, cache,
Page 6: TorqueBox - Marek Goldmann...JBoss AS. JRuby. Prawdziwe wątki. Bardzo szybkie środowisko. Biblioteki Javy. JBoss AS. Serwer aplikacji Java EE (klastrowanie, web, wiadomości, cache,
Page 7: TorqueBox - Marek Goldmann...JBoss AS. JRuby. Prawdziwe wątki. Bardzo szybkie środowisko. Biblioteki Javy. JBoss AS. Serwer aplikacji Java EE (klastrowanie, web, wiadomości, cache,
Page 8: TorqueBox - Marek Goldmann...JBoss AS. JRuby. Prawdziwe wątki. Bardzo szybkie środowisko. Biblioteki Javy. JBoss AS. Serwer aplikacji Java EE (klastrowanie, web, wiadomości, cache,
Page 9: TorqueBox - Marek Goldmann...JBoss AS. JRuby. Prawdziwe wątki. Bardzo szybkie środowisko. Biblioteki Javy. JBoss AS. Serwer aplikacji Java EE (klastrowanie, web, wiadomości, cache,

+

=

Page 10: TorqueBox - Marek Goldmann...JBoss AS. JRuby. Prawdziwe wątki. Bardzo szybkie środowisko. Biblioteki Javy. JBoss AS. Serwer aplikacji Java EE (klastrowanie, web, wiadomości, cache,
Page 11: TorqueBox - Marek Goldmann...JBoss AS. JRuby. Prawdziwe wątki. Bardzo szybkie środowisko. Biblioteki Javy. JBoss AS. Serwer aplikacji Java EE (klastrowanie, web, wiadomości, cache,

TorqueBox to klej pomiędzy JRuby a serwerem aplikacji

JBoss AS.

Page 12: TorqueBox - Marek Goldmann...JBoss AS. JRuby. Prawdziwe wątki. Bardzo szybkie środowisko. Biblioteki Javy. JBoss AS. Serwer aplikacji Java EE (klastrowanie, web, wiadomości, cache,

JRuby.

Page 13: TorqueBox - Marek Goldmann...JBoss AS. JRuby. Prawdziwe wątki. Bardzo szybkie środowisko. Biblioteki Javy. JBoss AS. Serwer aplikacji Java EE (klastrowanie, web, wiadomości, cache,

Prawdziwe wątki.

Page 14: TorqueBox - Marek Goldmann...JBoss AS. JRuby. Prawdziwe wątki. Bardzo szybkie środowisko. Biblioteki Javy. JBoss AS. Serwer aplikacji Java EE (klastrowanie, web, wiadomości, cache,

Bardzo szybkie środowisko.

Page 15: TorqueBox - Marek Goldmann...JBoss AS. JRuby. Prawdziwe wątki. Bardzo szybkie środowisko. Biblioteki Javy. JBoss AS. Serwer aplikacji Java EE (klastrowanie, web, wiadomości, cache,

Biblioteki Javy.

Page 16: TorqueBox - Marek Goldmann...JBoss AS. JRuby. Prawdziwe wątki. Bardzo szybkie środowisko. Biblioteki Javy. JBoss AS. Serwer aplikacji Java EE (klastrowanie, web, wiadomości, cache,

JBoss AS.

Page 17: TorqueBox - Marek Goldmann...JBoss AS. JRuby. Prawdziwe wątki. Bardzo szybkie środowisko. Biblioteki Javy. JBoss AS. Serwer aplikacji Java EE (klastrowanie, web, wiadomości, cache,

Serwer aplikacji Java EE (klastrowanie, web,

wiadomości, cache, etc)

Page 18: TorqueBox - Marek Goldmann...JBoss AS. JRuby. Prawdziwe wątki. Bardzo szybkie środowisko. Biblioteki Javy. JBoss AS. Serwer aplikacji Java EE (klastrowanie, web, wiadomości, cache,
Page 19: TorqueBox - Marek Goldmann...JBoss AS. JRuby. Prawdziwe wątki. Bardzo szybkie środowisko. Biblioteki Javy. JBoss AS. Serwer aplikacji Java EE (klastrowanie, web, wiadomości, cache,

Cel.

Page 20: TorqueBox - Marek Goldmann...JBoss AS. JRuby. Prawdziwe wątki. Bardzo szybkie środowisko. Biblioteki Javy. JBoss AS. Serwer aplikacji Java EE (klastrowanie, web, wiadomości, cache,

Rails / Sinatra / Rack

Pierwszorzędny

Page 21: TorqueBox - Marek Goldmann...JBoss AS. JRuby. Prawdziwe wątki. Bardzo szybkie środowisko. Biblioteki Javy. JBoss AS. Serwer aplikacji Java EE (klastrowanie, web, wiadomości, cache,

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

Drugorzędny

Page 22: TorqueBox - Marek Goldmann...JBoss AS. JRuby. Prawdziwe wątki. Bardzo szybkie środowisko. Biblioteki Javy. JBoss AS. Serwer aplikacji Java EE (klastrowanie, web, wiadomości, cache,

Web.

Page 23: TorqueBox - Marek Goldmann...JBoss AS. JRuby. Prawdziwe wątki. Bardzo szybkie środowisko. Biblioteki Javy. JBoss AS. Serwer aplikacji Java EE (klastrowanie, web, wiadomości, cache,

myapp/ config.ru myapp.rb torquebox.yml

Sinatra

Page 24: TorqueBox - Marek Goldmann...JBoss AS. JRuby. Prawdziwe wątki. Bardzo szybkie środowisko. Biblioteki Javy. JBoss AS. Serwer aplikacji Java EE (klastrowanie, web, wiadomości, cache,

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

Rails

Page 25: TorqueBox - Marek Goldmann...JBoss AS. JRuby. Prawdziwe wątki. Bardzo szybkie środowisko. Biblioteki Javy. JBoss AS. Serwer aplikacji Java EE (klastrowanie, web, wiadomości, cache,

Poka poka.

Page 26: TorqueBox - Marek Goldmann...JBoss AS. JRuby. Prawdziwe wątki. Bardzo szybkie środowisko. Biblioteki Javy. JBoss AS. Serwer aplikacji Java EE (klastrowanie, web, wiadomości, cache,

Nuda.

Page 27: TorqueBox - Marek Goldmann...JBoss AS. JRuby. Prawdziwe wątki. Bardzo szybkie środowisko. Biblioteki Javy. JBoss AS. Serwer aplikacji Java EE (klastrowanie, web, wiadomości, cache,

Usługi.

Page 28: TorqueBox - Marek Goldmann...JBoss AS. JRuby. Prawdziwe wątki. Bardzo szybkie środowisko. Biblioteki Javy. JBoss AS. Serwer aplikacji Java EE (klastrowanie, web, wiadomości, cache,

start()

...czas mija...

stop()

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

Page 29: TorqueBox - Marek Goldmann...JBoss AS. JRuby. Prawdziwe wątki. Bardzo szybkie środowisko. Biblioteki Javy. JBoss AS. Serwer aplikacji Java EE (klastrowanie, web, wiadomości, cache,

class MyService def initialize(opts) end

def start end

def stop endend

app/services/my_service.rb

Page 30: TorqueBox - Marek Goldmann...JBoss AS. JRuby. Prawdziwe wątki. Bardzo szybkie środowisko. Biblioteki Javy. JBoss AS. Serwer aplikacji Java EE (klastrowanie, web, wiadomości, cache,

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

MySingletonService: singleton: true

config/torquebox.yml

Page 31: TorqueBox - Marek Goldmann...JBoss AS. JRuby. Prawdziwe wątki. Bardzo szybkie środowisko. Biblioteki Javy. JBoss AS. Serwer aplikacji Java EE (klastrowanie, web, wiadomości, cache,

Jedna aktywna usługa w jednym czasie w klastrze.

singleton: true

Page 32: TorqueBox - Marek Goldmann...JBoss AS. JRuby. Prawdziwe wątki. Bardzo szybkie środowisko. Biblioteki Javy. JBoss AS. Serwer aplikacji Java EE (klastrowanie, web, wiadomości, cache,

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

singleton: false

Page 33: TorqueBox - Marek Goldmann...JBoss AS. JRuby. Prawdziwe wątki. Bardzo szybkie środowisko. Biblioteki Javy. JBoss AS. Serwer aplikacji Java EE (klastrowanie, web, wiadomości, cache,

Zadania.

Page 34: TorqueBox - Marek Goldmann...JBoss AS. JRuby. Prawdziwe wątki. Bardzo szybkie środowisko. Biblioteki Javy. JBoss AS. Serwer aplikacji Java EE (klastrowanie, web, wiadomości, cache,

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

No, wiesz o co chodzi.

Gdy wykonujemy coś co jakiś czas.

Page 35: TorqueBox - Marek Goldmann...JBoss AS. JRuby. Prawdziwe wątki. Bardzo szybkie środowisko. Biblioteki Javy. JBoss AS. Serwer aplikacji Java EE (klastrowanie, web, wiadomości, cache,

class MyJob def run endend

app/jobs/my_job.rb

Page 36: TorqueBox - Marek Goldmann...JBoss AS. JRuby. Prawdziwe wątki. Bardzo szybkie środowisko. Biblioteki Javy. JBoss AS. Serwer aplikacji Java EE (klastrowanie, web, wiadomości, cache,

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

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

config/torquebox.yml

Page 37: TorqueBox - Marek Goldmann...JBoss AS. JRuby. Prawdziwe wątki. Bardzo szybkie środowisko. Biblioteki Javy. JBoss AS. Serwer aplikacji Java EE (klastrowanie, web, wiadomości, cache,

Wiadomości.

Page 38: TorqueBox - Marek Goldmann...JBoss AS. JRuby. Prawdziwe wątki. Bardzo szybkie środowisko. Biblioteki Javy. JBoss AS. Serwer aplikacji Java EE (klastrowanie, web, wiadomości, cache,

JMS.

Page 39: TorqueBox - Marek Goldmann...JBoss AS. JRuby. Prawdziwe wątki. Bardzo szybkie środowisko. Biblioteki Javy. JBoss AS. Serwer aplikacji Java EE (klastrowanie, web, wiadomości, cache,
Page 40: TorqueBox - Marek Goldmann...JBoss AS. JRuby. Prawdziwe wątki. Bardzo szybkie środowisko. Biblioteki Javy. JBoss AS. Serwer aplikacji Java EE (klastrowanie, web, wiadomości, cache,

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

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

config/torquebox.yml

Page 41: TorqueBox - Marek Goldmann...JBoss AS. JRuby. Prawdziwe wątki. Bardzo szybkie środowisko. Biblioteki Javy. JBoss AS. Serwer aplikacji Java EE (klastrowanie, web, wiadomości, cache,

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 - Marek Goldmann...JBoss AS. JRuby. Prawdziwe wątki. Bardzo szybkie środowisko. Biblioteki Javy. JBoss AS. Serwer aplikacji Java EE (klastrowanie, web, wiadomości, cache,

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 - Marek Goldmann...JBoss AS. JRuby. Prawdziwe wątki. Bardzo szybkie środowisko. Biblioteki Javy. JBoss AS. Serwer aplikacji Java EE (klastrowanie, web, wiadomości, cache,

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

config/torquebox.yml

Page 44: TorqueBox - Marek Goldmann...JBoss AS. JRuby. Prawdziwe wątki. Bardzo szybkie środowisko. Biblioteki Javy. JBoss AS. Serwer aplikacji Java EE (klastrowanie, web, wiadomości, cache,

Transakcje.

Page 45: TorqueBox - Marek Goldmann...JBoss AS. JRuby. Prawdziwe wątki. Bardzo szybkie środowisko. Biblioteki Javy. JBoss AS. Serwer aplikacji Java EE (klastrowanie, web, wiadomości, cache,

Kolejka

Temat

Baza danych

Cache

Kod

Page 46: TorqueBox - Marek Goldmann...JBoss AS. JRuby. Prawdziwe wątki. Bardzo szybkie środowisko. Biblioteki Javy. JBoss AS. Serwer aplikacji Java EE (klastrowanie, web, wiadomości, cache,

Dystrybuowane.(trudne słowo)

Sukces tylko wtedy gdy wszystko się powiedzie.

Page 47: TorqueBox - Marek Goldmann...JBoss AS. JRuby. Prawdziwe wątki. Bardzo szybkie środowisko. Biblioteki Javy. JBoss AS. Serwer aplikacji Java EE (klastrowanie, web, wiadomości, cache,

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

Transakcje w AR?

Page 48: TorqueBox - Marek Goldmann...JBoss AS. JRuby. Prawdziwe wątki. Bardzo szybkie środowisko. Biblioteki Javy. JBoss AS. Serwer aplikacji Java EE (klastrowanie, web, wiadomości, cache,

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

Transakcje gdziekolwiek?

Page 49: TorqueBox - Marek Goldmann...JBoss AS. JRuby. Prawdziwe wątki. Bardzo szybkie środowisko. Biblioteki Javy. JBoss AS. Serwer aplikacji Java EE (klastrowanie, web, wiadomości, cache,

Cache.

Page 50: TorqueBox - Marek Goldmann...JBoss AS. JRuby. Prawdziwe wątki. Bardzo szybkie środowisko. Biblioteki Javy. JBoss AS. Serwer aplikacji Java EE (klastrowanie, web, wiadomości, cache,

Infinispan.

Data Grid. Replikowalna, dystrybuowalna pamięć.

Page 51: TorqueBox - Marek Goldmann...JBoss AS. JRuby. Prawdziwe wątki. Bardzo szybkie środowisko. Biblioteki Javy. JBoss AS. Serwer aplikacji Java EE (klastrowanie, web, wiadomości, cache,

Zamiast memcached.

Page 52: TorqueBox - Marek Goldmann...JBoss AS. JRuby. Prawdziwe wątki. Bardzo szybkie środowisko. Biblioteki Javy. JBoss AS. Serwer aplikacji Java EE (klastrowanie, web, wiadomości, cache,

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

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

Page 53: TorqueBox - Marek Goldmann...JBoss AS. JRuby. Prawdziwe wątki. Bardzo szybkie środowisko. Biblioteki Javy. JBoss AS. Serwer aplikacji Java EE (klastrowanie, web, wiadomości, cache,

Wstrzykiwanie zasobów.

Page 54: TorqueBox - Marek Goldmann...JBoss AS. JRuby. Prawdziwe wątki. Bardzo szybkie środowisko. Biblioteki Javy. JBoss AS. Serwer aplikacji Java EE (klastrowanie, web, wiadomości, cache,

UsługiKolejki / tematyJava CDI

Page 55: TorqueBox - Marek Goldmann...JBoss AS. JRuby. Prawdziwe wątki. Bardzo szybkie środowisko. Biblioteki Javy. JBoss AS. Serwer aplikacji Java EE (klastrowanie, web, wiadomości, cache,

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

Page 56: TorqueBox - Marek Goldmann...JBoss AS. JRuby. Prawdziwe wątki. Bardzo szybkie środowisko. Biblioteki Javy. JBoss AS. Serwer aplikacji Java EE (klastrowanie, web, wiadomości, cache,

package com.acme.blah;

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

CDI

Page 57: TorqueBox - Marek Goldmann...JBoss AS. JRuby. Prawdziwe wątki. Bardzo szybkie środowisko. Biblioteki Javy. JBoss AS. Serwer aplikacji Java EE (klastrowanie, web, wiadomości, cache,

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

Page 58: TorqueBox - Marek Goldmann...JBoss AS. JRuby. Prawdziwe wątki. Bardzo szybkie środowisko. Biblioteki Javy. JBoss AS. Serwer aplikacji Java EE (klastrowanie, web, wiadomości, cache,

Klastrowanie.

Page 59: TorqueBox - Marek Goldmann...JBoss AS. JRuby. Prawdziwe wątki. Bardzo szybkie środowisko. Biblioteki Javy. JBoss AS. Serwer aplikacji Java EE (klastrowanie, web, wiadomości, cache,

JBoss AS ma wbudowane wspacie dla klastrowania.

Page 60: TorqueBox - Marek Goldmann...JBoss AS. JRuby. Prawdziwe wątki. Bardzo szybkie środowisko. Biblioteki Javy. JBoss AS. Serwer aplikacji Java EE (klastrowanie, web, wiadomości, cache,

mod_cluster

Page 61: TorqueBox - Marek Goldmann...JBoss AS. JRuby. Prawdziwe wątki. Bardzo szybkie środowisko. Biblioteki Javy. JBoss AS. Serwer aplikacji Java EE (klastrowanie, web, wiadomości, cache,

Jeszcze nie wspomniałem o...

Page 62: TorqueBox - Marek Goldmann...JBoss AS. JRuby. Prawdziwe wątki. Bardzo szybkie środowisko. Biblioteki Javy. JBoss AS. Serwer aplikacji Java EE (klastrowanie, web, wiadomości, cache,

Backgroudables.

Page 63: TorqueBox - Marek Goldmann...JBoss AS. JRuby. Prawdziwe wątki. Bardzo szybkie środowisko. Biblioteki Javy. JBoss AS. Serwer aplikacji Java EE (klastrowanie, web, wiadomości, cache,

WebSockets.

Page 64: TorqueBox - Marek Goldmann...JBoss AS. JRuby. Prawdziwe wątki. Bardzo szybkie środowisko. Biblioteki Javy. JBoss AS. Serwer aplikacji Java EE (klastrowanie, web, wiadomości, cache,

Kilka słów o wydajności.

Page 67: TorqueBox - Marek Goldmann...JBoss AS. JRuby. Prawdziwe wątki. Bardzo szybkie środowisko. Biblioteki Javy. JBoss AS. Serwer aplikacji Java EE (klastrowanie, web, wiadomości, cache,

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

IRC: #torquebox on FreeNode

@torquebox

Page 68: TorqueBox - Marek Goldmann...JBoss AS. JRuby. Prawdziwe wątki. Bardzo szybkie środowisko. Biblioteki Javy. JBoss AS. Serwer aplikacji Java EE (klastrowanie, web, wiadomości, cache,

Dzięki.

Nie zapomnij o naklejkach!