1 HOW TO PROCESS THOUSANDS OF REQUESTS PER SECOND A STORY OF UNEXPECTED SUCCESS JULY, 2015.
-
Upload
amanda-manning -
Category
Documents
-
view
213 -
download
0
Transcript of 1 HOW TO PROCESS THOUSANDS OF REQUESTS PER SECOND A STORY OF UNEXPECTED SUCCESS JULY, 2015.
![Page 1: 1 HOW TO PROCESS THOUSANDS OF REQUESTS PER SECOND A STORY OF UNEXPECTED SUCCESS JULY, 2015.](https://reader038.fdocuments.us/reader038/viewer/2022110206/56649f515503460f94c744a5/html5/thumbnails/1.jpg)
1
HOW TO PROCESS THOUSANDS OF REQUESTS PER SECOND
A STORY OF UNEXPECTED SUCCESSJULY, 2015
![Page 2: 1 HOW TO PROCESS THOUSANDS OF REQUESTS PER SECOND A STORY OF UNEXPECTED SUCCESS JULY, 2015.](https://reader038.fdocuments.us/reader038/viewer/2022110206/56649f515503460f94c744a5/html5/thumbnails/2.jpg)
2
FALL 2010: ...A NEW PROJECT
WITH OLD PROBLEMS. OLD CODEBASE.
THE NEW CHALLENGE.
![Page 3: 1 HOW TO PROCESS THOUSANDS OF REQUESTS PER SECOND A STORY OF UNEXPECTED SUCCESS JULY, 2015.](https://reader038.fdocuments.us/reader038/viewer/2022110206/56649f515503460f94c744a5/html5/thumbnails/3.jpg)
3
FUNCTIONAL REQUIREMENTS
CLIENTS
BANK ECOSYSTEM
STORAGE / LOGS
SMS BANKING SERVICES
SMS GATESMS / USSD
![Page 4: 1 HOW TO PROCESS THOUSANDS OF REQUESTS PER SECOND A STORY OF UNEXPECTED SUCCESS JULY, 2015.](https://reader038.fdocuments.us/reader038/viewer/2022110206/56649f515503460f94c744a5/html5/thumbnails/4.jpg)
4
NONE-FUNCTIONAL REQUIREMENTS
STORAGE / LOGS
SMS BANKING SERVICES
SMS GATE
PERFORMAINCE 4000+ records per sec
AVAILABILITY NONE-STOP on re-config & scale
SCALABILITY aka PLUG-AND-SCALE
RESILIENCE 10 000 000+ records as a start
CONSISTENCY Guaranteed Delivery
![Page 5: 1 HOW TO PROCESS THOUSANDS OF REQUESTS PER SECOND A STORY OF UNEXPECTED SUCCESS JULY, 2015.](https://reader038.fdocuments.us/reader038/viewer/2022110206/56649f515503460f94c744a5/html5/thumbnails/5.jpg)
5
NONE-FUNCTIONAL REQUIREMENTS
PERFORMAINCE 4000+ records per sec
AVAILABILITY NONE-STOP on re-config & scale
SCALABILITY aka PLUG-AND-SCALE
RESILIENCE 10 000 000+ records as a start
CONSISTENCY Guaranteed Delivery
ON DESSERT LEGACY CODE
![Page 6: 1 HOW TO PROCESS THOUSANDS OF REQUESTS PER SECOND A STORY OF UNEXPECTED SUCCESS JULY, 2015.](https://reader038.fdocuments.us/reader038/viewer/2022110206/56649f515503460f94c744a5/html5/thumbnails/6.jpg)
6
UNEXPECTED SUCCESS
![Page 7: 1 HOW TO PROCESS THOUSANDS OF REQUESTS PER SECOND A STORY OF UNEXPECTED SUCCESS JULY, 2015.](https://reader038.fdocuments.us/reader038/viewer/2022110206/56649f515503460f94c744a5/html5/thumbnails/7.jpg)
7
MESSAGE QUEUING SOLUTIONS
How to process thousands of requests per second? SCALE UP, SCALE OUT…
IBM X6 Oracle SPARC
DELL PowerEdgeIntel Server System
HP BladeSystem
Microsoft Azure
AWS
Google Cloud
Rackspace
Oracle Exalogic Elastic Cloud
IBM MQ
Oracle Tuxedo
Tibco EMS / ActiveMatrix
MSMQ
OpenAMQ
RabbitMQActiveMQ
Apache Qpid
![Page 8: 1 HOW TO PROCESS THOUSANDS OF REQUESTS PER SECOND A STORY OF UNEXPECTED SUCCESS JULY, 2015.](https://reader038.fdocuments.us/reader038/viewer/2022110206/56649f515503460f94c744a5/html5/thumbnails/8.jpg)
8
TASK HANDLER
“THROUGHPUT”
“REQUEST PROCESSING”
REQUESTS
QUEUE: INCOMINGARTEFACTS
SERVICES
![Page 9: 1 HOW TO PROCESS THOUSANDS OF REQUESTS PER SECOND A STORY OF UNEXPECTED SUCCESS JULY, 2015.](https://reader038.fdocuments.us/reader038/viewer/2022110206/56649f515503460f94c744a5/html5/thumbnails/9.jpg)
9
ORACLE: WORK ITEMS SELECTION
QUEUE: INCOMING
WHERE ... mod (dbms_rowid.ROWID_BLOCK_NUMBER(rowid), M) = N
![Page 10: 1 HOW TO PROCESS THOUSANDS OF REQUESTS PER SECOND A STORY OF UNEXPECTED SUCCESS JULY, 2015.](https://reader038.fdocuments.us/reader038/viewer/2022110206/56649f515503460f94c744a5/html5/thumbnails/10.jpg)
10
SQL SERVER: WORK ITEMS SELECTION
QUEUE: INCOMING
ID Data State
… … …
... … FREE = 0 … WHERE [State] = 0
![Page 11: 1 HOW TO PROCESS THOUSANDS OF REQUESTS PER SECOND A STORY OF UNEXPECTED SUCCESS JULY, 2015.](https://reader038.fdocuments.us/reader038/viewer/2022110206/56649f515503460f94c744a5/html5/thumbnails/11.jpg)
11
SQL SERVER: WORK ITEMS SELECTION
QUEUE: INCOMING
ID Data State
… … …
... … IN PROGRESS = 1
UPDATE …SET [State] = 1WHERE [State] = 0
![Page 12: 1 HOW TO PROCESS THOUSANDS OF REQUESTS PER SECOND A STORY OF UNEXPECTED SUCCESS JULY, 2015.](https://reader038.fdocuments.us/reader038/viewer/2022110206/56649f515503460f94c744a5/html5/thumbnails/12.jpg)
12
SQL SERVER: WORK ITEMS SELECTION
QUEUE: INCOMING
ID Data State
… … …
... … IN PROGRESS = 1
... ... IN PROGRESS = 1
... … FREE = 0
UPDATE TOP (...)SET [State] = 1WHERE [State] = 0OUTPUT inserted.ID, inserted.Data …
![Page 13: 1 HOW TO PROCESS THOUSANDS OF REQUESTS PER SECOND A STORY OF UNEXPECTED SUCCESS JULY, 2015.](https://reader038.fdocuments.us/reader038/viewer/2022110206/56649f515503460f94c744a5/html5/thumbnails/13.jpg)
13
SQL SERVER: WORK ITEMS SELECTION
QUEUE: INCOMING
ID Data State
… … …
... … IN PROGRESS = 1
... ... IN PROGRESS = 1
... … FREE = 0
... … LOCKED / INSERTING = 0
... … LOCKED / INSERTING = 0
UPDATE TOP (...)WITH (READPAST)SET [State] = 1WHERE [State] = 0OUTPUT inserted.ID, inserted.Data …
![Page 14: 1 HOW TO PROCESS THOUSANDS OF REQUESTS PER SECOND A STORY OF UNEXPECTED SUCCESS JULY, 2015.](https://reader038.fdocuments.us/reader038/viewer/2022110206/56649f515503460f94c744a5/html5/thumbnails/14.jpg)
14
SQL SERVER: WORK ITEMS SELECTION
UPDATE TOP (...)WITH (READPAST)SET [State] = 1WHERE [State] = 0OUTPUT inserted.ID, inserted.Data …
PREVENT LOCKS ESCALATION
#SQLSERVER
![Page 15: 1 HOW TO PROCESS THOUSANDS OF REQUESTS PER SECOND A STORY OF UNEXPECTED SUCCESS JULY, 2015.](https://reader038.fdocuments.us/reader038/viewer/2022110206/56649f515503460f94c744a5/html5/thumbnails/15.jpg)
15
THREAD POOL (Simple approach)
REQUESTS
QUEUE: INCOMINGARTEFACTS
SERVICES
THREAD POOLSERVICE API
WORKER THREAD
![Page 16: 1 HOW TO PROCESS THOUSANDS OF REQUESTS PER SECOND A STORY OF UNEXPECTED SUCCESS JULY, 2015.](https://reader038.fdocuments.us/reader038/viewer/2022110206/56649f515503460f94c744a5/html5/thumbnails/16.jpg)
16
MASTER WORKER #1/4CACHE
NGINX (God-like approach)
REQUESTS
Sockets (OS Kernel)
ARTEFACTS
SERVICES
![Page 17: 1 HOW TO PROCESS THOUSANDS OF REQUESTS PER SECOND A STORY OF UNEXPECTED SUCCESS JULY, 2015.](https://reader038.fdocuments.us/reader038/viewer/2022110206/56649f515503460f94c744a5/html5/thumbnails/17.jpg)
17
LEGACY: WIN SERVICELEGACY: LOCKS
RESOLUTION
…our unexpected success -)
REQUESTS
QUEUE: INCOMING
SQL Server
PARSING
WORKER #1/4 M, N
![Page 18: 1 HOW TO PROCESS THOUSANDS OF REQUESTS PER SECOND A STORY OF UNEXPECTED SUCCESS JULY, 2015.](https://reader038.fdocuments.us/reader038/viewer/2022110206/56649f515503460f94c744a5/html5/thumbnails/18.jpg)
18
LEGACY: LOCKS RESOLUTION
DEMO
QUEUE: INCOMING
WORKER #1/4 M, N
SQL Server