This document provides an overview and introduction to Microsoft's AppFabric distributed caching platform. It discusses what AppFabric is, why a distributed cache is useful, how to configure an AppFabric client and server, how to manage a cache cluster, and considerations around concurrency and high availability. The document also outlines some common caching patterns like cache-aside and discusses how AppFabric compares to other caching solutions.
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
The Need For Speed - NxtGen Cambridge
1. 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
2. Agenda
• What is AppFabric?
• Why a Distributed Cache?
• Configuring a client
• Configuring a server
• Managing a cache
• Concurrency
• High availability / load balancing
4. 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
5. 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
6. 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
7. 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
8. 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
9. 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
10. 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
11. Using AppFabric 1
• Add/Remove
• Concurrency
– Optimistic
• Version based
– Pessimistic
• Lock based
12. 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
13. 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
14. 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
15. AppFabric 1.1
• CTP 1 released Aug 2011
• New session state and output cache
providers
• Read-through/write behind cache
– Inherit from DataCacheStoreProvider
16. 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
18. 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