Asynchronous data processing

Post on 14-Apr-2017

439 views 0 download

transcript

A S Y N C H R O N O U S D ATA P R O C E S S I N G

Andrea Giuliano@bit_shark

B u l g a r i a P H P CONFERENCESeptember 27th, 2015

Andrea Giuliano@bit_shark

$WHOAMI

COMMUNICATION

SYNCHRONOUS COMMUNICATION

time

system A

system B

Request

Response

blocked

Pros Cons

• easy to reason about• immediate feedback

• client can get stuck• impractical in low latency env

SYNCHRONOUS COMMUNICATION

ASYNCHRONOUS COMMUNICATION

time

system A

system B

Request

• useful for long-running jobs• systems decoupled• scales well (event-based)

• additional system requirements

ASYNCHRONOUS COMMUNICATION

Pros Cons

INTEROPERABILITY

ADVANCED MESSAGE QUEUING PROTOCOL

• message orientation

• queuing

• routing

• reliability

• security

P R O D U C E R C O N S U M E R

Produce Consumes

B R O K E R

ENTITIES INVOLVED

P R O D U C E R C O N S U M E R

Produce

Exchange

Consumes

B R O K E R

THE BROKER

P R O D U C E R C O N S U M E R

Produce

Exchange

Routes

Consumes

B R O K E R

THE BROKER

P R O D U C E R C O N S U M E R

Produce

Exchange Queue

Routes

Consumes

B R O K E R

THE BROKER

MESSAGING PATTERNS

{ "require": { "videlalvaro/php-amqplib": "@stable", ... }}

$ composer.phar install

PRODUCER/CONSUMER

P R O D U C E R C O N S U M E R

QUEUE

PRODUCER/CONSUMER

PRODUCING MESSAGES

PRODUCING MESSAGES

PRODUCING MESSAGES

PRODUCING MESSAGES

CONSUMING MESSAGES

CONSUMING MESSAGES

CONSUMING MESSAGES

SCALING UP

P R O D U C E R

C O N S U M E RQUEUE

C O N S U M E R

CONSUMERS CAN DIE

MESSAGE ACKNOWLEDGEMENT

MESSAGE ACKS

switch on acks

send ack

QOS POLICY

C O N S U M E R

C O N S U M E R

ROUND ROBIN DISPATCHING

C O N S U M E R

C O N S U M E R

ROUND ROBIN DISPATCHING

C O N S U M E R

C O N S U M E R

ROUND ROBIN DISPATCHING

C O N S U M E R

C O N S U M E R

ROUND ROBIN DISPATCHING

!

FAIR DISPATCHING

C O N S U M E R

C O N S U M E R

FAIR DISPATCHING

C O N S U M E R

C O N S U M E R

FAIR DISPATCHING

C O N S U M E R

C O N S U M E R

FAIR DISPATCHING

C O N S U M E R

C O N S U M E R

ack

FAIR DISPATCHING

C O N S U M E R

C O N S U M E R

FAIR DISPATCHING

BROKER CAN DIE

DURABILITY

DURABILITY

declare the queue persistent

PUBLISH/SUBSCRIBE

PUBLISH/SUBSCRIBE

P U B L I S H E R

S U B S C R I B E R

QUEUE

S U B S C R I B E R S U B S C R I B E R

PUBLISH/SUBSCRIBE

M A I L S E R V I C E

A U T H S E R V I C E

C O U P O N S E R V I C E

B R O K E R

tell me when a user is created

tell me when a user is created

tell me when a user is created

PUBLISH/SUBSCRIBE

M A I L S E R V I C E

A U T H S E R V I C E

C O U P O N S E R V I C E

U S E R S E R V I C E

B R O K E R

username: agiulianopassword: ******mail: ***@gmail.com

UserCreated

PUBLISH/SUBSCRIBE

M A I L S E R V I C E

A U T H S E R V I C E

C O U P O N S E R V I C E

B R O K E R

UserCreated

UserCreated

UserCreated

PUBLISH/SUBSCRIBEU S E R

S E R V I C E

B R O K E R

Use

rCre

ated

PUBLISH/SUBSCRIBE

M A I L S E R V I C E

B R O K E R

tell

me

whe

n a

user

is c

reat

ed

PUBLISH/SUBSCRIBEU

serC

reat

ed

M A I L S E R V I C E

B R O K E R

ROUTING

ROUTING

M A I L S E R V I C E

A U T H S E R V I C E

C O U P O N S E R V I C E

B R O K E R

[UserCreated, UserUpdated]

UserCreated

UserCreated

ROUTINGU S E R

S E R V I C E

B R O K E R

Use

rUpd

ated

routing key: updated

ROUTING

M A I L S E R V I C E

B R O K E R

routing keys: [created, updated]

ROUTING

M A I L S E R V I C E

B R O K E R

routing keys: [created, updated]

TOPIC

TOPIC

M A I L S E R V I C E

A U T H S E R V I C E

C O U P O N S E R V I C E

B R O K E R

[user. *]

[user. created][user. created, *.purchased]

TOPIC

TOPIC

M A I L S E R V I C E

A U T H S E R V I C E

C O U P O N S E R V I C E

B R O K E R

[user. *]

[user. created]

[user. created, *.purchased]

U S E R S E R V I C E

<user. created>

TOPIC

M A I L S E R V I C E

A U T H S E R V I C E

C O U P O N S E R V I C E

B R O K E R

[user. *]

[user. created]

[user. created, *.purchased]

U S E R S E R V I C E

<user. created>

TOPIC

M A I L S E R V I C E

A U T H S E R V I C E

C O U P O N S E R V I C E

B R O K E R

[user. *]

[user. created]

[user. created, *.purchased]

U S E R S E R V I C E

<user. updated>

TOPIC

M A I L S E R V I C E

A U T H S E R V I C E

C O U P O N S E R V I C E

B R O K E R

[user. *]

[user. created]

[user. created, *.purchased]

U S E R S E R V I C E

<user. updated>

TOPIC

M A I L S E R V I C E

A U T H S E R V I C E

C O U P O N S E R V I C E

B R O K E R

[user. *]

[user. created]

[user. created, *.purchased]

S T O R E S E R V I C E

<item.purchased>

TOPIC

M A I L S E R V I C E

A U T H S E R V I C E

C O U P O N S E R V I C E

B R O K E R

[user. *]

[user. created]

[user. created, *.purchased]

S T O R E S E R V I C E

<item.purchased>

TOPIC

M A I L S E R V I C E

A U T H S E R V I C E

C O U P O N S E R V I C E

B R O K E R

[user. *]

[user. created]

[user. created, *.purchased]

S T O R E S E R V I C E

<item.created>

TOPIC

M A I L S E R V I C E

A U T H S E R V I C E

C O U P O N S E R V I C E

B R O K E R

[user. *]

[user. created]

[user. created, *.purchased]

S T O R E S E R V I C E

<item.created>

SUMMARY

PERFORMANCE

DECOUPLED SYSTEM

INTEROPERABILITY

SCALABILITY

joind.in/14878Please rate the talk

joind.in/14878

CREDITS• www.flickr.com/photos/rayofsun/9401226342• www.flickr.com/photos/kalexanderson/6231391820• www.flickr.com/photos/dhammza/2891991931• www.flickr.com/photos/kevlewis/15372562472• www.flickr.com/photos/hohumhobo/6349729535• www.flickr.com/photos/107346206• www.flickr.com/photos/berlin_steve/8414515260• www.flickr.com/photos/s3a/4816966416• www.flickr.com/photos/thatguyfromcchs08/2300190277• www.flickr.com/photos/toniblay/52445415• www.flickr.com/photos/bobsfever/8226802321• www.flickr.com/photos/activars/6590201161• www.flickr.com/photos/michaeljzealot/6485009571