Πως διαφέρει ο παράλληλος και ασύγχρονος προγραμματισμός στο Server και ποιές τεχνολογίες του .NET μας επιτρέπουν να πετύχουμε μεγάλο throughput και να αποφύγουμε meltdowns?
2. Parallel Extensions
• Best kept .NET secret known by all
• Από το 2010 και το .NET 4.0
• Καλύπτει τα Task, Data based μοντέλα
επεξεργασίας
• Ξαδερφάκια
• TPL Dataflow
• System.Reactive
• Διαθέσιμα από NuGet
• SIMD με το RyuJIT
3. Χρήση σε desktop
• async/await για ασύγχρονα events
• Task.Run για background Processing
• Παράλληλη επεξεργασία
• Προτεραιότητες
• Αποφυγή μπλοκαρίσματος UI
• Μείωση χρόνου εκτέλεσης
• Χρήση όλων των cores
4. Τι διαφέρει ο Server
• Δεν υπάρχει UI thread
• Πολλοί ταυτόχρονοι χρήστες/requests
• Throughput/Scalability πιο σημαντικά από
διάρκεια request
• Αλλά έχουμε timeouts
• Πολλά services, πολλά συνδυασμένα timeouts
• Και …
6. Server Meltdown
• Load Balanced φάρμα
• Μεγάλος φόρτος
• Πρώτος server κολλάει στα 100% CPU
• Timeouts, App pool Recycle
• Περισσότερα requests στους υπόλοιπους server
• Ο δεύτερος server φτάνει 100%
• Κάτσε κάτω από τη μπάρα!
• …
7. Request Queuing στο ASP.NET
IIS Queue
• Req 1
• Req 2
• Req 3
ASP.NET Worker
Threads
• Thread 1
• Thread 3
App Domain
• Thread 2
8. Γιατί …
• Πολλά threads Χειρότερο Scalability
• Τόσα core έχεις, τόσα thread θα τρέξουν
• Thrashing
• Αν όλοι περιμένουν όλους, κανείς δεν τελειώνει
• Μισεί τα blocking calls!
• Εξάντληση Thread Pool Δεν σερβίρουμε
• 500 Too Busy
• Άμεση Ενέργεια
• App Pool Recycle
• Όχι ότι μπορεί να γίνει και τίποτε άλλο …
9. Ασύγχρονη εκτέλεση
• Σημαντικότερη για server από ταχύτητα
• Stackless Python Δεν υπάρχουν blocking calls
• Η όψη της πραγματικότητας
• Δεν υπάρχει blocking I/O σε επίπεδο λειτουργικού
• I/O = File, Database, WS/REST calls
• Στον IIS – IO Threads
• Αφού το IO Thread κάνει τη δουλειά, εγώ τι το
περιμένω?
10. Async σε WebForms
• Βασική υποστήριξη async event handlers
• async void Button_Click μπρρρ…
• <%@ Page Async=“true” %>
• Χρήση Page.RegisterAsyncTask για διαδικασίες που
κρατάνε περισσότερο από το request
• Χύμα Background threads μπορεί να σκοτωθούν
οποιαδήποτε στιγμή
11. Async σε MVC/Web API
• Async actions!
• Παίζει ωραία με EF async
• HostingEnvironment.QueueBackgroundWorkItem
• Ενημερώνει τον IIS
• Δίνει 90 sec στο task να τελειώσει σε περίπτωση
shutdown/recycle
• HangFire, Azure Web Jobs για επαναλαμβανόμενα
tasks
12. Parallel.For και PLINQ
• Data Parallelism
• Κόβει τα δεδομένα σε κομμάτια
• Task ανά κομμάτι
• Γενικά 1 Task/Core
• Χρησιμοποιεί και το calling thread
• Φαίνεται να μπλοκάρει
• Δεν μας νοιάζει στο server
13. Dataflow
Κλήση στη βάση
• I:Date
• O:Sales
Web call
• I:Sale
• O:Details
• X3
• Bounded
Ανάλυση Αποθήκευση
• Bulk Insert
στη βάση
15. Τα βασικά
• Μοντέλα επεξεργασίας
• Agent και Pipeline
• και MapReduce data processing
• Ένα task ανά block (ρυθμίζεται)
• Buffer εισερχομένων/εξερχομένων
• Είδη Blocks
• Buffering
• Execution
• Grouping
• Συνδέσεις μεταξύ των block
16. Execution Blocks
• Action Block
• Κλασσικό Job Queue
• Βασική υλοποίηση Agent
• Transform Block
• Μετατροπή ενός Input σε ένα Output
• Για μία μετοχή καλώ ένα web service για να πάρω το
ιστορικό ως ένα πακέτο
• TransformMany Block
• Για ένα input πολλά outputs
• Παράλληλη εκτέλεση
17. Throttling
• BoundedCapacity
• Μέγιστος αριθμός εισερχόμενων
• Μπλοκάρει τις πηγές
• MaxMessagesPerTask
• Recycle ενός Task μετά από X μηνύματα
• CPU Throttling
27. Reactive Extensions
• Παρακολούθηση Γεγονότων
• Control Events
• Εγγραφές στο Event Log
• Κλήσεις σε Web Service
• Χρόνου
• Διαχείριση ως stream
• Δουλεύει με LINQ
• Βάση για Event Processing
38. Υποστηριζόμενα backplanes
• Windows Azure Bus
• SQL Server
• Redis
• Το προτεινόμενο Distributed memory cache για νέα
Azure projects
• Open Source Rulez!
40. Χρήσιμες Πηγές - Courses
MVA Course
• Lighting up Real-Time Web Communications with SignalR
Pluralshight Course
• Async and Parallel Programming: Application Design
Βιβλία
• The C# Concurrency Cookbook, Stephen Cleary, O’Reilly
41. Χρήσιμες Πηγές - Sites
Sites
• Signal R
• TPL Dataflow
• Reactive Extensions
• Using Asynchronous Methods in ASP.NET
• 101 Rx Samples
Blogs
• Stephen Cleary
• The Magic of using Acync in ASP.NET, Scott Hanselman
• How to run background tasks in ASP.NET, Scott Hanselman
42. Session Evaluation
Your feedback is
important and valuable
Submit before the event’s
close session to WIN
prizes
2ways
to access
Go to
m.itprodevconnections.gr
Ask for an Evaluation Sheet from
the registration desk
43. MVA
Microsoft Virtual Academy for IT Pros
/licensing/
/virtualization/
/server-infrastructure/
/hybrid-cloud/
/private-cloud/
/desktop-devices-management/
/και πολλά άλλα…
www.microsoftvirtualacademy.com
Όλα τα trainings που χρειάζεσαι δωρεάν σε ένα site!
44. MVA
Microsoft Virtual Academy LIVE
1 ως 4 Δεκεμβρίου
4 ΜΕΡΕΣ Εκπαίδευση με το Mark Russinovich
ΔΩΡΕΑΝ ΠΡΟΕΤΟΙΜΑΣΙΑ για την Εξέταση 70-533: Implementing Azure Infrastructure Solutions
Και 50% ΕΚΠΤΩΤΙΚΟ VOUCHER ΣΤΟ ΚΟΣΤΟΣ ΤΗΣ ΕΞΕΤΑΣΗΣ
www.microsoftvirtualacademy.com
Όλα τα trainings που χρειάζεσαι δωρεάν σε ένα site!
45. MVA
Microsoft Virtual Academy for Devs
/app development/
/game development /
/web development /
/mobile development /
/cloud development /
/C#-XAML-HTML/
/visual studio και πολλά άλλα…
www.microsoftvirtualacademy.com
Όλα τα trainings που χρειάζεσαι δωρεάν σε ένα site!