Concurrent Processing Techniques
-
Upload
jeremy-deane -
Category
Technology
-
view
1.014 -
download
0
description
Transcript of Concurrent Processing Techniques
![Page 1: Concurrent Processing Techniques](https://reader033.fdocuments.in/reader033/viewer/2022042518/554dc768b4c905bd488b51de/html5/thumbnails/1.jpg)
Concurrent Processing Techniques
Jeremy Deane h6p://jeremydeane.net/
![Page 2: Concurrent Processing Techniques](https://reader033.fdocuments.in/reader033/viewer/2022042518/554dc768b4c905bd488b51de/html5/thumbnails/2.jpg)
Agenda
Mulit-‐Core ImperaBve
Concurrent Processing Impediments
Demo Web ApplicaBon
Java Concurrency Package
Akka Actors
Asynchronous Web Services
QuesBons and Feedback
![Page 3: Concurrent Processing Techniques](https://reader033.fdocuments.in/reader033/viewer/2022042518/554dc768b4c905bd488b51de/html5/thumbnails/3.jpg)
MulB-‐Core Crisis 2006
h6p://smoothspan.wordpress.com/2007/09/06/a-‐picture-‐of-‐the-‐mulBcore-‐crisis/
![Page 4: Concurrent Processing Techniques](https://reader033.fdocuments.in/reader033/viewer/2022042518/554dc768b4c905bd488b51de/html5/thumbnails/4.jpg)
MulB-‐Core ImperaBve (Arg!!! Its 2014)
The ugly truth about mulBple cores is that soVware has to be wri6en to take advantage of all the addiBonal processors. Instead of doing everything in a linear fashion (with one step
following the compleBon of another), programmers need to ensure their applica3ons are designed to be able to do many tasks simultaneously. NetworkWorld September 2009
Concurrency was once considered esoteric, something we could consider to avoid in the past. However, with the improved hardware capabiliBes, we may not have a
choice here, it is a challenge we've been drawn into, whether we wanted it or not. Venkat Subramaniam January 2012
![Page 5: Concurrent Processing Techniques](https://reader033.fdocuments.in/reader033/viewer/2022042518/554dc768b4c905bd488b51de/html5/thumbnails/5.jpg)
Concurrent Processing Impediments
Task or Data DecomposiBon
Deadlocks and StarvaBon
Race CondiBons
Concurrent TesBng
Concurrent Processing is Fracken Hard!
![Page 6: Concurrent Processing Techniques](https://reader033.fdocuments.in/reader033/viewer/2022042518/554dc768b4c905bd488b51de/html5/thumbnails/6.jpg)
Orders Web ApplicaBon
Spring MVC Web ApplicaBon Spring MVC 4 & Servlet 3 Res_ul Web Services Java Concurrency Library Akka Actors
Concurrency Pa6erns Fire & Forget Pipeline Map-‐Reduce Fork-‐Join Producer-‐Consumer
![Page 7: Concurrent Processing Techniques](https://reader033.fdocuments.in/reader033/viewer/2022042518/554dc768b4c905bd488b51de/html5/thumbnails/7.jpg)
Order Processing – Single-‐Threaded Processing
RESTFUL WEB SERVICE
BATCH SERVICE
ORDER PROCESS
Single Thread
… | 492438277@qtp-‐1840511017-‐0 | ORD X1414 PRI $12 ST $60.0 DISC .10% T $54
… | 492438277@qtp-‐1840511017-‐0 | ORD X1415 PRI $8 ST $32.0 DISC .5% T $16
… | 492438277@qtp-‐1840511017-‐0 | ORD X1419 PRI $10 ST $60.0 T $60
![Page 8: Concurrent Processing Techniques](https://reader033.fdocuments.in/reader033/viewer/2022042518/554dc768b4c905bd488b51de/html5/thumbnails/8.jpg)
Java Concurrency Library
![Page 9: Concurrent Processing Techniques](https://reader033.fdocuments.in/reader033/viewer/2022042518/554dc768b4c905bd488b51de/html5/thumbnails/9.jpg)
Order Processing – Java Fire & Forget
RESTFUL WEB SERVICE
BATCH SERVICE
ORDER RUNNABLE
Original Thread New Thread
20:55:01:811 | pool-‐2-‐thread-‐5 | ORD X1218 PRI $10 ST $100.0 T $100
20:55:01:812 | pool-‐2-‐thread-‐5 | ORD X1419 PRI $10 ST $60.0 T $60
20:55:01:818 | pool-‐2-‐thread-‐1 | ORD X1406 PRI $6 ST $48.0 T $48
![Page 10: Concurrent Processing Techniques](https://reader033.fdocuments.in/reader033/viewer/2022042518/554dc768b4c905bd488b51de/html5/thumbnails/10.jpg)
Order Processing – Java Fork-‐Join
RESTFUL WEB SERVICE
BATCH SERVICE
Original Thread New Thread
ORDER CALLABE
20:57:59:691 | pool-‐4-‐thread-‐36 | ORD X1363 PRI $6 ST $60.0 DISC .15% T $51
20:57:59:694 | pool-‐4-‐thread-‐12 | ORD X1218 PRI $10 ST $100.0 T $100
20:57:59:695 | 492438277@qtp-‐1840511017-‐0 | Batch Total $11080.0
![Page 11: Concurrent Processing Techniques](https://reader033.fdocuments.in/reader033/viewer/2022042518/554dc768b4c905bd488b51de/html5/thumbnails/11.jpg)
Order Processing – Java Producer-‐Consumer
RESTFUL WEB SERVICE
BATCH SERVICE
Original Thread New Thread
ORDER CALLABE
15:18:17:883 | qtp1624616274-‐16 | order X1420 submitted
{processing}
15:18:17:883 | qtp1624616274-‐16 | Consumed Task #1 15:18:17:884 | qtp1624616274-‐16 | Consumed Task #2
{processing}
15:18:17:907 | pool-‐3-‐thread-‐17 | ORD X1420 PRI $6 ST $24.0 DISC .15% T $20
{processing}
15:18:22:753 | qtp1624616274-‐16 | Batch Total $11080.0
![Page 12: Concurrent Processing Techniques](https://reader033.fdocuments.in/reader033/viewer/2022042518/554dc768b4c905bd488b51de/html5/thumbnails/12.jpg)
Actor System
Client
Untyped Actor
Client
Untyped Actor Untyped Actor
Actors
Dispatcher
Supervisor Router Transactor
![Page 13: Concurrent Processing Techniques](https://reader033.fdocuments.in/reader033/viewer/2022042518/554dc768b4c905bd488b51de/html5/thumbnails/13.jpg)
Parent Actor
Client
Typed Actor Typed Actor
Actors Actor System
Typed Actor
Client
![Page 14: Concurrent Processing Techniques](https://reader033.fdocuments.in/reader033/viewer/2022042518/554dc768b4c905bd488b51de/html5/thumbnails/14.jpg)
Akka Actors
Actors Framework (Scala & Java API)
Standalone (Microkernel) or Embedded
High Availability (Remote Actors)
Fault Tolerant (Supervision & Monitoring)
SoVware TransacBonal Memory (STM)
![Page 15: Concurrent Processing Techniques](https://reader033.fdocuments.in/reader033/viewer/2022042518/554dc768b4c905bd488b51de/html5/thumbnails/15.jpg)
Order Processing – Akka Actors Pipeline
RESTFUL WEB SERVICE
BATCH SERVICE
PRICE ACTOR
Original Thread New Thread
DISCOUNT ACTOR
New Thread
…| akka:event-‐driven:dispatcher:global-‐1 | Order ID: X1418 Amount SubTotal: $100.0 Discounted SubTotal: $
…| akka:event-‐driven:dispatcher:global-‐1 | Order ID: X1419 Amount SubTotal: $60.0 Discounted SubTotal: $
…| akka:event-‐driven:dispatcher:global-‐11 | Order ID: X1418 Amount SubTotal: $100.0 Discounted SubTotal: $100.0
…| akka:event-‐driven:dispatcher:global-‐1 | Order ID: X1420 Amount SubTotal: $24.0 Discounted SubTotal: $
…| akka:event-‐driven:dispatcher:global-‐11 | Order ID: X1419 Amount SubTotal: $60.0 Discounted SubTotal: $60.0
![Page 16: Concurrent Processing Techniques](https://reader033.fdocuments.in/reader033/viewer/2022042518/554dc768b4c905bd488b51de/html5/thumbnails/16.jpg)
Order Processing – Akka Actors Fork-‐Join
RESTFUL WEB SERVICE
BATCH SERVICE
PRICE ACTOR
Original Thread
New Thread
DISCOUNT ACTOR
New Thread
…| akka:event-‐driven:dispatcher:global-‐1 | Order ID: X1420 Discount: 15%
…| akka:event-‐driven:dispatcher:global-‐11 | Order ID: X1420 Amount SubTotal: $24.0
…| 492438277@qtp-‐1840511017-‐0 | Batch Total $11080.0
![Page 17: Concurrent Processing Techniques](https://reader033.fdocuments.in/reader033/viewer/2022042518/554dc768b4c905bd488b51de/html5/thumbnails/17.jpg)
Order Processing – Akka Actors Map-‐Reduce
RESTFUL WEB SERVICE
BATCH SERVICE
MAP ACTOR
Original Thread New Thread
REDUCE ACTOR
New Thread…| akka:event-‐driven:dispatcher:global-‐1 | Mapped Item Types
…| akka:event-‐driven:dispatcher:global-‐2 | Reduce Item Types
…| akka:event-‐driven:dispatcher:global-‐2 | {Card Deck=36, Dice=36, Marbles=16, Quarters=28, Rabbit=16, Rainbow Scarf=16, Rings=24, Top Hat=28}
![Page 18: Concurrent Processing Techniques](https://reader033.fdocuments.in/reader033/viewer/2022042518/554dc768b4c905bd488b51de/html5/thumbnails/18.jpg)
Asynchronous Web Service Magic
![Page 19: Concurrent Processing Techniques](https://reader033.fdocuments.in/reader033/viewer/2022042518/554dc768b4c905bd488b51de/html5/thumbnails/19.jpg)
Order Processing – Web Service Future
BATCHCACHE
RESTFUL WEB SERVICE
BATCH SERVICE
BATCH RUNNABLE
Original Thread New Thread
RESTFUL WEB SERVICE
BATCH SERVICE
Polling Thread
![Page 20: Concurrent Processing Techniques](https://reader033.fdocuments.in/reader033/viewer/2022042518/554dc768b4c905bd488b51de/html5/thumbnails/20.jpg)
Order Processing – Asynchronous Web Service
SPRING FRAMEWORK 4.0Servlet 3.0
RESTFUL WEB SERVICE
BATCH SERVICE
BATCH DEFERRED
Original Thread New Thread
![Page 21: Concurrent Processing Techniques](https://reader033.fdocuments.in/reader033/viewer/2022042518/554dc768b4c905bd488b51de/html5/thumbnails/21.jpg)
QuesBons & Feedback QuesBons & Feedback
My Contact informa3on:
Jeremy Deane Director of SoVware Architecture NaviNet [email protected] h6p://jeremydeane.net/
h6ps://github.com/jtdeane/demo-‐spring-‐orders