the need for speed - nxtgen cambridge

19
The Need For Speed A Developer’s Guide to Distributed Caching with Velocity AppFabric Phil Pursglove @philpursglove http://philpursglove.blogspot.com http://www.philippursglove.com/Velocity

Upload: phil-pursglove

Post on 17-Dec-2014

608 views

Category:

Technology


3 download

DESCRIPTION

 

TRANSCRIPT

Page 1: The Need For Speed - NxtGen Cambridge

The Need For Speed

A Developer’s Guide to

Distributed Caching with

Velocity AppFabric

Phil Pursglove

@philpursglove

http://philpursglove.blogspot.com

http://www.philippursglove.com/Velocity

Page 2: The Need For Speed - NxtGen Cambridge

Agenda • What is AppFabric?

• Why a Distributed Cache?

• Configuring a client

• Configuring a server

• Managing a cache

• Concurrency

• High availability / load balancing

Page 3: The Need For Speed - NxtGen Cambridge

Caching Review • .NET 1.1

– ASP.NET Cache

• .NET 2.0

– SqlCacheDependency

– Enterprise Library Caching Application Block

• .NET 4.0

– System.Runtime.Caching assembly

– AppFabric

Page 4: The Need For Speed - NxtGen Cambridge

Cache-Aside

• The cache-aside pattern

– See if the item you want is in the cache

– If it isn’t (a cache miss),

• Go and get it i.e. from the DB

• Put it in the cache

– If it is,

• Cast it to the desired type and return it

Page 5: The Need For Speed - NxtGen Cambridge

What is AppFabric?

• A combination of two projects: – A distributed cache

• One logical cache shared across a number of physical servers

• Already being used by: – MSDN Forums

– Xbox Live

– MSN

• A session state provider

• In .NET 4.0, a cache provider – A workflow host

• v1 released June 2010

Page 6: The Need For Speed - NxtGen Cambridge

How Do I Get AppFabric?

• For Devs: – Web Platform Installer, under the Products tab

– Requires SQL Express • If you want to use SQL Server, download the installer

• For IT Pros: – Download the installer from

http://tinyurl.com/appfabric10installer

Page 7: The Need For Speed - NxtGen Cambridge

Why a Distributed Cache?

• Bigger cache

– Many physical servers contribute to one

logical cache

• High availability

– Multiple servers = fault tolerance

• Increased throughput

– Many servers available to fulfil requests

Page 8: The Need For Speed - NxtGen Cambridge

Terminology

• Cluster

– A number of servers running Velocity

– Not related to Windows clustering

• Cache

– A named cache on a cluster

• Region

– A named part of a cache associated to a

single server

Page 9: The Need For Speed - NxtGen Cambridge

What Data Can I Cache In

AppFabric?

• Any serializable .NET object

– Reference Data (Shared Read)

• e.g. Product categories

– Activity Data (Exclusive Write)

• e.g. Shopping Basket

– Resource Data (Read and Write)

• e.g. product stock data

Page 10: The Need For Speed - NxtGen Cambridge

Configuring the AppFabric

Client • Two assembly references to add:

– Microsoft.ApplicationServer.Caching.Client.dll

– Microsoft.ApplicationServer.Caching.Core.dll

• Cache hosts can be hard-coded or in

web.config/app.config

• Clients

– Routing vs Simple

– Local caches

Page 11: The Need For Speed - NxtGen Cambridge

Using AppFabric 1

• Add/Remove

• Concurrency

– Optimistic

• Version based

– Pessimistic

• Lock based

Page 12: The Need For Speed - NxtGen Cambridge

Using AppFabric 2

• Regions

– Live inside a cache

– Tie a group of cached objects to a specific node

– But adds extra options (Tags) for retrieving the

object

Page 13: The Need For Speed - NxtGen Cambridge

Configuring an AppFabric

Server • Cluster configuration can be held:

– On a network share (XML Provider)

– In a SQL Server DB (SQL Provider)

• Integrated Security only

– AppFabric servers must be inside a

domain

Page 14: The Need For Speed - NxtGen Cambridge

Managing An AppFabric

Cluster • Powershell integration

– Can start/stop a whole cluster or

individual servers

– Create new named caches

• But not regions

– Get cache statistics

• MDCAdmin tool

– WPF app sitting on top of Powershell

Page 15: The Need For Speed - NxtGen Cambridge

AppFabric 1.1

• CTP 1 released Aug 2011

• New session state and output cache

providers

• Read-through/write behind cache

– Inherit from DataCacheStoreProvider

Page 16: The Need For Speed - NxtGen Cambridge

Summary

• v1 is worth looking at as a session

state provider

– The end of sticky load-balancing

• v1.1’s new model makes it much more

usable

Page 17: The Need For Speed - NxtGen Cambridge

Questions?

[email protected]

http://philpursglove.blogspot.com

http://www.philippursglove.com/Velocity

@philpursglove

http://slideshare.net/philpursglove

Page 18: The Need For Speed - NxtGen Cambridge

References • Documentation on MSDN

– http://tinyurl.com/msdnappfabric

• Velocity team blog – http://blogs.msdn.com/velocity – http://blogs.msdn.com/endpoint

• AppFabric blog for IT Pros – http://blogs.technet.com/appfabric/

• TechEd videos – http://tinyurl.com/velocityteched

• Mix 09 video – http://tinyurl.com/velocitymixvideo

• Mix 10 video – http://tinyurl.com/velocitymix10video

• ARCCast Video – http://tinyurl.com/velocityscotthavideo

• ScottHa on Velocity – http://tinyurl.com/velocityhanselminutes

• Deep Fried Bytes on AppFabric – http://tinyurl.com/deepfriedappfabric

Page 19: The Need For Speed - NxtGen Cambridge

References • AppFabric coverage on StackOverflow

– http://tinyurl.com/stackoverflowvelocity – http://tinyurl.com/stackoverflowappfabric

• DotNetRocks

– http://tinyurl.com/dotnetrocksappfabric

• Other .NET distributed caches

– NCache - http://tinyurl.com/ncache – Memcached - http://tinyurl.com/smoe – Oracle Coherence – http://tinyurl.com/oraclecoherence – SharedCache – http://codeplex.com/sharedcache

• Extensions Project – http://tinyurl.com/mscacheext

• Admin Tool

– http://mdcadmintool.codeplex.com/