Scale Your Data Tier With Windows Server App Fabric
Upcoming SlideShare
Loading in...5
×
 

Like this? Share it with your network

Share

Scale Your Data Tier With Windows Server App Fabric

on

  • 4,443 views

The distributed in-memory caching capabilities of Windows Server AppFabric will change how you think about scaling your Microsoft .NET-connected applications. Come learn how the distributed nature of ...

The distributed in-memory caching capabilities of Windows Server AppFabric will change how you think about scaling your Microsoft .NET-connected applications. Come learn how the distributed nature of the AppFabric cache allows large amounts of data to be stored in-memory for extremely fast access, how AppFabric's integration with Microsoft ASP.NET makes it easy to add low-latency data caching across the web farm, and discover the unique high availability features of AppFabric which will bring new degrees of scale and resilience to your data tier and your web applications.

Statistics

Views

Total Views
4,443
Views on SlideShare
4,354
Embed Views
89

Actions

Likes
5
Downloads
90
Comments
0

8 Embeds 89

http://techno-sphere.blogspot.com 37
http://localhost 24
http://gtaeast.torontoug.net 14
http://www.linkedin.com 9
http://www.slideshare.net 2
http://www.lmodules.com 1
http://techno-sphere.blogspot.ca 1
http://techno-sphere.blogspot.ie 1
More...

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment
  • In the future we will be bringing these capabilities to the cloud and bringing some of the cloud capabilities such as service bus and access control to the on-premise server solution as well.

Scale Your Data Tier With Windows Server App Fabric Presentation Transcript

  • 1. Scale Your Data Tier with Windows Server AppFabric
    Chris Dufour, ASP MVP
    Software Architect, Compuware
    chris.dufour@wigets.net
  • 2. Agenda
  • 3. Simple
    Do the simplest thing that will possibly work
  • 4. Scalability
    Able to support the required quality of service as the system load increases
    -Wiktionary
  • 5. Typical Web Architecture
  • 6. Web Explosion
    Web Site’s too slow!!
    Where did my shopping cart go?
    IIS/ASP.NET
    IIS/ASP.NET
    IIS/ASP.NET
    Application
    Application
    Application
    Servers are crashing
    Database
    Database is hot!!
    Services are slow
  • 7. Agenda
  • 8. Data Near Processing
    Cache
    Cache
    Browser
    Smart Client
    Cache
    Web Service
    Cache
    ASP.NET
    Cache
    Database
  • 9. Good but…
    Cache is scoped to machine / process
    Machines die
    Processes recycle
    Cache memory is limited
  • 10. What if?
    You could have as much cache as you wanted?
    You could share a giant cache across servers, services and even clients?
    What if this was something you could simply add to the platform for 1free?
    1Some features may require certain editions of Windows Server
  • 11. Windows Server AppFabric
    AppFabric
    CACHING
    WORKFLOW HOSTING
    SERVICE HOSTING
    MONITORING
    SCALE OUT
    HIGH AVAILABILITY
    MANAGEMENT
  • 12. Unified Cache View
    What is AppFabric Caching?
    An explicit, distributed, in-memory application cache for all kinds of data
    Caching clients can be across machines or processes
    Clients Access the Cache as if it was a large single cache
    Cache Layer distributes data across the various cache nodes
  • 13. AppFabric Cache
  • 14. Data Distribution - Partitioned Cache

    Web Tier
    ASP.Net App
    ASP.Net App
    ASP.Net App
    Caching Client
    Caching Client
    Caching Client
    G
    H
    I
    D
    E
    F
    A
    B
    C
    Cache Service
    Cache Service
    Cache Tier
    Cache Service
    E
    G
    B
    D
    H
    A
    I
    C
    F
    Scale on Data Size
    More machines => More memory to cache
    Scale on Cache Throughput
    More machines => keys distributed across more machines => better throughput
  • 15. Scale Test Output
    Load
    1 Cache Server
    As load increases,
    throughput fails
    to scale
    latency increases
    Caching Tier
    Throughput
    Latency
  • 16. Add a Second Cache Server
    Load
    Load Max
    Throughput increases
    Latency decreases
    Caching Tier
    Throughput
    Latency
  • 17. Add a Second Cache Server
    Load
    Caching Tier
    Throughput
    Latency
  • 18. Associated Press
    Caches metadata and news
    Serves 16 million hits per day
    Increased the amount of cached data 6 times.
  • 19. System.Web.Cache
  • 20. AppFabricDataCache
  • 21. Copy Client DLLs
    Update Web.config

    .NET 3.5 SP1 OR .NET 4
    <hosts>
    <host name="BL1CDB8083714“
    cachePort="22233"
    cacheHostName="DistributedCacheService"/>
    …..
    </hosts>
    <localCacheisEnabled=“true" ../>
    <security … />
    Application
    Application
    Application
    Caching Access Layer
    Caching Access Layer
    Caching Access Layer
    .NET 4
    Install AppFabric
    Configure AppFabric
    Caching Service
    Caching Service
    Caching Service
    Configuration Store
    Deployment
  • 22. Usage Pattern – Cache Aside (Explicit Caching)
    // Read from Cache
    Toy toyObj = (Toy)
    catalog.Get("toy-101");
    Application
    Caching Access Layer
    // If Not present in the cache
    if (toyObj == null)
    {
    // Read from backend..
    toyObj = ReadFromDatabase();
    // Populate Cache
    catalog.Put("toy-101", toyObj);
    return toyObj;
    }
    Caching Service
    Database
  • 23. Administration
    PowerShell cmdlets are used to administer the cache cluster
    Rich set of cmdlets for
    Cache cluster management
    Cache creation and monitoring
  • 24. Hello AppFabric Cache
  • 25. Using PowerShell
    Remember – PowerShell can also be called from .NET Code!
  • 26. Security
    Domain Based Security Option
    Domain Account / Local Account based Authentication
    Only authorized servers can join the cluster
    Only authorized clients can connect to the cluster
    Transport Level Security
    Turn on/off Signing or Encryption
    Can turn off Cache Security
    Use Firewalls, IPSec, VLANs to protect cache
    grant-cacheallowedclientaccount  RedDomainMachine1$
    grant-cacheallowedclientaccount  RedDomainJohn
  • 27. Logical Hierarchy
    AppFabric Caching Service
    AppFabric Caching Service
    AppFabric Caching Service
    AppFabric Caching Service
    Named Cache : Product Catalog
    Named Cache : Electronics Inventory
    Regions
    Key Payload Tags
    Region A
    121 xxxx “Toy” “Child”
    123 yyyy “Toy” “Chair”..
    Machine
    Host
    Physical processes hosting AppFabric Caching instance.
    Named Caches
    Can span across machines
    Defined in the configuration file
    Regions
    Physically co-located Container of Cache Items
    May be implicit or explicitly created
    Cache Item
    Key, Payload (Object ), Tags, TTL, Timestamps, Version
  • 28. AppFabric Caching API
    // Create instance of cachefactory (reads appconfig)
    DataCacheFactory fac = new DataCacheFactory();
    // Get a named cache from the factory
    DataCache catalog = fac.GetCache("catalogcache");
    // Simple Get/Put
    catalog.Put("toy-101", new Toy("Puzzle", .,.));
    // From the same or a different client
    Toy toyObj = (Toy)catalog.Get("toy-101");
    // Region based Get/Put
    catalog.CreateRegion("toyRegion");
    // Both toy and toyparts are put in the same region
    catalog.Put("toy-101", new Toy( .,.), “toyRegion”);
    Catalog.Put("toypart-100", new ToyParts(…), “toyRegion”);
    Toy toyObj = (Toy)catalog.Get("toy-101“,"toyRegion");
  • 29. Access APIs – Tagging Items
    Tag hotItem = new Tag("hotItem");
    catalog.Put("toy-101", new Toy("Puzzle"),
    new Tag[]{hotItem}, “toyRegion”);
    catalog.Put("toy-102", new Toy("Bridge"), “toyRegion”);
    // From the same or a different client
    List<KeyValuePair<string, object>> toys =
    catalog.GetAnyMatchingTag("toyRegion", hotItem);
  • 30. Types of Data
    Grocery Shop
    Web Tier
    Shopping Cart
    Grocery Inventory
    Distributed Cache
    Grocery Catalog
  • 31. Reference Data – Performance
    Catalog data doesn’t change often
    Unnecessary network cost to access from different machines
    Solution – Local Cache
    Application
    Application
    Get(K2)
    Get(K2)
    Put(K2, v3)
    AppFabric Caching Client
    AppFabric Caching Client
    Local Cache
    RoutingTable
    Routing Table
    Cache2
    Cache3
    Cache1
    K2, V2
    K2, V2
    Primary for K1,V1
    Primary for K3,V3
    Primary for K2,V2
    K1, V1
    K2, V3
    K3, V3
  • 32. Reference Data – Bulk Get
    Bulk Fetch from region
    200-300k ops per second
    Fewer network calls
    Catalog.BulkGet(
    new List<string>(){“toy-101”, “toy-102”} ,
    “toyRegion”);
  • 33. Activity Data – Session Integration
    Load Balance Requests
    No more sticky routing
    <sessionState mode="Custom“ customProvider="SessionStoreProvider">
    <providers>
    <add name="SessionStoreProvider"
    type=“Microsoft.Data.Caching.DataCacheSessionStoreProvider,
    ClientLibrary“
    cacheName="<YourNamedCache>"/>
    </providers>
    </sessionState>
    Drop in AppFabric Caching SessionStoreProvider

    Caching Access Layer
    Caching Access Layer
    Session State stored in AppFabric Caching
    Allows session state to be shared amongst multiple applications
    Scale your Session Store
    Dynamically
    Cache Service
    Caching Service
    Caching Service
    Highly Available
    Application
    Application
    Application
    Caching Access Layer
  • 34. Application
    Application
    Activity Data - Availability
    PUT
    Get(K2)
    AppFabric Caching Client
    AppFabric Caching Client
    Routing Table
    Routing Table
    Cache1
    Cache2
    Cache3
    Primary for
    Primary for
    Primary for
    Replication Agent
    K3, V3
    K1, V1
    K2, V2
    (K2, V2)
    K2, V2
    Secondary for
    Secondary for
    Secondary for
    K2, V2
    K2, V2
    K3, V3
    K1, V1
  • 35. Resource Data - Optimistic Locking
    GetCacheItem returns a version object
    Every update to an object internally increments it's version
    Supply the version obtained along with the Put/Remove
    Put/Remove will succeed only if the passed in version matches the version in the cache
    Two clients access the same item
    Both update the item
    Second Client gets in first; put succeeds because item version matches; atomically increments the version
    First client tries put;
    Fails because the versions don’t match
  • 36. Resource Data - Pessimistic Locking
    Client1:
    GetAndLock ("k1")
    Client3:
    Get ("k1")
    Client2:
    GetAndLock ("k1")
    GetAndLock gets lock handle
    Regular Get succeeds
    Other GetAndLock on same item fails
    Take locks on non-existent keys
    Allows you to co-ordinate calls for data
    K1
  • 37. Data Race
    GET
    GET
    GET
  • 38. Lock Non-Existent Key
    GET/LOCK
    GET/LOCK
    GET/LOCK
    Cache Service
    Cache Service
    Caching Service
  • 39. Composite Race
    CALL
    WAIT
    WAIT
    Cache Service
    Cache Service
    Caching Service
  • 40. Composite Race
    PUT
    UNLOCK
    GET
    GET
    Cache Service
    Cache Service
    Caching Service
  • 41. Resource/Activity Data – Tracking Changes
    Cache Event notifications
    Register on any client to notify changes
    Batched Notifications
    DataCache.RegisterCacheLevelCallback(
    int filter, DataCacheChangeCallback delegate);
    DataCache.RegisterRegionLevelCallback(
    String region, int filter, DataCacheChangeCallback delegate);
    DataCache.RegisterKeyLevelCallback(
    String region, String key, int filter, DataCacheChangeCallback delegate);
  • 42. Register Notification for Key “K3"
    Call Delegate
    Store Last LSN
    Application
    Map Keys to Partition
    AppFabric Caching Client
    Partition: P2
    Last LSN: 19
    Routing Table
    Poll Required Nodes
    Nodes Return List of Changes LSN Order
    Cache2
    Cache3
    Cache1
    K2, V2
    Primary for
    Primary for
    Primary for
    Change Log (Partition P2)
    Del K32
    Del K43
    Change Log
    Partition P1
    Add K2
    Del K32
    Change Log
    33 Add K1
    34 Del K22
    K1, V1
    K3, V3
    Scalable Notifications
  • 43. Agenda
  • 44. Pre-Fetch
    Hospital
    Data Center
  • 45. Pre-Fetch
    Remote Clinic
    Hospital
    Slow!!
    Data Center
    WAN
  • 46. Pre-Fetch
    Hospital
    Remote Clinic
    Data Center
    Cache Service
    WAN
  • 47. Agenda
  • 48. Web Platform Installer
  • 49. Select Enterprise
  • 50. Install AppFabric
  • 51. Install AppFabric
  • 52. endpoint.tv
  • 53. AppFabric on MSDN
    http://msdn.microsoft.com/AppFabric
  • 54. Thanks to our contributors