Bienvenue à Blogs CodeS-SourceS Identification | Inscription | Aide

Atteint de JavaScriptite Aiguë [Cyril Durand]

Expert ASP.net Ajax et WCF, Cyril Durand parle dans son blog de point techniques sur ASP.net, ASP.net Ajax, JavaScript, WCF et .net en général. Cyril est également consultant indépendant, n'hésitez pas à le contacter pour de l'assistance sur vos projets

Actualités

  • Blog de Cyril DURAND, passionné de JavaScript, Ajax, ASP.net et tout ce qui touche au developpement Web Client-Side.

    N'hésitez pas à me contacter pour vos projets .net : architecture, accompagnement, formation, ...

    View Cyril Durand's profile on LinkedIn
    hit counters


    Expertise Commerce server et BizTalk

[mix09] .net 4.0 Velocity - Building scalable and available web applications with Microsoft Project codename “Velocity”

Par Muralidhar Krishnaprasad – Principal Software Architect

DSCF0889

Lors de cette session, nous avons eu un aperçue du projet “Velocity”. Il s’agit d’un système de cache mémoire distribué permettant de stocker toute sorte d’objets. Il est principalement focalisé pour les applications web mais peut être utilisé pour tous types d’applications .net. Velocity se compose de 2 parties : un service windows que l’on doit installer sur les serveurs de cache et une partie client qui utilisera le ou les serveurs de cache. La partie cliente sera intégrée à .net 4.0

DSCF0898 DSCF0897 

Partitionnement et routage

La partie cache peut être composée de plusieurs serveurs. Lorsque l’un des clients, généralement IIS, a besoin d’une information, ou veut stocker une information, Velocity utilisera automatiquement le bon serveur : il existe un système de routage. Cela veut dire que si vous rajoutez un objet dans le pool de serveur de cache, celui-ci se trouvera dans un seul des serveurs, c’est ce que l’on appelle le partitionnement.

Il est possible d’ajouter à chaud des serveurs de cache afin de très facilement améliorer les performances sans même redémarrer les sites web. Si un des serveurs de cache meurt, grâce à un système de backup, les éléments seront automatiquement redistribués sur les autres serveurs de cache.

Afin d’éviter des accès réseaux trop fréquents, il existe un système de cache local, celui-ci contiendra beaucoup moins d’objets que le cache global avec une durée de vie généralement plus court. L’intégrité du cache sera respecté via le système de notification.

DSCF0919DSCF0923 DSCF0922DSCF0926

Concrétement, comment cela se passe ?

Lorsque l’on veut utiliser Velocity, il faut créer un “named cache”, ce cache nommé sera ensuite distribué sur les différents serveurs de cache. Lorsque l’on veut utiliser ce cache nommé, il suffit d’obtenir ce cache via une factory. Grâce au routage et au partitionnement, on obtiendra les informations souhaitées automatiquement : inutile de savoir où sont physiquement stocké les données. Il s’agit d’un système de cache classique, il y a donc des méthodes Get, Put, Remove, …

DSCF0914 DSCF0916

Si vous voulez utiliser Velocity pour votre site web, il vous faut :

  1. Installer velocity sur un ou plusieurs serveurs de cache. Cela installe :
    1. le service windows
    2. la console d’administration powershell
    3. configure la consommation mémoire maximal du service windows
    4. et configure un partage réseau ou une base SQL pour le partage d’information entre les serveurs de cache
  2. Créer un cache via la console d’administration powershell
  3. Modifier le fichier de configuration de votre site web pour utiliser Velocity

DSCF0910

Physiquement, chaque serveur de cache est découpé en différentes entités de caches nommés, qui eux même sont découpés en région, celles-ci contiennent les “Cache items”, qui eux contiennent l’objet stocké en cache (ou caché :) ).

DSCF0915

Synchronisation 

Il est possible de “locker” des éléments afin d’éviter toute modification par un autre thread, il y a 2 modes de fonctionnement :

  • Optimistic locking : les objets sont automatiquement versionnés, l’envoi d’une modification sur un objet n’ayant pas le bon numéro de version renvera une exception
  • Pessimistic locking : un thread prend un objet, si un autre thread veut lire l’objet tout se passera bien, par contre si un autre client veut locker le fichier alors qu’il est déjà utilisé : il y aura une exception

DSCF0928DSCF0929

Notification

Velocity dispose d’un système permettant de notifier aux clients les changements d’un objet : modification, fin de vie, etc …

DSCF0930DSCF0931

Administration, Azure, Linq …

Velocity dispose d’une console d’administration powershell, qui nous permet de voir les statistique sur le nombre d’objets dans le cache, etc …

Au niveau de la sécurité, comme pour un serveur de session, il n’y a rien, tout doit être géré au niveau du réseau. Velocity fonctionne également dans les nuages avec azure et possède un provider Linq (linq to velocity).

DSCF0934 DSCF0937

Enfin ASP.net 4.0 pourra utiliser nativement Velocity : il sera possible de stocker les sessions ! ASP.net 4 aura également un nouveau système de Cache (System.Caching) à base de provider, l’un des provider utilisera Velocity, c’est à dire que si vous utilisez les @OutputCache tout sera stocké dans des serveurs spécifique.

DSCF0927 DSCF0935

Conclusion

Velocity est un projet très intéressant, les concepts sont très simples, au niveau utilisation on ne fait que ajouter, lire des données dans un espace de stockage mais ces fonctionnalités sont très puissantes.

J’ai particulièrement aimé la console d’administration qui permet vraiment de connaitre l’utilisation du cache et ce qu’il contient vraiment. Tous les sites web n’auront pas besoin de Velocity : il s’agit de “l’artillerie lourde” si votre site web est hébergé sur une seule machine, Velocity ne vous sera pas utile. Par contre à partir du moment où vous utilisez du Load Balancing, vous avez tout intérêt à utiliser ce système.

DSCF0939 DSCF0943

Ce projet est actuellement en CTP, il fera partie .net 4.0. Vous pouvez le télécharger ici : http://msdn.microsoft.com/en-us/data/cc655792.aspx.

Merci à Olivier pour le relecture.

Posted: samedi 21 mars 2009 22:18 par cyril
Ce post vous a plu ? Ajoutez le dans vos favoris pour ne pas perdre de temps à le retrouver le jour où vous en aurez besoin :

Commentaires

Pas de commentaires

Les commentaires anonymes sont désactivés

Les 10 derniers blogs postés

- Créer un périphérique Windows To Go 10 ! par Blog de Jérémy Jeanson le 11-21-2014, 04:54

- RDV à Genève le 12 décembre pour l’évènement “SharePoint–Office 365 : des pratiques pour une meilleure productivité !” par Le blog de Patrick [MVP Office 365] le 11-19-2014, 10:40

- [IIS] Erreurs web personnalisées par Blog de Jérémy Jeanson le 11-19-2014, 00:00

- BDD/TDD + Javascript par Fathi Bellahcene le 11-16-2014, 16:57

- Sécuriser sans stocker de mots de passe par Blog de Jérémy Jeanson le 11-15-2014, 08:58

- Où télécharger la preview de Visual Studio 2015 ? par Blog de Jérémy Jeanson le 11-13-2014, 21:33

- Les cartes sont partout ! par Le blog de Patrick [MVP Office 365] le 11-13-2014, 17:26

- [ #Office365 ] Courrier basse priorité ! par Le blog de Patrick [MVP Office 365] le 11-12-2014, 08:56

- [Oracle] Fichier oranfsodm12.dll absent du package client par Blog de Jérémy Jeanson le 11-10-2014, 20:44

- [ #Office365 ] Le chapitre 1 des Groupes est écrit, et alors ? par Le blog de Patrick [MVP Office 365] le 11-10-2014, 20:23