O slideshow foi denunciado.
Utilizamos seu perfil e dados de atividades no LinkedIn para personalizar e exibir anúncios mais relevantes. Altere suas preferências de anúncios quando desejar.
Αρχιτεκτονικό και Σεχνολογύεσ .NETΠαναγιώτησ ΚαναβόσΠΙΘΟΣ
 Object storage αντύςτοιχο του Amazon  S3/Azure Blob storage Τπηρεςύα του Synnefo Γραμμϋνο ςε Python Clients για  Web,...
Synnefo
Client API REST βαςιςμϋνο ςτο OpenStack Object  Storage API Accounts, Containers χωρύσ Folders GET για data, object inf...
Δομή
Extensions ςτο API  Block Storage  Partial Upload/Download  Permissions, Versions  Metadata Queries  UUIDs για Object...
Χαρακτηριςτικά API Δεν υπϊρχουν folders Placeholder directory object για metadata Block updates ΜΟΝΟ Merkle hashing γι...
Merkle Hashing                       Top Hash       Hash of #1-                  Hash of #2-        2 Hashes              ...
Διαδικαςία DownloadGet Hashmap    Calculate local    Find different from server     hashmap             blocks Download   ...
Διαδικαςία Upload                                   Server respondsCalculate local                  PUT to server     with...
Pithos Client Πολλαπλϊ accounts ανϊ μηχϊνημα ΢υγχρονιςμόσ τοπικού folder με account  ςτον Πύθο Εντοπιςμόσ τοπικών αλλαγ...
Η αρχιτεκτονική   UI         Core         Networking    Storage  WPF        File Agent                            CloudFil...
Τεχνολογίεσ .ΝΕΣ 4, εξαιτύασ των Windows XP Visual Studio 2012 + Async Targeting Pack UI - Caliburn.Micro Concurrency ...
Οι προκλήςεισ Χειριςμόσ πιθανόσ εκατοντϊδων file events Hashing πολλών/μεγϊλων αρχεύων Πολλαπλϋσ αργϋσ κλόςεισ ςτο serv...
Χειριςμόσ Events                              Poll Agent                              Uploader/Downloader• Listen         ...
Χειριςμόσ Events (2) Χρόςη producer/consumer Αποθόκευςη των events ςε  ConcurrentQueue Επεξεργαςύα ΜΟΝΟ μετϊ από timeout
Merkle Hashing Γιατύ μιςώ το Game of Thrones Αςύγχρονη ανϊγνωςη blocks Παρϊλληλο Hashing κϊθε block Χρόςη OpenSSL επει...
Memory Leaks ςε ManagedEnvironment!  4ΜΒ Blocks? Large Memory αλλϊ …  Γρόγορο διϊβαςμα 2GB ανϊ 64ΚΒ  Κατϋβαςμα 600ΜΒ αν...
Hashing  100% CPU? Καλό το multicore αλλϊ   Μπλοκϊρει το ςύςτημα για μεγϊλα αρχεύα! Επιλογό για περιοριςμό των παρϊλλη...
Πολλαπλέσ αργέσ κλήςεισ Κϊθε κλόςη ϋνα Task Σαυτόχρονα REST calls ανϊ account και  shares Task.WhenAll για να επεξεργας...
Αςταθέσ Δίκτυο Χρόςη System.Net.Http.HttpClient Αποθόκευςη των blocks ςε cache Έλεγχοσ για orphans Αςύγχρονο Retry των...
Αντοχή ςε ςκαςίματα Χρόςη Transactional NTFS αν εύναι  διαθϋςιμο Thanks MS for killing it! Σροποπούηςη αντιγρϊφων και F...
Να μην κολλάει Χρόςη ανεξϊρτητων agents Asynchronous operations όπου εύναι δυνατόν Χρόςη async/await για πιο κατανοητό ...
Minimal UI Χρόςη WPF, MVVM Χρόςη Progress για την ενημϋρωςη του UI   Ενςωματωμϋνο ςτο .NET 4.5, αντιγραφό ςτο 4 To She...
SQLite ή Compact CE?  Αρχικϊ SQLite -> Προβλόματα ςυγχρονιςμού  (DUH !)    Write Ahead logging, ςημαύνει ότι φαύνονται  ...
Επόμενα Βήματα Δημιουργύα File Manager Γενικό Καθϊριςμα (DUH!) Επαναφορϊ των Unit Tests (Duh ?) Mock Server   WebAPI?...
Links για Πίθο Pithos trial  http://pithos.okeanos.io Synnefo Documentation  http://www.synnefo.org/docs/synnefo/latest/...
Χρήςιμα Links Parallel FX Team blog  http://blogs.msdn.com/b/pfxteam Caliburn.Micro  http://caliburnmicro.codeplex.com/...
Χρήςιμα Βιβλία C# 5 in a Nutshell, O’Riley Parallel Programming with .NET, Microsoft• Pro Parallel Programming with C#, ...
Próximos SlideShares
Carregando em…5
×

Πίθος - Αρχιτεκτονική και τεχνολογίες .NET

385 visualizações

Publicada em

Publicada em: Tecnologia
  • Entre para ver os comentários

  • Seja a primeira pessoa a gostar disto

Πίθος - Αρχιτεκτονική και τεχνολογίες .NET

  1. 1. Αρχιτεκτονικό και Σεχνολογύεσ .NETΠαναγιώτησ ΚαναβόσΠΙΘΟΣ
  2. 2.  Object storage αντύςτοιχο του Amazon S3/Azure Blob storage Τπηρεςύα του Synnefo Γραμμϋνο ςε Python Clients για Web, Windows, iOS, Android, Linux
  3. 3. Synnefo
  4. 4. Client API REST βαςιςμϋνο ςτο OpenStack Object Storage API Accounts, Containers χωρύσ Folders GET για data, object info PUT, POST για upload και update data
  5. 5. Δομή
  6. 6. Extensions ςτο API  Block Storage  Partial Upload/Download  Permissions, Versions  Metadata Queries  UUIDs για Object IDs  Object updates (copy, move)
  7. 7. Χαρακτηριςτικά API Δεν υπϊρχουν folders Placeholder directory object για metadata Block updates ΜΟΝΟ Merkle hashing για εντοπιςμό αλλαγμϋνων block Χρόςη SHA256
  8. 8. Merkle Hashing Top Hash Hash of #1- Hash of #2- 2 Hashes 3 Hashes Block #1 Block #2 Block #3 Block #4 Hash Hash Hash Hash
  9. 9. Διαδικαςία DownloadGet Hashmap Calculate local Find different from server hashmap blocks Download Patch local file blocks with blocks
  10. 10. Διαδικαςία Upload Server respondsCalculate local PUT to server with missing hashmap block hashes PUT missing Server responds blocks at Repeat from #2 201container level
  11. 11. Pithos Client Πολλαπλϊ accounts ανϊ μηχϊνημα ΢υγχρονιςμόσ τοπικού folder με account ςτον Πύθο Εντοπιςμόσ τοπικών αλλαγών και upload Εντοπιςμόσ αλλαγών ςτο server και download Τπολογιςμόσ Merkle Hash για κϊθε αρχεύο
  12. 12. Η αρχιτεκτονική UI Core Networking Storage WPF File Agent CloudFiles SQLite Poll Agent MVVM Network Agent SQL Server Caliburn HttpClient Compact Micro Status Agent
  13. 13. Τεχνολογίεσ .ΝΕΣ 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
  14. 14. Οι προκλήςεισ Χειριςμόσ πιθανόσ εκατοντϊδων file events Hashing πολλών/μεγϊλων αρχεύων Πολλαπλϋσ αργϋσ κλόςεισ ςτο server Αςταθϋσ δύκτυο Παρόλαυτα να μην κολλϊει Minimal UI με επαρκεύσ πληροφορύεσ
  15. 15. Χειριςμόσ Events Poll Agent Uploader/Downloader• Listen • Queue requests• Wait for Idle • Get Server • Process each file • Network ops for hashes files • Compare hashes • Identify changes File Agent Network Agent
  16. 16. Χειριςμόσ Events (2) Χρόςη producer/consumer Αποθόκευςη των events ςε ConcurrentQueue Επεξεργαςύα ΜΟΝΟ μετϊ από timeout
  17. 17. Merkle Hashing Γιατύ μιςώ το Game of Thrones Αςύγχρονη ανϊγνωςη blocks Παρϊλληλο Hashing κϊθε block Χρόςη OpenSSL επειδό ϋχει SSE Περιοριςμόσ ςτο concurrency Προςοχό ςτη μνόμη!
  18. 18. Memory Leaks ςε ManagedEnvironment!  4ΜΒ Blocks? Large Memory αλλϊ …  Γρόγορο διϊβαςμα 2GB ανϊ 64ΚΒ  Κατϋβαςμα 600ΜΒ ανϊ x KBs  Σρελόσ αριθμόσ αντικειμϋνων που περιμϋνει collection κατϊ τη διϊρκεια CPU/IO intensive processing  Που να προλϊβει ο Garbage Collector!
  19. 19. Hashing  100% CPU? Καλό το multicore αλλϊ  Μπλοκϊρει το ςύςτημα για μεγϊλα αρχεύα! Επιλογό για περιοριςμό των παρϊλληλων block hash ops Βελτιώςεισ:  Περιοριςμόσ για «μεγϊλα» αρχεύα  «Throttling» του File Read
  20. 20. Πολλαπλέσ αργέσ κλήςεισ Κϊθε κλόςη ϋνα Task Σαυτόχρονα REST calls ανϊ account και shares Task.WhenAll για να επεξεργαςτούμε όλα τα αποτελϋςματα
  21. 21. Αςταθέσ Δίκτυο Χρόςη System.Net.Http.HttpClient Αποθόκευςη των blocks ςε cache Έλεγχοσ για orphans Αςύγχρονο Retry των κλόςεων
  22. 22. Αντοχή ςε ςκαςίματα Χρόςη Transactional NTFS αν εύναι διαθϋςιμο Thanks MS for killing it! Σροποπούηςη αντιγρϊφων και File.Replace διαφορετικϊ
  23. 23. Να μην κολλάει Χρόςη ανεξϊρτητων agents Asynchronous operations όπου εύναι δυνατόν Χρόςη async/await για πιο κατανοητό κώδικα Απαραύτητο το .ConfigureAwait(false)! ΠΡΟ΢ΟΧΗ ςτο async void
  24. 24. Minimal UI Χρόςη WPF, MVVM Χρόςη Progress για την ενημϋρωςη του UI  Ενςωματωμϋνο ςτο .NET 4.5, αντιγραφό ςτο 4 To Shell εύναι το Icon! Έλλειψη WPF Notification Icon Προβληματικό Data Binding ςε menu
  25. 25. SQLite ή Compact CE?  Αρχικϊ SQLite -> Προβλόματα ςυγχρονιςμού (DUH !)  Write Ahead logging, ςημαύνει ότι φαύνονται παλιότερα δεδομϋνα  Αλλαγό ςε SQL Compact λόγω προβλημϊτων ςυγχρονιςμού (duh ?)  Μόπωσ ϋπρεπε να ϋχουμε κϊποιο καλύτερο caching?  Akavache?  Μύα Document DB θα όταν προτιμότερη
  26. 26. Επόμενα Βήματα Δημιουργύα File Manager Γενικό Καθϊριςμα (DUH!) Επαναφορϊ των Unit Tests (Duh ?) Mock Server  WebAPI? scriptcs? Yumm! Δημιουργύα ανεξϊρτητου Pithos library Windows RT, Windows Phone clients  ΜΕΣΑ το καθϊριςμα
  27. 27. Links για Πίθο Pithos trial http://pithos.okeanos.io Synnefo Documentation http://www.synnefo.org/docs/synnefo/latest/ind ex.html Pithos API Documentation http://www.synnefo.org/docs/pithos/latest/index .html Pithos Windows Client https://code.grnet.gr/projects/pithos-ms-client
  28. 28. Χρήςιμα Links Parallel FX Team blog http://blogs.msdn.com/b/pfxteam Caliburn.Micro http://caliburnmicro.codeplex.com/ Ayende’s BufferPool http://ayende.com/blog/4827/answer- stopping-the-leaks
  29. 29. Χρήςιμα Βιβλία 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

×