JavaCro'14 - ZeroMQ and Java(Script) – Mladen Čikara

Post on 29-Nov-2014

914 views 1 download

description

ZeroMQ is messaging framework that is aimed for use in scalable distributed and concurrent applications. (In 2011, CERN performed a study to unify middleware solutions used in managing CERN accelerators. In this study they compared CORBA, Ice, Thrift, ZeroMQ, YAMI4, RTI and AMQP, and in the end ZeroMQ showed the best results. Goal of this presentation is to show out why did ZeroMQ win, and what distinguishes ZeroMQ from other messaging solutions. With different examples we will show how to use ZeroMQ with Java on the server side and with JavaScript on the client side.

Transcript of JavaCro'14 - ZeroMQ and Java(Script) – Mladen Čikara

ZeroMQ i Java(Script)ZeroMQ i Java(Script)

Uvod

● Općenito o Message brokerima

● Po čemu se ZeroMQ razlikuje od ostalih

● Instalacija ZeroMQ-a● Instalacija ZeroMQ-a

● Primjeri u Javi i JavaScriptu

● Use case

● Demo

Izbaci uljeza

● ActiveMQ

● RabbitMQ

● HornetQ● HornetQ

● ZeroMQ

● WebSphere MQ

● BizTalk Server

Izbaci uljeza

● ActiveMQ

● RabbitMQ

● HornetQ● HornetQ

● ZeroMQ

● WebSphere MQ

● BizTalk Server

Message broker (1)

● Omogućava validaciju, transformacije i

usmjeravanje (routing) poruka

● Posredovanje u komunikaciji između različitih

aplikacija – Decoupling aplikacija

● Messaging patterns - utvrđeni obrasci za

razmjenu podataka među aplikacijama

Message broker (2)

Dodatne funkcionalnosti:

– Upravljanje

– Nadgledanje– Nadgledanje

Message broker (3)

Što je ZeroMQ? (1)

● Vrlo lightweight messaging sustav

● Zero -> bez brokera (ili što bliže tome)

● “More generally, “zero” refers to the culture of ● “More generally, “zero” refers to the culture of

minimalism that permeates the project. ”

● “Its sockets on steroids”

● Postojeći built-in patterni:

Što je ZeroMQ? (2)

● Request - Reply : remote procedure call ili task

distribution

● Publish - Subscribe : data distribution

● Pipeline : parallel task distribution

● Patterne se kreira kombiniranjem ZeroMQ

socketa

Što je ZeroMQ? (3)

● REQ - klijent koji šalje zahtjeve i očekuje

odgovore

● REP - servis koji prima zahtjeve i šalje odgovore

● DEALER - dijeli poruke grupi klijenata (round

robin)

● ROUTER - usmjerava poruke na određenog

klijenta

Što je ZeroMQ? (4)

● PUB - publisher koji distribuira podatke

● SUB - subscriber koji prima podatke od

publishera

● PUSH - šalje podatke svim prijavljenim

nodovima (round robin)

● PULL - prima podatke od nadređenih nodova

Što je ZeroMQ? (5)

● PAIR - može biti povezan samo s jednim

peerom. - inter-thread comunication

Usporedba ZeroMQ-a s AMQP-om

● AMQP nudi gotova rješenja na uobičajene

probleme

● ZeroMQ nudi alate za rješavanje tih problema

● ZeroMQ ne dolazi s postojećim brokerom već je

biblioteka funkcija od kojih developeri slože

custom brokera

Instalacija ZeroMQ-a (1)

Potrebne biblioteke:

– git

– libtools

– c++

Download:

– libzmq - ZeroMQ library

– jzmq - Java binding za ZeroMQ

Instalacija ZeroMQ-a (2)

● sudo ./autogen.sh

● sudo ./configure

● sudo make● sudo make

● sudo make install

U slučaju greške:

● sudo ldconfig

Publish - Subscribe demo (1)

Publish - Subscribe demo (2)

ZeroMQ i JavaScript

● ZmsSocket.js – ZeroMQ binding za JavaScript

● Java script ne podržava raw TCP veze → Flash

bridge

Ograničenja

– Maksimalna veličina poruke 2^32 – 10 byteova

– Nisu podržane binarne poruke

ZeroMQ i JavaScript (2)

Use Case (1)

TelefonMreža2

3

1

Aplikacija

Centrala

3

1

Use Case (2)

TelefonMreža2

Aplikacija

Centrala

2

DEMODEMO

Pitanja?

mladen.cikara@gmail.com

github.com/McNullty/zeromq-examples

http://www.podsjetnik.hr/