projet “velocity” le cache mémoire distribué

42
Projet “Velocity” le cache mémoire distribué Yves Chtepenko Architecte de solution Cambridge Technology Partners

Upload: josh

Post on 11-Jan-2016

62 views

Category:

Documents


5 download

DESCRIPTION

Projet “Velocity” le cache mémoire distribué. Yves Chtepenko Architecte de solution Cambridge Technology Partners. Premium Partner. Budapest 40 Consultants. India 4000+ Consultants. Zurich 40 Employees. Nyon 170 Employees. Mission - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Projet  “Velocity”  le cache  mémoire distribué

Projet “Velocity” le cache mémoire

distribuéYves ChtepenkoArchitecte de solutionCambridge Technology Partners

Page 2: Projet  “Velocity”  le cache  mémoire distribué

Premium Partner

Page 3: Projet  “Velocity”  le cache  mémoire distribué

MissionTo deliver high Business value through Innovative IT and Management Consulting solutions and services.

Customer-Centric Built on a unique combination of client partnerships, leadership, technology expertise, partnership, and people to lead today's companies.

Zurich40 Employees

Budapest 40 Consultants

Nyon170 Employees

India 4000+ Consultants

Strong local presenceEstablished 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.

Microsoft Gold PartnerOne of the oldest and most active Microsoft Partners in Switzerland.

Visit our Multi-touch Mobile Collaboration Platform !!!

Page 4: Projet  “Velocity”  le cache  mémoire distribué

Agenda

Etat des lieuxPrésentation du projet « Velocity »Velocity en actionDémoFutures évolutionsQuestions & Réponses

Page 5: Projet  “Velocity”  le cache  mémoire distribué

Le projet «Velocity»

Etat des lieux

Page 6: Projet  “Velocity”  le cache  mémoire distribué

Le cache dans les applications

Accès rapide aux données de références

Local à chaque instance de l’application

Evolution des architecturesSoftware as Service, multi-tiers Sources de données multiples: db, web serviceAgrégation des donnéesAmélioration des performances

Page 7: Projet  “Velocity”  le cache  mémoire distribué

Le projet «Velocity»

Présentation

Page 8: Projet  “Velocity”  le cache  mémoire distribué

Qu’est ce que Velocity?

C’est un cache mémoire distribué pour les applications, pour tout type d’objet: objet de la CLR, XML ou objets binaires.Velocity permet de «fusionner» la mémoire des machines et d’en proposer une vue unifiée pour les clients du service.

Vue unifiée du cache

Page 9: Projet  “Velocity”  le cache  mémoire distribué

Scenarios d’utilisation

Données de référenceAccès en lecture seule par un grand nombre

Données d’activitéLecture et écriture par un seul processus

RessourcesAccès en lecture partagé, écriture exclusive

Page 10: Projet  “Velocity”  le cache  mémoire distribué

Caractéristiques principales

PerformanceHaute disponibilitéAdaptation à la charge Répartition de charge automatiqueIntégration avec ASP.NETInstallé en tant que service ou embarqué.Outils d’administration et de surveillance

Page 12: Projet  “Velocity”  le cache  mémoire distribué

Déploiement

Server 1 Server 2 Server 3

Application/ Web Tier

Cache Server Tier

paramètres de Configurationpolices de cache Globalesinformations de partions(Base de données, fichier xml)

Velo

city

Serv

ice

Client Velocity Client VelocityClient Velocity

Utilisateurs

Velo

city

Serv

ice

Velo

city

Serv

ice

Assemblies

Setup

Routing table

K1, v1

Monitoring

Le premier installé

devient le nœud maître

Page 13: Projet  “Velocity”  le cache  mémoire distribué

Structure logique

HostProcessus qui héberge l’instance de Velocity.

Caches nommésPeuvent s’étendre au travers des machinesDéfinis dans le fichier de configuration

RégionsConteneurs de d’éléments du cachePeuvent être créées explicitement ou implicitement

Eléments du cacheClef , Objet, Tags, TTL, Timestamps, Version

Régions Région A

Clef Objet Tags Clef Objet Tags 121 xxxx “Toy” “Child”

123 yyyy “Toy” “Chair”..

Velocity ServiceCache nommé: Catalogue de produits

Cache nommé: Inventaire

Velocity Service

Velocity Service

Velocity Service

Page 14: Projet  “Velocity”  le cache  mémoire distribué

La table de routage

Un sous-ensemble des informations globales de partition et de connexions aux différents nœudsConstruite et maintenue de façon incrémentale

Comme les tables DNS

Les serveurs ont une table de routageOptionnel du côté client, elle permet d’effectuer les opérations (e.g., GET, PUT) directement sur les bons nœuds.

Page 15: Projet  “Velocity”  le cache  mémoire distribué

Application

Cache2Cache1

Primaire pour K2

K2, V1

Primaire pour K1

K1, V1

Cache3

Primaire pour K3

K3, V3

Velocity Client2

Le Cache Partitionné

Get(K2)

K2, V1

Velocity Client1PUT

Routing Table

Routing Table

Routing Table

Page 16: Projet  “Velocity”  le cache  mémoire distribué

Application

Cache2Cache1

Primaire pour K2

K2, V1

Primaire pour K1

K1, V1

Cache3

Primaire pour K3

K3, V3

Velocity Client2

Table de routage côté client

Get(K2)

Routing Table

K2, V1

Velocity Client1

Routing Table

PUT

Routing Table

Routing Table

Routing Table

Page 17: Projet  “Velocity”  le cache  mémoire distribué

Le Cache distribuéApplication

Cache2Cache1

K2, V1

Cache3

Velocity Client2

Get(K2)

K2, V1

Velocity Client1PUT

K2, V1K2, V1

Page 18: Projet  “Velocity”  le cache  mémoire distribué

Velocity Client

Cache Local

Local CacheLe cache local accélère l’accès au cache.Il utilise le mécanisme de notification pour se rafraichir lorsque les éléments du cache changent.Put(K2, V1)

Cache2Cache1

Primaire pour K2

K2, V1

Primaire pour K1

K1, V1

Cache3

Primaire pour K3

K3, V3

Velocity Client

Cache Local K2, V1

Get(K2)

Get(K2)

Routing Table

Routing Table

Routing Table

Routing Table

Routing Table

Routing Table

Page 19: Projet  “Velocity”  le cache  mémoire distribué

Adaptation à la charge

Velo

city

Serv

ice

Velo

city

Serv

ice

Velo

city

Serv

ice

Serveur Maître

Velo

city

Serv

ice

Velo

city

Serv

ice

Velo

city

Serv

ice

Velo

city

Serv

ice

Velo

city

Serv

ice

Limité à 10 si fichier de configuration XMLNombre de nœuds quasiment illimité si configuration dans une base de donnée

Page 20: Projet  “Velocity”  le cache  mémoire distribué

Application(K2, V2)

Cache2Cache1 Cache3

Primaire pour(K2,V2)

Haute Disponibilité

Primaire pour (K1,V1)

Primaire pour (K3,V3)

K3, V3

Velocity Client1

Routing Table

K2

, V2

PUT

Secondaire pour(K2,V2), (K3,V3)

K2, V2

K1, V1

K3, V3

Secondaire pour(K1,V1), (K3,V3)

K3, V3

K1, V1

Secondaire pour(K1,V1), (K2,V2)

K1, V1

K2, V2

K2, V2

Replication Agent

• Mets l’opération dans la file d’exécution

• Exécute l’opération localement

• Propage l’opération sur les nœuds secondaires

• Attends pour obtenir le quorum

• rends le contrôle

Get(K2)

Velocity Client

Routing Table

Page 21: Projet  “Velocity”  le cache  mémoire distribué

Cache4

Primaire pour (K4,V4)

K4, V4

Secondary for

K1, V1

Partition Manager

Global Partition Map

Cache2Cache1 Cache3

Primaire pour (K2,V2)

Failover

Primaire pour(K3,V3)

Routing Table

Secondaire pour

K2, V2

K1, V1

Secondaire pour Secondaire pour

K2, V2

K2, V2

Replication Agent

ReconfigurationAgent

Local Partition Map

Routing Table

Routing Table

Replication Agent

ReconfigurationAgent

Local Partition Map

Détecte le défaut de Cache 2.

Notifies PM (sur Cache4)

Choisis Cache1 comme primaire pour K2 Envoie des messages à Cache1 and Cache3 pour la reconfiguration. Met à jour le GPM

Le PM analyse les infos des partitions de Cache2 pour élire le primaire pour k2

Cache1 interroge Cache2 pour savoir si il a une version plus à jour que la sienne.

Cache1 se reconfigure comme cache primaire pour K2

K1, V1

Page 22: Projet  “Velocity”  le cache  mémoire distribué

Le projet «Velocity»

démo

Page 23: Projet  “Velocity”  le cache  mémoire distribué

Mise à jour optimiste

Mise à jour pessimisteVelocity Cache

Accès concurrent

GetCacheItem (k1,v1)

GetCacheItem (k1,v1)

PutCacheItem

(k1,v1)

PutCacheItem (k1,v1)

K1,V1 K1,V2K1,V1 K1,V2

Velocity Cache

GetAndLock (k1,v1)

GetAndLock (k1,v1)

Get(k1,v1)

PutAndUnlock

(k1,v1)

K1,V1 K1,V1K1,V1 K1,V2

Client 2

Client 1

Page 24: Projet  “Velocity”  le cache  mémoire distribué

Le mécanisme d’éviction

Eviction sur expiration seulementLibère les éléments expiré. Périodique par partition

Eviction forcée Libère les éléments expirés et non expirés en fonction de leur fréquence d’accèsPar requêtePeut être désactivé.

Eviction en fonction de la disponibilité de la mémoire

Un processus est chargé de surveillé la disponibilité de la mémoire (polling per second) et évite l’écriture sur disqueDéclenche l’éviction forcée à 85% d’utilisation de la mémoire système pour en libérer 5%.

Page 25: Projet  “Velocity”  le cache  mémoire distribué

Notification d'événement (v1)

Abonnement aux changements de données dans le cache

Appel d’un délégué sur le client quand un changement survient

Notifications au niveau objet, région et cache nommé

Page 26: Projet  “Velocity”  le cache  mémoire distribué

Sécurité (V1)

Option de désactivation de la sécuritéOption de sécurité par jeton

On assigne un jeton au niveau du cache nomméLes applications doivent utiliser GetCache() avec ce jeton.

Option de sécurité par compte de service

Authentification d’un compte de serviceAssignation d’un compte de service au niveau du cache nommé.

Sécurité au niveau du transportOptions de sécurité de WCFE.g., Encryptions

Page 27: Projet  “Velocity”  le cache  mémoire distribué

Administration & Monitoring

Logging Provider model; par défault ETW, dans des fichiers log.

AdministrationCommandes Powershell

Démarrage and et arrêt du cluster ou service, configure caches nommées.Statistiques du cache

Intégration à Perfmon

Page 28: Projet  “Velocity”  le cache  mémoire distribué

Déploiement – pré requis

Versions de Windows supportéesXP sp3 Vista SP1Serveur 2003Serveur 2008

Framework 3.5 (utilise WCF)Windows PowerShell

Page 29: Projet  “Velocity”  le cache  mémoire distribué

Le projet «Velocity»

démo

Page 30: Projet  “Velocity”  le cache  mémoire distribué

Le projet «Velocity»

Post V1

Page 31: Projet  “Velocity”  le cache  mémoire distribué

Persistance

Callback for read-through, write-behind Specified at Named Cache LevelRead-Through

Called when item not present in cache

Callback returns the object/serialized

bytes

Write-BehindWrites to cache are queued

Callback called asynchronously in batches

Re-tries upon failure

Page 32: Projet  “Velocity”  le cache  mémoire distribué

Application

Cache embarquéLes composants client et serveur s’execute dans le processus de l’applicationEvite la sérialisation et transportTrès bonne performance, latence faibleRépartition de charge difficileParfait pour le cache répliqué

Velocity Components

K3, V3 K1, V1

K2, V2

Application

Velocity Components

K3, V3 K1, V1

K2, V2

Application

Velocity Components

K3, V3 K1, V1

K2, V2

PUT k2,v2

Page 33: Projet  “Velocity”  le cache  mémoire distribué

Exécution de requête LINQ

Cache2Cache1

Primary RegionsPrimary Regions

Toy1, 500

Cache3

Primary Regions

Toy2, 350 Toy3, 400

Cache API

Local Cache

Velocity Client

Dispatch Manager

Federated Query Processor

Object Manager

In-memory Data Manager

Query Processor

Object Manager

In-memory Data Manager

Query Processor

Object Manager

In-memory Data Manager

Query Processor

from toy in catalog<Toy>() where toy.ToyPrice > 300 select toy;

ToyRegionToy4,

100

from toy in catalog<Toy>()where toy.ToyPrice > 300 select toy;

Page 34: Projet  “Velocity”  le cache  mémoire distribué

On-Premises Applications

ApplicationApplication ASP.NET Application

Storage/SSDS

Velocity Client

Velocity Client

Velocity Client

Velocity Cache

Page 35: Projet  “Velocity”  le cache  mémoire distribué

Velocity V1 Roadmap

CTP1• TechEd

2008

CTP2• PDC

2008

CTP3• Mix

2009

RTM• Mid

2009

Page 36: Projet  “Velocity”  le cache  mémoire distribué

Velocity Vision

Web Scenari

os

• Cache distribué & global d’objets • Accès à faible latence• Adaptation a la charge• Hautement disponible

• Cache pour des données de référence ou d’activité

• Dimensionnement d’appications IIS/ASP.Net

Enterprise / HPC

Scenarios

• Cache accessible par requêtes LINQ

• Intégration avec HPC server.

• Persistance• Supporte differents

type de clients.

Software +

Services Scenarios

• Intégration avec SSDS, Windows Azure

• Plus de services de données• BI,

Streaming, rapport.

• Accès REST etSOA

Page 37: Projet  “Velocity”  le cache  mémoire distribué

Le projet «Velocity»

Ressources

Page 38: Projet  “Velocity”  le cache  mémoire distribué

Le projet «Velocity»

Le blog de l’équipehttp://blogs.msdn.com/velocity

Des vidéos:http://channel9.msdn.com/tags/Velocity/

MSDNhttp://msdn.microsoft.com/en-us/data/cc655792.aspxhttp://msdn.microsoft.com/fr-fr/library/cc645013(en-us).aspx

Page 39: Projet  “Velocity”  le cache  mémoire distribué

Le projet «Velocity»

Des Questions?

[email protected]

Page 40: Projet  “Velocity”  le cache  mémoire distribué

Save the date for tech·days next year!

14 – 15 avril 2010, CICG

Page 41: Projet  “Velocity”  le cache  mémoire distribué

Classic Sponsoring Partners

Premium Sponsoring Partners

Page 42: Projet  “Velocity”  le cache  mémoire distribué