Πίθος - Αρχιτεκτονική και τεχνολογίες .NET
-
Upload
panagiotis-kanavos -
Category
Technology
-
view
195 -
download
2
Transcript of Πίθος - Αρχιτεκτονική και τεχνολογίες .NET
![Page 1: Πίθος - Αρχιτεκτονική και τεχνολογίες .NET](https://reader034.fdocuments.net/reader034/viewer/2022042514/55a4e7ce1a28ab654d8b457c/html5/thumbnails/1.jpg)
ΠΙΘΟΣ
Αρχιτεκτονικό και Σεχνολογύεσ .NET
Παναγιώτησ Καναβόσ
![Page 2: Πίθος - Αρχιτεκτονική και τεχνολογίες .NET](https://reader034.fdocuments.net/reader034/viewer/2022042514/55a4e7ce1a28ab654d8b457c/html5/thumbnails/2.jpg)
Object storage αντύςτοιχο του Amazon S3/Azure Blob storage
Τπηρεςύα του Synnefo
Γραμμϋνο ςε Python
Clients για Web, Windows, iOS, Android, Linux
![Page 3: Πίθος - Αρχιτεκτονική και τεχνολογίες .NET](https://reader034.fdocuments.net/reader034/viewer/2022042514/55a4e7ce1a28ab654d8b457c/html5/thumbnails/3.jpg)
Synnefo
![Page 4: Πίθος - Αρχιτεκτονική και τεχνολογίες .NET](https://reader034.fdocuments.net/reader034/viewer/2022042514/55a4e7ce1a28ab654d8b457c/html5/thumbnails/4.jpg)
Client API
REST βαςιςμϋνο ςτο OpenStack Object Storage API
Accounts, Containers χωρύσ Folders
GET για data, object info
PUT, POST για upload και update data
![Page 5: Πίθος - Αρχιτεκτονική και τεχνολογίες .NET](https://reader034.fdocuments.net/reader034/viewer/2022042514/55a4e7ce1a28ab654d8b457c/html5/thumbnails/5.jpg)
Δομή
![Page 6: Πίθος - Αρχιτεκτονική και τεχνολογίες .NET](https://reader034.fdocuments.net/reader034/viewer/2022042514/55a4e7ce1a28ab654d8b457c/html5/thumbnails/6.jpg)
Extensions ςτο API
Block Storage
Partial Upload/Download
Permissions, Versions
Metadata Queries
UUIDs για Object IDs
Object updates (copy, move)
![Page 7: Πίθος - Αρχιτεκτονική και τεχνολογίες .NET](https://reader034.fdocuments.net/reader034/viewer/2022042514/55a4e7ce1a28ab654d8b457c/html5/thumbnails/7.jpg)
Χαρακτηριςτικά API
Δεν υπϊρχουν folders
Placeholder directory object για metadata
Block updates ΜΟΝΟ
Merkle hashing για εντοπιςμό αλλαγμϋνων block
Χρόςη SHA256
![Page 8: Πίθος - Αρχιτεκτονική και τεχνολογίες .NET](https://reader034.fdocuments.net/reader034/viewer/2022042514/55a4e7ce1a28ab654d8b457c/html5/thumbnails/8.jpg)
Merkle Hashing
Top Hash
Hash of #1-2 Hashes
Block #1 Hash
Block #2 Hash
Hash of #2-3 Hashes
Block #3 Hash
Block #4 Hash
![Page 9: Πίθος - Αρχιτεκτονική και τεχνολογίες .NET](https://reader034.fdocuments.net/reader034/viewer/2022042514/55a4e7ce1a28ab654d8b457c/html5/thumbnails/9.jpg)
Διαδικαςία Download
Get Hashmapfrom server
Calculate local hashmap
Find different blocks
Download blocks
Patch local file with blocks
![Page 10: Πίθος - Αρχιτεκτονική και τεχνολογίες .NET](https://reader034.fdocuments.net/reader034/viewer/2022042514/55a4e7ce1a28ab654d8b457c/html5/thumbnails/10.jpg)
Διαδικαςία Upload
Calculate local hashmap
PUT to serverServer responds
with missing block hashes
PUT missing blocks at
container levelRepeat from #2
Server responds 201
![Page 11: Πίθος - Αρχιτεκτονική και τεχνολογίες .NET](https://reader034.fdocuments.net/reader034/viewer/2022042514/55a4e7ce1a28ab654d8b457c/html5/thumbnails/11.jpg)
Pithos Client
Πολλαπλϊ accounts ανϊ μηχϊνημα
υγχρονιςμόσ τοπικού folder με account ςτον Πύθο
Εντοπιςμόσ τοπικών αλλαγών και upload
Εντοπιςμόσ αλλαγών ςτο server και download
Τπολογιςμόσ Merkle Hash για κϊθε αρχεύο
![Page 12: Πίθος - Αρχιτεκτονική και τεχνολογίες .NET](https://reader034.fdocuments.net/reader034/viewer/2022042514/55a4e7ce1a28ab654d8b457c/html5/thumbnails/12.jpg)
Η αρχιτεκτονική
UI
WPF
MVVM
CaliburnMicro
Core
File Agent
Poll Agent
Network Agent
Status Agent
Networking
CloudFiles
HttpClient
Storage
SQLite
SQL Server Compact
![Page 13: Πίθος - Αρχιτεκτονική και τεχνολογίες .NET](https://reader034.fdocuments.net/reader034/viewer/2022042514/55a4e7ce1a28ab654d8b457c/html5/thumbnails/13.jpg)
Τεχνολογίεσ
.ΝΕΣ 4, εξαιτύασ των Windows XP Visual Studio 2012 + Async Targeting Pack UI - Caliburn.Micro Concurrency - TPL, Parallel, Dataflow Network – HttpClient Hashing - OpenSSL - Σαχύτερο του native
provider για hashing Storage - NHibernate, SQLite/SQL Server
Compact Logging - log4net
![Page 14: Πίθος - Αρχιτεκτονική και τεχνολογίες .NET](https://reader034.fdocuments.net/reader034/viewer/2022042514/55a4e7ce1a28ab654d8b457c/html5/thumbnails/14.jpg)
Οι προκλήςεισ
Χειριςμόσ πιθανόσ εκατοντϊδων file events
Hashing πολλών/μεγϊλων αρχεύων
Πολλαπλϋσ αργϋσ κλόςεισ ςτο server
Αςταθϋσ δύκτυο
Παρόλαυτα να μην κολλϊει
Minimal UI με επαρκεύσ πληροφορύεσ
![Page 15: Πίθος - Αρχιτεκτονική και τεχνολογίες .NET](https://reader034.fdocuments.net/reader034/viewer/2022042514/55a4e7ce1a28ab654d8b457c/html5/thumbnails/15.jpg)
Χειριςμόσ Events
• Listen
• Wait for Idle
File Agent
• Get Server hashes
• Compare hashes
• Identify changes
Poll Agent
• Queue requests
• Process each file
Network Agent
• Network ops for files
Uploader/Downloader
![Page 16: Πίθος - Αρχιτεκτονική και τεχνολογίες .NET](https://reader034.fdocuments.net/reader034/viewer/2022042514/55a4e7ce1a28ab654d8b457c/html5/thumbnails/16.jpg)
Χειριςμόσ Events (2)
Χρόςη producer/consumer
Αποθόκευςη των events ςε ConcurrentQueue
Επεξεργαςύα ΜΟΝΟ μετϊ από timeout
![Page 17: Πίθος - Αρχιτεκτονική και τεχνολογίες .NET](https://reader034.fdocuments.net/reader034/viewer/2022042514/55a4e7ce1a28ab654d8b457c/html5/thumbnails/17.jpg)
Merkle Hashing
Γιατύ μιςώ το Game of Thrones
Αςύγχρονη ανϊγνωςη blocks
Παρϊλληλο Hashing κϊθε block
Χρόςη OpenSSL επειδό ϋχει SSE
Περιοριςμόσ ςτο concurrency
Προςοχό ςτη μνόμη!
![Page 18: Πίθος - Αρχιτεκτονική και τεχνολογίες .NET](https://reader034.fdocuments.net/reader034/viewer/2022042514/55a4e7ce1a28ab654d8b457c/html5/thumbnails/18.jpg)
Memory Leaks ςε Managed Environment!
4ΜΒ Blocks? Large Memory αλλϊ …
Γρόγορο διϊβαςμα 2GB ανϊ 64ΚΒ
Κατϋβαςμα 600ΜΒ ανϊ x KBs
Σρελόσ αριθμόσ αντικειμϋνων που περιμϋνει collection κατϊ τη διϊρκεια CPU/IO intensive processing
Που να προλϊβει ο Garbage Collector!
![Page 19: Πίθος - Αρχιτεκτονική και τεχνολογίες .NET](https://reader034.fdocuments.net/reader034/viewer/2022042514/55a4e7ce1a28ab654d8b457c/html5/thumbnails/19.jpg)
Hashing 100% CPU?
Καλό το multicore αλλϊ
Μπλοκϊρει το ςύςτημα για μεγϊλα αρχεύα!
Επιλογό για περιοριςμό των παρϊλληλων block hash ops
Βελτιώςεισ:
Περιοριςμόσ για «μεγϊλα» αρχεύα
«Throttling» του File Read
![Page 20: Πίθος - Αρχιτεκτονική και τεχνολογίες .NET](https://reader034.fdocuments.net/reader034/viewer/2022042514/55a4e7ce1a28ab654d8b457c/html5/thumbnails/20.jpg)
Πολλαπλέσ αργέσ κλήςεισ
Κϊθε κλόςη ϋνα Task
Σαυτόχρονα REST calls ανϊ account και shares
Task.WhenAll για να επεξεργαςτούμε όλα τα αποτελϋςματα
![Page 21: Πίθος - Αρχιτεκτονική και τεχνολογίες .NET](https://reader034.fdocuments.net/reader034/viewer/2022042514/55a4e7ce1a28ab654d8b457c/html5/thumbnails/21.jpg)
Αςταθέσ Δίκτυο
Χρόςη System.Net.Http.HttpClient
Αποθόκευςη των blocks ςε cache
Έλεγχοσ για orphans
Αςύγχρονο Retry των κλόςεων
![Page 22: Πίθος - Αρχιτεκτονική και τεχνολογίες .NET](https://reader034.fdocuments.net/reader034/viewer/2022042514/55a4e7ce1a28ab654d8b457c/html5/thumbnails/22.jpg)
Αντοχή ςε ςκαςίματα
Χρόςη Transactional NTFS αν εύναι διαθϋςιμο
Thanks MS for killing it!
Σροποπούηςη αντιγρϊφων και File.Replaceδιαφορετικϊ
![Page 23: Πίθος - Αρχιτεκτονική και τεχνολογίες .NET](https://reader034.fdocuments.net/reader034/viewer/2022042514/55a4e7ce1a28ab654d8b457c/html5/thumbnails/23.jpg)
Να μην κολλάει
Χρόςη ανεξϊρτητων agents
Asynchronous operations όπου εύναι δυνατόν
Χρόςη async/await για πιο κατανοητό κώδικα
Απαραύτητο το .ConfigureAwait(false)!
ΠΡΟΟΧΗ ςτο async void
![Page 24: Πίθος - Αρχιτεκτονική και τεχνολογίες .NET](https://reader034.fdocuments.net/reader034/viewer/2022042514/55a4e7ce1a28ab654d8b457c/html5/thumbnails/24.jpg)
Minimal UI
Χρόςη WPF, MVVM
Χρόςη Progress για την ενημϋρωςη του UI
Ενςωματωμϋνο ςτο .NET 4.5, αντιγραφό ςτο 4
To Shell εύναι το Icon!
Έλλειψη WPF Notification Icon
Προβληματικό Data Binding ςε menu
![Page 25: Πίθος - Αρχιτεκτονική και τεχνολογίες .NET](https://reader034.fdocuments.net/reader034/viewer/2022042514/55a4e7ce1a28ab654d8b457c/html5/thumbnails/25.jpg)
SQLite ή Compact CE?
Αρχικϊ SQLite -> Προβλόματα ςυγχρονιςμού (DUH !)
Write Ahead logging, ςημαύνει ότι φαύνονται παλιότερα δεδομϋνα
Αλλαγό ςε SQL Compact λόγω προβλημϊτων ςυγχρονιςμού (duh ?)
Μόπωσ ϋπρεπε να ϋχουμε κϊποιο καλύτερο caching?
Akavache?
Μύα Document DB θα όταν προτιμότερη
![Page 26: Πίθος - Αρχιτεκτονική και τεχνολογίες .NET](https://reader034.fdocuments.net/reader034/viewer/2022042514/55a4e7ce1a28ab654d8b457c/html5/thumbnails/26.jpg)
Επόμενα Βήματα
Δημιουργύα File Manager
Γενικό Καθϊριςμα (DUH!)
Επαναφορϊ των Unit Tests (Duh ?)
Mock Server
WebAPI? scriptcs? Yumm!
Δημιουργύα ανεξϊρτητου Pithos library
Windows RT, Windows Phone clients
ΜΕΣΑ το καθϊριςμα
![Page 27: Πίθος - Αρχιτεκτονική και τεχνολογίες .NET](https://reader034.fdocuments.net/reader034/viewer/2022042514/55a4e7ce1a28ab654d8b457c/html5/thumbnails/27.jpg)
Links για Πίθο
Pithos trialhttp://pithos.okeanos.io
Synnefo Documentationhttp://www.synnefo.org/docs/synnefo/latest/index.html
Pithos API Documentationhttp://www.synnefo.org/docs/pithos/latest/index.html
Pithos Windows Clienthttps://code.grnet.gr/projects/pithos-ms-client
![Page 28: Πίθος - Αρχιτεκτονική και τεχνολογίες .NET](https://reader034.fdocuments.net/reader034/viewer/2022042514/55a4e7ce1a28ab654d8b457c/html5/thumbnails/28.jpg)
Χρήςιμα Links
Parallel FX Team bloghttp://blogs.msdn.com/b/pfxteam
Caliburn.Microhttp://caliburnmicro.codeplex.com/
Ayende’s BufferPoolhttp://ayende.com/blog/4827/answer-stopping-the-leaks
![Page 29: Πίθος - Αρχιτεκτονική και τεχνολογίες .NET](https://reader034.fdocuments.net/reader034/viewer/2022042514/55a4e7ce1a28ab654d8b457c/html5/thumbnails/29.jpg)
Χρήςιμα Βιβλία
C# 5 in a Nutshell, O’Riley
Parallel Programming with .NET, Microsoft
• Pro Parallel Programming with C#, Wiley
• Concurrent Programming on Windows, Pearson
• The Art of Concurrency, O’Reilly