Azure Web Camp : Cache Distribué

27
#azurecamp Cache Distribué Thomas Conté Technical Evangelist Microsoft 24 juin 2014

description

Tour d'horizon des solutions de cache distribué dans Azure: In-Role Cache, Managed Cache et le nouveau Azure Redis Cache.

Transcript of Azure Web Camp : Cache Distribué

Page 1: Azure Web Camp : Cache Distribué

#azurecampCache Distribué

Thomas ContéTechnical EvangelistMicrosoft

24 juin 2014

Page 2: Azure Web Camp : Cache Distribué

Windows Azure Camp: nos partenairesSPONSORS MICROSOFT AZURE CAMP

Page 3: Azure Web Camp : Cache Distribué

Pourquoi un cache distribué?

Tour d’horizonZoom sur Redis

Agenda

Page 4: Azure Web Camp : Cache Distribué

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é?

Page 5: Azure Web Camp : 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

Page 6: Azure Web Camp : Cache Distribué

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

Page 7: Azure Web Camp : Cache Distribué
Page 8: Azure Web Camp : Cache Distribué

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

Page 9: Azure Web Camp : Cache Distribué

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

Page 10: Azure Web Camp : Cache Distribué
Page 11: Azure Web Camp : Cache Distribué

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

Page 12: Azure Web Camp : Cache Distribué

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

Page 13: Azure Web Camp : Cache Distribué

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

Page 14: Azure Web Camp : Cache Distribué

Managed Cache Service: prix

Page 15: Azure Web Camp : Cache Distribué

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

Page 16: Azure Web Camp : Cache Distribué
Page 17: Azure Web Camp : Cache Distribué

Accessible uniquement aux US (US East, US West)

Offre Redis et memcached as-a-service

Offre partenaire: redislabs.com

Page 18: Azure Web Camp : Cache Distribué

#azurecampZoom sur Redis

Page 19: Azure Web Camp : Cache Distribué

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.

Page 20: Azure Web Camp : Cache Distribué

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

Page 21: Azure Web Camp : Cache Distribué

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

Page 22: Azure Web Camp : Cache Distribué

Transactions: MULTI, EXEC/DISCARD

Publish / Subscribe

Lua Scripting: EVAL

Temps d’expiration: EXPIRE, TTL

SDKs pour la plupart des langages

Mais aussi…

Page 23: Azure Web Camp : Cache Distribué

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?

Page 24: Azure Web Camp : Cache Distribué

<?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

Page 25: Azure Web Camp : Cache Distribué

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

Page 26: Azure Web Camp : Cache Distribué

Boostez votre projet cloud!

Remportez un Hands-On

avec nos spécialistes Azure le 3 juillet

Inscrivez-vous sur notre stand!

Page 27: Azure Web Camp : Cache Distribué

© 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.