EventMachine

17
EventMachine Yes, that’s NodeJS in Ruby Jonathan Weiss 02.07.2010

Transcript of EventMachine

EventMachine Yes, that’s NodeJS in Ruby

Jonathan Weiss 02.07.2010

EventMachine

„Event-driven I/O using the reactor pattern“

http://rubyeventmachine.com/

2

Goals

Scalable and performant but low-level I/O library

API that removes threaded complexety

3

Install

$ sudo gem install eventmachine

Works with Ruby, Rubinius, and JRuby

4

Use EventMachine

$ sudo gem install eventmachine

Works with Ruby, Rubinius, and JRuby

5

Echo Server

$ sudo gem install eventmachine

Works with Ruby, Rubinius, and JRuby

6

Low Level HTTP Client

$ sudo gem install eventmachine

Works with Ruby, Rubinius, and JRuby

7

EM::HttpRequest

$ sudo gem install eventmachine

Works with Ruby, Rubinius, and JRuby

8

Simple Timer

$ sudo gem install eventmachine

Works with Ruby, Rubinius, and JRuby

9

Simple Timer

$ sudo gem install eventmachine

Works with Ruby, Rubinius, and JRuby

10

Protocol Support

TCP (+ SSL)

HTTP(s) / WebSocket

Memcached

SASLauth

Postgres3

SMTP

Sock4

Stomp

11

FileWatcher

Timer

PeriodicTimer

ProcessWatch

SpawnedProcess

Queue

Higher Level APIs on top

AMQP

Nanite

MySQL

DNS

Redis

MongoDB

HTTPRequest

WebSocket

Amazon S3 12

Happening: S3 + EventMachine

$ sudo gem install eventmachine

Works with Ruby, Rubinius, and JRuby

13

Why you want async:

Uploading 100 x 2 MB files:

RightAWS vs. Happening

10min vs. 5:40min

14

EventMachine vs. NodeJS

15

EventMachine NodeJS

Engine Ruby V8

Available Libraries All Ruby libs, gems, … Only NodeJS libs

Possibility to block YES NO

Coding Style Callbacks, Procedural with fibers

Callbacks

EM::Synchrony – 1.9 Fibers

$ sudo gem install eventmachine

Works with Ruby, Rubinius, and JRuby

16

© Peritor GmbH - Alle Rechte vorbehalten

Peritor GmbH Blücherstr. 22, Hof III Aufgang 6 10961 Berlin

Tel.: +49 (0)30 69 20 09 84 0 Fax: +49 (0)30 69 20 09 84 9

Internet: www.peritor.com E-Mail: [email protected]

Q&A