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

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Scale Your Data Tier With Windows Server App Fabric

3,503

Published on

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.

0 Comments
5 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
3,503
On Slideshare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
92
Comments
0
Likes
5
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide
  • 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.
  • 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

    ×