Your SlideShare is downloading. ×
TechDays 2010 Portugal - Scaling your data tier with app fabric 16x9
TechDays 2010 Portugal - Scaling your data tier with app fabric 16x9
TechDays 2010 Portugal - Scaling your data tier with app fabric 16x9
TechDays 2010 Portugal - Scaling your data tier with app fabric 16x9
TechDays 2010 Portugal - Scaling your data tier with app fabric 16x9
TechDays 2010 Portugal - Scaling your data tier with app fabric 16x9
TechDays 2010 Portugal - Scaling your data tier with app fabric 16x9
TechDays 2010 Portugal - Scaling your data tier with app fabric 16x9
TechDays 2010 Portugal - Scaling your data tier with app fabric 16x9
TechDays 2010 Portugal - Scaling your data tier with app fabric 16x9
TechDays 2010 Portugal - Scaling your data tier with app fabric 16x9
TechDays 2010 Portugal - Scaling your data tier with app fabric 16x9
TechDays 2010 Portugal - Scaling your data tier with app fabric 16x9
TechDays 2010 Portugal - Scaling your data tier with app fabric 16x9
TechDays 2010 Portugal - Scaling your data tier with app fabric 16x9
TechDays 2010 Portugal - Scaling your data tier with app fabric 16x9
TechDays 2010 Portugal - Scaling your data tier with app fabric 16x9
TechDays 2010 Portugal - Scaling your data tier with app fabric 16x9
TechDays 2010 Portugal - Scaling your data tier with app fabric 16x9
TechDays 2010 Portugal - Scaling your data tier with app fabric 16x9
TechDays 2010 Portugal - Scaling your data tier with app fabric 16x9
TechDays 2010 Portugal - Scaling your data tier with app fabric 16x9
TechDays 2010 Portugal - Scaling your data tier with app fabric 16x9
TechDays 2010 Portugal - Scaling your data tier with app fabric 16x9
TechDays 2010 Portugal - Scaling your data tier with app fabric 16x9
TechDays 2010 Portugal - Scaling your data tier with app fabric 16x9
TechDays 2010 Portugal - Scaling your data tier with app fabric 16x9
TechDays 2010 Portugal - Scaling your data tier with app fabric 16x9
TechDays 2010 Portugal - Scaling your data tier with app fabric 16x9
TechDays 2010 Portugal - Scaling your data tier with app fabric 16x9
TechDays 2010 Portugal - Scaling your data tier with app fabric 16x9
TechDays 2010 Portugal - Scaling your data tier with app fabric 16x9
TechDays 2010 Portugal - Scaling your data tier with app fabric 16x9
TechDays 2010 Portugal - Scaling your data tier with app fabric 16x9
TechDays 2010 Portugal - Scaling your data tier with app fabric 16x9
TechDays 2010 Portugal - Scaling your data tier with app fabric 16x9
TechDays 2010 Portugal - Scaling your data tier with app fabric 16x9
TechDays 2010 Portugal - Scaling your data tier with app fabric 16x9
TechDays 2010 Portugal - Scaling your data tier with app fabric 16x9
TechDays 2010 Portugal - Scaling your data tier with app fabric 16x9
TechDays 2010 Portugal - Scaling your data tier with app fabric 16x9
TechDays 2010 Portugal - Scaling your data tier with app fabric 16x9
TechDays 2010 Portugal - Scaling your data tier with app fabric 16x9
TechDays 2010 Portugal - Scaling your data tier with app fabric 16x9
TechDays 2010 Portugal - Scaling your data tier with app fabric 16x9
TechDays 2010 Portugal - Scaling your data tier with app fabric 16x9
TechDays 2010 Portugal - Scaling your data tier with app fabric 16x9
TechDays 2010 Portugal - Scaling your data tier with app fabric 16x9
TechDays 2010 Portugal - Scaling your data tier with app fabric 16x9
TechDays 2010 Portugal - Scaling your data tier with app fabric 16x9
TechDays 2010 Portugal - Scaling your data tier with app fabric 16x9
TechDays 2010 Portugal - Scaling your data tier with app fabric 16x9
TechDays 2010 Portugal - Scaling your data tier with app fabric 16x9
TechDays 2010 Portugal - Scaling your data tier with app fabric 16x9
TechDays 2010 Portugal - Scaling your data tier with app fabric 16x9
TechDays 2010 Portugal - Scaling your data tier with app fabric 16x9
TechDays 2010 Portugal - Scaling your data tier with app fabric 16x9
TechDays 2010 Portugal - Scaling your data tier with app fabric 16x9
TechDays 2010 Portugal - Scaling your data tier with app fabric 16x9
TechDays 2010 Portugal - Scaling your data tier with app fabric 16x9
TechDays 2010 Portugal - Scaling your data tier with app fabric 16x9
TechDays 2010 Portugal - Scaling your data tier with app fabric 16x9
TechDays 2010 Portugal - Scaling your data tier with app fabric 16x9
TechDays 2010 Portugal - Scaling your data tier with app fabric 16x9
TechDays 2010 Portugal - Scaling your data tier with app fabric 16x9
TechDays 2010 Portugal - Scaling your data tier with app fabric 16x9
TechDays 2010 Portugal - Scaling your data tier with app fabric 16x9
TechDays 2010 Portugal - Scaling your data tier with app fabric 16x9
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

TechDays 2010 Portugal - Scaling your data tier with app fabric 16x9

2,070

Published on

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
2,070
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
30
Comments
0
Likes
0
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
  • MSCUIBusiness Application Template
  • MSCUIBusiness Application Template
  • MSCUIBusiness Application Template
  • Transcript

    • 1. Como garantir a escalabilidade da sua camada de dados com o Windows Server AppFabric
      WIN304
      NunoGodinho
      Partner & CTO @ ITech4All
      nuno.godinho@itech4all.com
      @NunoGodinho
    • 2. Session abstract
      Session title
    • 3. Speaker Bio and Photo
      Speaker Name
    • 4. Nuno Filipe Godinho
      Partner & CTO @ ITech4all
      Mail: Nuno.Godinho@itech4all.com
      Nuno.Godinho@sapo.pt
      Blogs: http://pontonetpt.com/blogs/nunogodinho
      http://xamlpt.com/blogs/nunogodinho
      http://weblogs.asp.net/nunogodinho
      http://msmvps.org/blogs/nunogodinho
      Twitter: @NunoGodinho
      About Me
    • 5. The Problem!
      Caching with the Windows Server AppFabric
      Overview and Programming Model
      Caching Futures
      Summary
      Q&A
      Agenda
    • 6. The Problem
    • 7. Online Pharmacy
    • 8. Typical Web Architecture
    • 9. Typical Architecture
      Users
      Load Balancer
      Sticky Routing
      Application
      / Web Tier
      Application
      Application
      Application
      ASP.Net App
      Session Cart Hosted in memory
      Catalog sits in Database
      Data Tier
      Database
    • 10. And then…
      Flu Hits!
    • 11. You become a popular Pharmacy!
      Web Site’s too slow!!
      Users
      Where did my shopping cart go?
      Web Tier
      (ASP.Net)

      Application
      Application
      Application
      Servers are crashing
      Database is hot!!
      Data Tier
      Database
    • 12. Possible Solution
    • 13. Data Near Processing
      Cache
      Cache
      Browser
      Smart Client
      Cache
      Web Service
      ASP.NET
      Cache
      Cache
      Database
    • 14. Cache is scoped to machine / process
      Machines die
      Processes recycle
      Cache memory is limited
      Good but…
    • 15. 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
      What if?
    • 16. Caching with the Windows Server AppFabric
    • 17. What Is It?
    • 18. An explicit, distributed, in-memory application cache for all kinds of data
      (CLR objects, rows, XML, Binary data etc.)
      Fuse "memory" across machines into a unified cache
      What is AppFabric Caching?
      Caching clients can be across machines or processes
      Clients Access the Cache as if it was a large single cache
      Unified Cache View
      Cache Layer distributes data across the various cache nodes
    • 19. Where does it fit?
      Users
      Caching Access Layer
      Caching Access Layer
      Caching Access Layer

      Web Tier
      (ASP.Net)
      Application
      Application
      Application
      Caching Service
      Caching Service
      Caching Service
      Cache Tier
      Data Tier
      Database
      Cloud
    • 20. AppFabric Cache
    • 21. Why AppFabric Caching
    • 22. 1. Share Data Across Applications
      No more sticky routing
      2. Performance
      3. Scale out by adding more boxes
      4. High Availability Protect from Web & Cache Server Failure
      Why use AppFabric Caching?
    • 23. 5. Proven Technology - Associated Press Custom News live on CTP3
      Why use AppFabric Caching?
      • AppFabric caching capabilities caches metadata and news for widgets
      • 24. Serves 16 million hits per day
      • 25. Increased the amount of cached data 6 times.
    • 5. Proven Technology Contd..
      Dell.com uses AppFabric caching!
      Channel Partner Portal uses AppFabric caching
      Provides targeted content and search results
      Tracks customer browse history and downloads.
      Next Generation Sales Platform Solutions to use AppFabric caching (currently under construction)
      Just two of the many TAP customers in line for production
      Why AppFabric Caching?
    • 26. 6. Do all this at low cost!
      Why AppFabric Caching? – Best yet
      • Use inexpensive commodity hardware
      • 27. Ships as part of Windows Server AppFabric 2010 Wave 1
      * Different Features of the cache might require higher level SKUs of Windows Server.
      AppFabric
      MONITORING
      WORKFLOW HOSTING
      CACHING
      ACCESS CONTROL
      SERVICE HOSTING
      SERVICE BUS
      MANAGEMENT
      MULTI-TENANT
      SCALE OUT
      HIGH AVAILABILITY
    • 28. What Stage Is It In?
    • 29. When Can I Get Windows Server AppFabric ?
      Azure CTP
      Post RTM
      RTM
      2010 Wave 1
      * CY10
      CTP2
      PDC ‘08
      CTP1
      June ‘08
      CTP3
      Mar ‘09
      Beta
      (Formerly Called “Velocity”)
    • 31. Installation
    • 32. Overview and Programming AppFabric Caching
    • 33. Deployment and Access API
    • 34. Deployment
      Users
      Update Web.config
      Copy Client DLLs
      Application
      Application
      Application

      Caching Access Layer
      Caching Access Layer
      Caching Access Layer
      <hosts>
      <host name="BL1CDB8083714“
      cachePort="22233"
      cacheHostName="DistributedCacheService"/>
      …..
      </hosts>
      <localCacheisEnabled=“true" ../>
      <security … />
      .NET 3.5 SP1 OR .NET 4
      Caching Service
      Caching Service
      Caching Service
      .NET 4
      Configure AppFabric
      Install AppFabric
      Configuration Store
    • 35. AppFabric Caching CodePlex Tool
      http://mdcadmintool.codeplex.com/
    • 36. 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
      Security (new since Beta)
      grant-cacheallowedclientaccount  RedDomainMachine1$
      grant-cacheallowedclientaccount  RedDomainJohn
    • 37. Centralized administration through powershell
      Perfmon to monitor the cache (new in Beta)
      Logging
      Default ETW, support for file logs
      Administration & Monitoring
    • 38. // Create instance of cachefactory (reads appconfig)
      DataCacheFactoryfac = new DataCacheFactory();
      // Get a named cache from the factory
      DataCache catalog = fac.GetCache("catalogcache");
      AppFabric Caching API
      // 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");
    • 39. AppFabric Caching 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 -> Cache Host -> Named Caches -> Regions -> Cache Items -> Objects
      Host
      Physical processes hosting AppFabric Caching instance.
      Named Caches
      Can span across machines
      Defined in the configuration file
      Cache Item
      Key, Payload (Object ), Tags, TTL, Timestamps, Version
      Regions
      Physically co-located Container of Cache Items
      May be implicit or explicitly created
    • 40. Add Tags to Items
      Tag Search on Default Regions (New in Beta)
      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);
    • 41. 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
    • 42. How does it Scale?
    • 43. Data Distribution - Partitioned Cache
      Users

      G
      H
      I
      D
      E
      F
      A
      B
      C
      Web Tier
      ASP.Net App
      ASP.Net App
      ASP.Net App
      Caching Client
      Caching Client
      Caching Client
      E
      G
      B
      D
      H
      A
      I
      C
      F
      Cache Service
      Cache Service
      Cache Tier
      Cache Service
      Scale on Data Size -More machines => More memory to cache
      Scale on Cache Throughput -More machines => keys distributed across more machines => better throughput
    • 44. Scale Test Output
      Load
      1 Cache Server
      As load increases,
      throughput fails
      to scale
      latency increases
      Caching Tier
      Throughput
      Latency
    • 45. Add Second Cache Server
      Load
      Load Max
      Throughput increases
      Latency decreases
      Caching Tier
      Throughput
      Latency
    • 46. Add Third Cache Server
      Load
      Caching Tier
      Throughput
      Latency
    • 47. GridDynamics Blog Engine Tests
      More info at http://blogs.msdn.com/velocity/ or
      http://www.griddynamics.com/velocity
    • 48. Features
    • 49. Classify your data
      Reference or Activity or Resource Data
      Examine Requirements
      Performance - Throughput & Latency
      Consistency – Tolerable staleness
      Eviction - Is the data evictable?
      Security - Is there any secure data?
      Availability – Survive node or cluster failures?
      Use the right features!
    • 50. Types of Data
      Grocery Shop
      Web Tier
      Shopping Cart
      Pharmacy Inventory
      Distributed Cache
      Pharmacy Catalog
    • 51. Catalog data doesn’t change often
      Unnecessary network cost to access from different machines
      Solution – Local Cache
      Application
      Application
      Reference Data – Performance
      Get(K2)
      Get(K2)
      Put(K2, v3)
      AppFabric Caching Client
      AppFabric Caching Client
      Local Cache
      Routing Table
      Routing Table
      K2, V2
      K2, V2
      Cache2
      Cache3
      Cache1
      Primary for K1,V1
      Primary for K3,V3
      Primary for K2,V2
      K1, V1
      K2, V3
      K3, V3
    • 52. Enumerate all items in Region
      Bulk Fetch from region (New in Beta)
      200-300k ops per second
      Reference Data – Bulk Get
      Catalog.BulkGet(
      new List<string>(){“toy-101”, “toy-102”} ,
      “toyRegion”);
    • 53. Application
      PUT
      Application
      Get(K2)
      AppFabric Caching Client
      AppFabric Caching Client
      Routing Table
      Routing Table
      Cache1
      Cache2
      Cache3
      Activity Data - Availability
      Primary for
      Primary for
      Primary for
      Replication Agent
      (K2, V2)
      K3, V3
      K2, V2
      K1, V1
      K2, V2
      K2, V2
      Secondary for
      Secondary for
      Secondary for
      K3, V3
      K1, V1
    • 54. 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
      Resource Data - Optimistic Locking
      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
    • 55. 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
      New in Beta – Take locks on non-existent keys
      Allows you to co-ordinate creating new object amongst multiple clients
      K1
    • 56. Cache Event notifications
      Register on any client to notify changes
      Batched Notifications – (New in Beta)
      Resource/Activity Data – Tracking Changes
      DataCache.RegisterCacheLevelCallback(
      int filter, DataCacheChangeCallback delegate);
      DataCache.RegisterRegionLevelCallback(
      String region, int filter, DataCacheChangeCallback delegate);
      DataCache.RegisterKeyLevelCallback(
      String region, String key, int filter, DataCacheChangeCallback delegate);
    • 57. Register Notification for Key “K3"
      Call Delegate
      Store Last LSN
      Map Keys to Partition (say P2)
      Application
      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
    • 58. Programming Model
    • 59. AppFabric Caching Futures
    • 60. AppFabric Caching and Azure Platform
    • 61. You are a popular Online Pharmacy!!
      Lots of Users!
      Irregular & Elastic Demands
      Solution - Move to the Services World!
      Application on-premise with data on SQL Azure
      Application on Windows Azure with data on SQL Azure
      Application on Windows Azure with on-premise database connected by AppFabric Service Bus
      Application Growth
    • 62. App on-premise; Data on SQLAzure

      ASP.Net Web Tier
      Application
      Application
      Application
      AppFabric Caching Access Layer
      AppFabric Caching Access Layer
      AppFabric Caching Access Layer
      Application & AppFabric Caching deployed On-premise
      Caching Service
      Caching Service
      Caching Service
      Caching Worker Role
      Data on SQL Azure
    • 63. App on Windows Azure; Data on SQL Azure
      Web Role

      Application
      Application
      Application
      AppFabric Caching Access Layer
      AppFabric Caching Access Layer
      AppFabric Caching Access Layer
      Application & AppFabric Caching on Windows Azure
      Caching Service
      Caching Service
      Caching Service
      Caching Worker Role
      AppFabric Caching Worker Role
      Data on SQL Azure
    • 64. App on Windows Azure; Data on-premise
      Web Role

      Application
      Application
      Application
      AppFabric Caching Access Layer
      AppFabric Caching Access Layer
      AppFabric Caching Access Layer
      AppFabric Service Bus
      Application & AppFabric Caching on Windows Azure
      Caching Service
      Caching Service
      Caching Service
      Caching Worker Role
      AppFabric Caching Worker Role
      Data on-premises
    • 65. ASP.NET and Persistence
    • 66. ASP.Net extends cache surface .Net 4.0
      Integrate with the Application Cache
      System.Runtime.Caching namespace
      AppFabric Caching will be a provider for this namespace
      Granular Session Updates
      IPartialSessionState lists keys changed
      Extensible Output Cache Provider
      Output Caching not limited to single node
      Integration with ASP.Net
    • 67. Callback for read-through, write-behind
      Specified at Named Cache Level
      Read-Through
      Called when item not present in cache
      Callback returns the object/serialized bytes
      Write-Behind
      Writes to cache are queued
      Callback called asynchronously in batches
      Re-tries upon failure
      Bulk Access APIs
      Future – Cache Through
    • 68. HPC Integration
      Final Results Store
      AppFabric Caching
      Market Data
      Central Market Data Store
      (~1 TB Tick Data)
      Final
      Results
      AppFabric Caching
      Intermediate
      Store
      Market Data
      Scratch
      Job
      Input
      Rollup
      Operation
      Split
      Method
      Scratch
      Keys
      Calculation
      Operation
      GridDynamics testing
      on CTP1
      50 times improvement
      in some cases
    • 69. Summary
    • 70. AppFabric Caching Vision – Cache for all your data
    • 71. http://msdn.microsoft.com/AppFabric
      AppFabric on MSDN

    ×