Upload
thomas-conte
View
166
Download
0
Tags:
Embed Size (px)
DESCRIPTION
Tour d'horizon des solutions de cache distribué dans Azure: In-Role Cache, Managed Cache et le nouveau Azure Redis Cache.
Citation preview
#azurecampCache Distribué
Thomas ContéTechnical EvangelistMicrosoft
24 juin 2014
Windows Azure Camp: nos partenairesSPONSORS MICROSOFT AZURE CAMP
Pourquoi un cache distribué?
Tour d’horizonZoom sur Redis
Agenda
Pour améliorer les temps de réponse
Pour alléger la charge sur la base de données
Pour alléger la charge sur les frontaux (stockage d’objets coûteux à calculer)
Pour centraliser le stockage des sessions utilisateurs et rendre les frontaux stateless
Pourquoi un cache distribué?
Toutes les options sont détaillées dans cette page:
http://azure.microsoft.com/en-us/pricing/details/cache/
Azure Redis Cache (preview, annoncé à TechEd)
Managed Cache Service
In-Role Cache
Shared Caching Service (deprecated)
Offres partenaires via le Azure Store
Tour d’horizon des options dans Azure
Ancienne offre de cache distribué
Uniquement accessible via l’ancien portail Silverlight
Sera décommissionné le 3 septembre 2014
Si vous l’utilisez: migration vers le Azure Redis Cache ou le Managed Cache Service (dans cet ordre)
Managed Cache Service pour une migration sans modification du code
Shared Caching Service
S’appuie sur AppFabric Cache (nom de code Velocity)
Cache à héberger soi-même via le Azure SDK
Tourne dans des Worker Roles, au tarif habituel
Librairie cliente .NET dans NuGet
Supporte Regions et Tags
Peut être utilisé pour le ASP.NET Session State
Peut être utilisé pour le ASP.NET Page Output Caching
In-Role Cache
Memcache Server Gateway
Activée en ajoutant simplement un endpoint:
<InputEndpoint name="memcache_default" protocol="tcp" port="11211" />
Permet d’accéder au cache depuis des environnements non-.NET (PHP…)
Memcache Client Shim
Package NuGet fonctionnant uniquement en .NET
Utilité limitée (en .NET, préférer le protocole natif)
In-Role Cache: compatibilité memcache
S’appuie sur AppFabric Cache (nom de code Velocity)
Entièrement géré as-a-service
Actuellement en GA
Autorise des tailles de cache jusqu’à 150 Go
Haute disponibilité dans l’édition Premium
Managed Cache Service
Pas d’option pour créer un cache depuis le portail
Utiliser les cmdlets Azure PowerShell:
Add-AzureAccount
New-AzureManagedCache -Name TestCache -Location "North Europe" -Sku Basic -Memory 128MB
Le cache est alors visible depuis le portail
Managed Cache Service: création
Ajout du package NuGet « Windows Azure Cache »
Modification du web.config: ajout de l’URL et de la clé
Attention aux mises à jour du package// Cache client configured by settings in application config file.DataCache defaultCache = new DataCache("default", "default");// Put and retrieve a test object from the default cache.defaultCache.Put("testkey", "testobject");string strObject = (string)defaultCache.Get("testkey");
Managed Cache Service: utilisation
Managed Cache Service: prix
Annoncé à TechEd, actuellement en preview
Création depuis le nouveau-nouveau portail
Redis 2.8 hébergé sur Windows (transparent)
Peut être utilisé pour le ASP.NET Session State (package RedisSessionStateProvider dans NuGet)
Deux options:
• Basic – un seul nœud, plusieurs tailles disponibles
• Standard – deux nœuds Master/Slave, plusieurs tailles
Azure Redis Cache
Accessible uniquement aux US (US East, US West)
Offre Redis et memcached as-a-service
Offre partenaire: redislabs.com
#azurecampZoom sur Redis
Redis is an open source, BSD licensed, advanced key-value store. It is often
referred to as a data structure server since keys can contain strings,
hashes, lists, sets and sorted sets.
Strings Type de base
Hashes Correspondances champvaleur
Lists Liste de chaînes
Sets Ensemble de chaînes uniques
Sorted Sets Ensemble de chaînes triées par score
Structures de données
Utilisation de chaînes comme compteurs: INCR, DECR, DECRBY
Ajouter des éléments à une chaîne: APPEND
Incrémenter une valeur dans un hash: HINCRBY
Ajouter des valeurs à une liste: LPUSH, RPUSH
Etc.
Opération Atomiques
Transactions: MULTI, EXEC/DISCARD
Publish / Subscribe
Lua Scripting: EVAL
Temps d’expiration: EXPIRE, TTL
SDKs pour la plupart des langages
Mais aussi…
Notre implémentation de Redis supporte les connexions SSL et requiert une authentification par mot de passe
Pour pouvoir utiliser SSL, la librairie doit le supporter – voir le billet sur le site de Redislabs:
http://redislabs.com/blog/secure-redis-ssl-added-to-redsmin-and-clients
Comment s’y connecter?
<?phprequire 'vendor/predis/predis/autoload.php';$client = new Predis\Client([ 'scheme' => 'tcp', 'host' => 'tomtest.redis.cache.windows.net', 'port' => '6379', 'password' => ‘(secret_key)']);$client->set('foo', 'bar');$value = $client->get('foo');?>Hello <?= $value ?>
Exemple en PHP
ConnectionMultiplexer connection = ConnectionMultiplexer.Connect("tomtest.redis.cache.windows.net,ssl=true,password=toto");IDatabase cache = connection.GetDatabase();
// Simple put of integral data types into the cachecache.StringSet("key1", "value");cache.StringSet("key2", 25);
// Simple get of data types from the cachestring key1 = cache.StringGet("key1");int key2 = (int)cache.StringGet("key2");
En .NET, utiliser StackExchange.Redis
Boostez votre projet cloud!
Remportez un Hands-On
avec nos spécialistes Azure le 3 juillet
Inscrivez-vous sur notre stand!
© 2012 Microsoft Corporation. All rights reserved. Microsoft, Windows, and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries.The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.