+ All Categories
Home > Technology > Asynchronous data processing

Asynchronous data processing

Date post: 14-Apr-2017
Category:
Upload: agiuliano
View: 439 times
Download: 0 times
Share this document with a friend
74
ASYNCHRONOUS DATA PROCESSING Andrea Giuliano @bit_shark Bulgaria PHP CONFERENCE September 27th, 2015
Transcript
Page 1: Asynchronous data processing

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

Page 2: Asynchronous data processing

Andrea Giuliano@bit_shark

$WHOAMI

Page 3: Asynchronous data processing

COMMUNICATION

Page 4: Asynchronous data processing

SYNCHRONOUS COMMUNICATION

time

system A

system B

Request

Response

blocked

Page 5: Asynchronous data processing

Pros Cons

• easy to reason about• immediate feedback

• client can get stuck• impractical in low latency env

SYNCHRONOUS COMMUNICATION

Page 6: Asynchronous data processing

ASYNCHRONOUS COMMUNICATION

time

system A

system B

Request

Page 7: Asynchronous data processing

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

• additional system requirements

ASYNCHRONOUS COMMUNICATION

Pros Cons

Page 8: Asynchronous data processing

INTEROPERABILITY

Page 9: Asynchronous data processing

ADVANCED MESSAGE QUEUING PROTOCOL

• message orientation

• queuing

• routing

• reliability

• security

Page 10: Asynchronous data processing

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

Page 11: Asynchronous data processing

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

Page 12: Asynchronous data processing

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

Page 13: Asynchronous data processing

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

Page 14: Asynchronous data processing

MESSAGING PATTERNS

Page 15: Asynchronous data processing

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

$ composer.phar install

Page 16: Asynchronous data processing

PRODUCER/CONSUMER

Page 17: Asynchronous data processing

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

QUEUE

PRODUCER/CONSUMER

Page 18: Asynchronous data processing

PRODUCING MESSAGES

Page 19: Asynchronous data processing

PRODUCING MESSAGES

Page 20: Asynchronous data processing

PRODUCING MESSAGES

Page 21: Asynchronous data processing

PRODUCING MESSAGES

Page 22: Asynchronous data processing

CONSUMING MESSAGES

Page 23: Asynchronous data processing

CONSUMING MESSAGES

Page 24: Asynchronous data processing

CONSUMING MESSAGES

Page 25: Asynchronous data processing

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

Page 26: Asynchronous data processing

CONSUMERS CAN DIE

Page 27: Asynchronous data processing

MESSAGE ACKNOWLEDGEMENT

Page 28: Asynchronous data processing

MESSAGE ACKS

switch on acks

send ack

Page 29: Asynchronous data processing

QOS POLICY

Page 30: Asynchronous data processing

C O N S U M E R

C O N S U M E R

ROUND ROBIN DISPATCHING

Page 31: Asynchronous data processing

C O N S U M E R

C O N S U M E R

ROUND ROBIN DISPATCHING

Page 32: Asynchronous data processing

C O N S U M E R

C O N S U M E R

ROUND ROBIN DISPATCHING

Page 33: Asynchronous data processing

C O N S U M E R

C O N S U M E R

ROUND ROBIN DISPATCHING

!

Page 34: Asynchronous data processing

FAIR DISPATCHING

C O N S U M E R

C O N S U M E R

Page 35: Asynchronous data processing

FAIR DISPATCHING

C O N S U M E R

C O N S U M E R

Page 36: Asynchronous data processing

FAIR DISPATCHING

C O N S U M E R

C O N S U M E R

Page 37: Asynchronous data processing

FAIR DISPATCHING

C O N S U M E R

C O N S U M E R

ack

Page 38: Asynchronous data processing

FAIR DISPATCHING

C O N S U M E R

C O N S U M E R

Page 39: Asynchronous data processing

FAIR DISPATCHING

Page 40: Asynchronous data processing

BROKER CAN DIE

Page 41: Asynchronous data processing

DURABILITY

Page 42: Asynchronous data processing

DURABILITY

declare the queue persistent

Page 43: Asynchronous data processing

PUBLISH/SUBSCRIBE

Page 44: Asynchronous data processing

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

Page 45: Asynchronous data processing

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

Page 46: Asynchronous data processing

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

Page 47: Asynchronous data processing

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

Page 48: Asynchronous data processing

PUBLISH/SUBSCRIBEU S E R

S E R V I C E

B R O K E R

Use

rCre

ated

Page 49: Asynchronous data processing

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

Page 50: Asynchronous data processing

PUBLISH/SUBSCRIBEU

serC

reat

ed

M A I L S E R V I C E

B R O K E R

Page 51: Asynchronous data processing

ROUTING

Page 52: Asynchronous data processing

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

Page 53: Asynchronous data processing

ROUTINGU S E R

S E R V I C E

B R O K E R

Use

rUpd

ated

routing key: updated

Page 54: Asynchronous data processing

ROUTING

M A I L S E R V I C E

B R O K E R

routing keys: [created, updated]

Page 55: Asynchronous data processing

ROUTING

M A I L S E R V I C E

B R O K E R

routing keys: [created, updated]

Page 56: Asynchronous data processing

TOPIC

Page 57: Asynchronous data processing

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]

Page 58: Asynchronous data processing

TOPIC

Page 59: Asynchronous data processing

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>

Page 60: Asynchronous data processing

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>

Page 61: Asynchronous data processing

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>

Page 62: Asynchronous data processing

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>

Page 63: Asynchronous data processing

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>

Page 64: Asynchronous data processing

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>

Page 65: Asynchronous data processing

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>

Page 66: Asynchronous data processing

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>

Page 67: Asynchronous data processing

SUMMARY

Page 68: Asynchronous data processing

PERFORMANCE

Page 69: Asynchronous data processing

DECOUPLED SYSTEM

Page 70: Asynchronous data processing

INTEROPERABILITY

Page 71: Asynchronous data processing

SCALABILITY

Page 72: Asynchronous data processing

joind.in/14878Please rate the talk

Page 73: Asynchronous data processing

joind.in/14878

Page 74: Asynchronous data processing

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


Recommended