Title of Presentation

582
-1

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
582
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
2
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Title of Presentation

  1. 1. Projet “Velocity” le cache mémoiredistribué<br />Yves Chtepenko<br />Architecte de solution <br />Cambridge Technology Partners<br />
  2. 2. Premium Partner<br />
  3. 3. Budapest<br /> 40 Consultants<br /> India<br /> 4000+ Consultants<br />Zurich<br />40 Employees<br />Nyon<br />170 Employees<br />Mission<br />To deliver high Business value through Innovative IT and Management Consulting solutions and services.<br />Customer-Centric<br />Built on a unique combination of client partnerships, leadership, technology expertise, partnership, and people to lead today's companies.<br />Strong local presence<br />Established in Switzerland since 1996 with more than 210 employees in Geneva and Zurich with a Global Delivery Center in Budapest and a strategic partnership in India.<br />Microsoft Gold Partner<br />One of the oldest and most active Microsoft Partners in Switzerland. <br />Visit our Multi-touch Mobile Collaboration Platform !!! <br />
  4. 4. Agenda<br />Etat des lieux<br />Présentation du projet « Velocity »<br />Velocity en action<br />Démo<br />Futures évolutions<br />Questions & Réponses<br />
  5. 5. Le projet «Velocity»<br />Etat des lieux<br />
  6. 6. Le cache dans les applications<br />Accès rapide aux données de références<br />Local à chaque instance de l’application<br />Evolution des architectures<br />Software as Service, multi-tiers <br />Sources de données multiples: db, web service<br />Agrégation des données<br />Amélioration des performances<br />
  7. 7. Le projet «Velocity»<br />Présentation<br />
  8. 8. Qu’est ce que Velocity?<br />C’est un cache mémoire distribué pour les applications, pour tout type d’objet: objet de la CLR, XML ou objets binaires.<br />Velocity permet de «fusionner» la mémoire des machines et d’en proposer une vue unifiée pour les clients du service.<br />Vueunifiée du cache <br />
  9. 9. Scenarios d’utilisation<br />Données de référence<br />Accès en lecture seule par un grand nombre<br />Données d’activité<br />Lecture et écriture par un seul processus<br />Ressources<br />Accès en lecture partagé, écriture exclusive<br />
  10. 10. Caractéristiques principales<br />Performance<br />Haute disponibilité<br />Adaptation à la charge <br />Répartition de charge automatique<br />Intégration avec ASP.NET<br />Installé en tant que service ou embarqué.<br />Outils d’administration et de surveillance<br />
  11. 11. Quelle est sa place?<br />Clients<br />Application<br />/ Web Tier<br />…<br />Application<br />Application<br />Velocity ClientLocal Cache<br />Velocity ClientLocal Cache<br />Application<br />Velocity ClientLocal Cache<br />Cache Tier<br />Velocity Service<br />Velocity Service<br />Velocity Service<br />Server 2<br />Server 1<br />Server 3<br />Server Side Callbacks<br />Data Tier<br />Database<br />Cloud<br />
  12. 12. Déploiement<br />Utilisateurs<br />Assemblies<br />Application<br />/ Web Tier<br />…<br />Client Velocity<br />Client Velocity<br />Client Velocity<br />Setup<br />Cache Server Tier<br />Server 3<br />Server 2<br />Server 1<br />Monitoring<br />Velocity Service<br />Velocity Service<br />Velocity Service<br />K1, v1<br />Routing table<br />Le premier installé devient le nœud maître<br />paramètres de Configuration<br />polices de cache Globales<br />informations de partions<br />(Base de données, fichier xml)<br />
  13. 13. Structure logique<br />Velocity Service<br />Velocity Service<br />Velocity Service<br />Velocity Service<br />Cache nommé: Catalogue de produits<br />Cache nommé:Inventaire<br />Régions <br />Clef Objet Tags <br />Région A<br />121 xxxx “Toy” “Child”<br />123 yyyy “Toy” “Chair”.. <br />Host<br />Processus qui héberge l’instance de Velocity.<br />Caches nommés<br />Peuvent s’étendre au travers des machines<br />Définis dans le fichier de configuration<br />Régions<br />Conteneurs de d’éléments du cache<br />Peuvent être créées explicitement ou implicitement<br />Eléments du cache<br />Clef , Objet, Tags, TTL, Timestamps, Version<br />
  14. 14. Le projet «Velocity»<br />Velocity en Action<br />
  15. 15. La table de routage<br />Un sous-ensemble des informations globales de partition et de connexions aux différents nœuds<br />Construite et maintenue de façon incrémentale<br />Comme les tables DNS<br />Les serveurs ont une table de routage<br />Optionnel du côté client, elle permet d’effectuer les opérations (e.g., GET, PUT) directement sur les bons nœuds.<br />
  16. 16. Le Cache Partitionné <br />Application<br />PUT<br />Get(K2)<br />Velocity Client1<br />Velocity Client2<br />Cache2<br />Cache3<br />Cache1<br />Routing Table<br />Routing Table<br />Routing Table<br />Primaire pour K1<br />Primaire pour K2<br />Primaire pour K3<br />K2, V1<br />K2, V1<br />K1, V1<br />K3, V3<br />
  17. 17. Table de routage côté client<br />Application<br />PUT<br />Get(K2)<br />Velocity Client1<br />Velocity Client2<br />Routing Table<br />Routing Table<br />Cache2<br />Cache3<br />Cache1<br />Routing Table<br />Routing Table<br />Routing Table<br />Primaire pour K1<br />Primaire pour K2<br />Primaire pour K3<br />K2, V1<br />K2, V1<br />K1, V1<br />K3, V3<br />
  18. 18. Le Cache distribué<br />Application<br />PUT<br />Get(K2)<br />Velocity Client1<br />Velocity Client2<br />Cache2<br />Cache3<br />Cache1<br />K2, V1<br />K2, V1<br />K2, V1<br />K2, V1<br />
  19. 19. Local Cache<br />Le cache local accélère l’accès au cache.<br />Il utilise le mécanisme de notification pour se rafraichir lorsque les éléments du cache changent.<br />Get(K2)<br />Put(K2, V1)<br />Get(K2)<br />Velocity Client<br />Velocity Client<br />Cache Local <br />Cache Local<br />Routing Table<br />Routing Table<br />Routing Table<br />Cache2<br />Cache3<br />Cache1<br />Routing Table<br />Routing Table<br />Routing Table<br />K2, V1<br />K2, V1<br />Primaire pour K1<br />Primaire pour K3<br />Primaire pour K2<br />K1, V1<br />K3, V3<br />
  20. 20. Adaptation à la charge<br />Serveur Maître<br />Velocity Service<br />Velocity Service<br />Velocity Service<br />Velocity Service<br />Velocity Service<br />Velocity Service<br />Velocity Service<br />Velocity Service<br />Limité à 10 si fichier de configuration XML<br />Nombre de nœuds quasiment illimité si configuration dans une base de donnée<br />
  21. 21. Haute Disponibilité<br />Application<br />PUT<br />Get(K2)<br /><ul><li> Mets l’opération dans la file d’exécution
  22. 22. Exécute l’opération localement
  23. 23. Propage l’opération sur les nœuds secondaires
  24. 24. Attends pour obtenir le quorum
  25. 25. rends le contrôle</li></ul>Velocity Client1<br />Velocity Client<br />Routing Table<br />Routing Table<br />Cache1<br />Cache2<br />Cache3<br />Primaire pour (K1,V1)<br />Primaire pour (K3,V3)<br />Primaire pour(K2,V2)<br />Replication Agent<br />K3, V3<br />K1, V1<br />K2, V2<br />(K2, V2)<br />K2, V2<br />K2, V2<br />Secondaire pour(K1,V1), (K2,V2)<br />Secondaire pour(K1,V1), (K3,V3)<br />Secondaire pour(K2,V2), (K3,V3)<br />K2, V2<br />K1, V1<br />K3, V3<br />K1, V1<br />K3, V3<br />
  26. 26. Failover<br />Cache4<br />Le PM analyse les infos des partitions de Cache2 pour élire le primaire pour k2<br />Partition Manager<br />Primaire pour <br />(K4,V4)<br />Choisis Cache1 comme primaire pour K2 Envoie des messages à Cache1 and Cache3 pour la reconfiguration. <br />Met à jour le GPM<br />Global Partition Map<br />K4, V4<br />Secondary for <br />K1, V1<br />Détecte le défaut de Cache 2. <br />Notifies PM (sur Cache4)<br />Cache1 interroge Cache2 pour savoir si il a une version plus à jour que la sienne. <br />Cache1 se reconfigure comme cache primaire pour K2<br />Cache1<br />Cache2<br />Cache3<br />Routing Table<br />Routing Table<br />Routing Table<br />Reconfiguration<br />Agent<br />K1, V1<br />Primaire pour (K2,V2)<br />Primaire pour(K3,V3)<br />Reconfiguration<br />Agent<br />K2, V2<br />Replication Agent<br />Replication Agent<br />K2, V2<br />Local Partition Map<br />Local Partition Map<br />K2, V2<br />Secondaire pour<br />Secondaire pour<br />Secondaire pour <br />K1, V1<br />
  27. 27. Le projet «Velocity»<br />démo<br />
  28. 28. Mise à jour optimiste<br />GetCacheItem renvoie un objet version<br />Chaque mise a jour sur un objet incrémente son numéro de version<br />Fournit la version obtenue précédemment avec un Put/Remove<br />Put/Remove seront réalisés uniquement si le numéro de version fourni concorde avec celui du cache. <br />Deux clients accèdent au même objet<br /><br />Ils modifient l’objet<br />Le second Client arrive le premier; sa mise à jour fonctionne; le numéro de version est incrémenté.<br /><br /><br />Le premier client essaie de mettre à jour mais échoue car son numéro de version ne correspond pas à celui du cache.<br /><br />
  29. 29. Mise à jour optimiste<br />Mise à jour pessimiste<br />Accès concurrent <br />Client 2<br />Client 1<br /><br /><br /><br /><br />Velocity Cache<br />K1,V1<br />K1,V2<br />K1,V1<br />K1,V2<br /><br /><br /><br /><br />Velocity Cache<br />K1,V1<br />K1,V1<br />K1,V1<br />K1,V2<br />
  30. 30. Verrou pessimiste<br />Client1: <br />GetAndLock ("k1")<br />Client3:<br /> Get ("k1")<br />Client2:<br /> GetAndLock ("k1")<br />GetAndLock reçoit un identifiant de verrou<br />Les Get réussissent.<br /> les autres GetAndLock sur le même élément échouent<br />GetAndLock – Lit l’objet et le verrouille<br />Les autres appels GetAndLock<br />Au bout du délai d‘expiration du verrou celui ci est libéré.<br />Les simples Get ne sont pas bloquées.<br />L’opération Put écrase le verrou<br />PutAndUnlock – Met à jour l’objet et enlève le verrou<br />K1<br />
  31. 31. Le mécanisme d’éviction<br />Eviction sur expiration seulement<br />Libère les éléments expiré. <br />Périodique par partition<br />Eviction forcée <br />Libère les éléments expirés et non expirés en fonction de leur fréquence d’accès<br />Par requête<br />Peut être désactivé.<br />Eviction en fonction de la disponibilité de la mémoire<br />Un processus est chargé de surveillé la disponibilité de la mémoire (polling per second) et évite l’écriture sur disque<br />Déclenche l’éviction forcée à 85% d’utilisation de la mémoire système pour en libérer 5%.<br />
  32. 32. Notification d'événement (v1)<br />Abonnement aux changements de données dans le cache <br />Appel d’un délégué sur le client quand un changement survient<br />Notifications au niveau objet, région et cache nommé<br />
  33. 33. Sécurité (V1)<br />Option de désactivation de la sécurité<br />Option de sécurité par jeton<br />On assigne un jeton au niveau du cache nommé<br />Les applications doivent utiliser GetCache() avec ce jeton.<br />Option de sécurité par compte de service<br />Authentification d’un compte de service<br />Assignation d’un compte de service au niveau du cache nommé.<br />Sécurité au niveau du transport<br />Options de sécurité de WCF<br />E.g., Encryptions<br />
  34. 34. Administration & Monitoring<br />Logging<br />Provider model; par défault ETW, dans des fichiers log.<br />Administration<br />Commandes Powershell<br />Démarrage and et arrêt du cluster ou service, configure caches nommées.<br />Statistiques du cache<br />Intégration à Perfmon<br />
  35. 35. Déploiement – pré requis <br />Versions de Windows supportées<br />XP sp3 <br />Vista SP1<br />Serveur 2003<br />Serveur 2008 <br />Framework 3.5 (utilise WCF)<br />Windows PowerShell<br />
  36. 36. Le projet «Velocity»<br />démo<br />
  37. 37. Le projet «Velocity»<br />Post V1<br />
  38. 38. Persistance<br />Callback for read-through, write-behind <br />Specified at Named Cache Level<br />Read-Through<br />Called when item not present in cache<br />Callback returns the object/serialized bytes<br />Write-Behind<br />Writes to cache are queued <br />Callback called asynchronously in batches<br />Re-tries upon failure<br />
  39. 39. Cache embarqué<br />Les composants client et serveur s’execute dans le processus de l’application<br />Evite la sérialisation et transport<br />Très bonne performance, latence faible<br />Répartition de charge difficile<br />Parfait pour le cache répliqué<br />Application<br />Application<br />Application<br />PUT k2,v2<br />Velocity Components <br />Velocity Components <br />Velocity Components <br />K2, V2<br />K2, V2<br />K2, V2<br />K3, V3<br />K3, V3<br />K3, V3<br />K1, V1<br />K1, V1<br />K1, V1<br />
  40. 40. Exécution de requête LINQ<br />from toy in catalog<Toy>()<br /> where toy.ToyPrice > 300<br /> select toy;<br />Velocity Client<br />Object Manager<br />Object Manager<br />Object Manager<br />Cache API<br />Query Processor<br />Query Processor<br />Query Processor<br />Federated Query Processor<br />In-memory Data Manager<br />In-memory Data Manager<br />In-memory Data Manager<br />Local Cache<br />Dispatch Manager<br />from toy in catalog<Toy>()<br />where toy.ToyPrice > 300<br /> select toy;<br />Cache2<br />Cache1<br />Cache3<br />Primary Regions<br />Primary Regions<br />Primary Regions<br />ToyRegion<br />Toy3, 400<br />Toy2, 350<br />Toy4, 100<br />Toy1, 500<br />
  41. 41. On-Premises Applications<br /> Application<br />Application <br />ASP.NET Application<br />Velocity Client<br />Velocity Client<br />Velocity Client<br />Velocity Cache<br />Storage/SSDS<br />
  42. 42. Velocity V1 Roadmap<br />CTP1<br /><ul><li>TechEd 2008</li></ul>CTP2<br /><ul><li>PDC 2008</li></ul>CTP3<br /><ul><li>Mix 2009</li></ul>RTM<br /><ul><li>Mid 2009</li></li></ul><li>Velocity Vision<br />
  43. 43. Le projet «Velocity»<br />Ressources<br />
  44. 44. Le projet «Velocity»<br />Le blog de l’équipe<br />http://blogs.msdn.com/velocity<br />Des vidéos:<br />http://channel9.msdn.com/tags/Velocity/<br /> MSDN<br />http://msdn.microsoft.com/en-us/data/cc655792.aspx<br />http://msdn.microsoft.com/fr-fr/library/cc645013(en-us).aspx<br />
  45. 45. Le projet «Velocity»<br />Des Questions?<br />Yves.Chtepenko@CTP-CONSULTING.COM<br />
  46. 46. Save the date for tech·days nextyear!<br />14 – 15 avril 2010, CICG <br />
  47. 47. Premium Sponsoring Partners<br />Classic Sponsoring Partners<br />

×