0157 genexus full_throttling

839 views

Published on

  • Be the first to comment

  • Be the first to like this

0157 genexus full_throttling

  1. 1. Genexus, acelerador a fondo<br />Gabriel Klestorny – Pablo García<br />t-gakles@microsoft.com – pcgarcia@microsoft.com<br />
  2. 2. ¿Objetivo?<br />Dar recetas sencillas para <br />Dar recetas sencillas para optimizar el desempeño de las aplicaciones Genexus en la plataforma .net<br />
  3. 3. Base de datos 1/3<br />Snapshot Isolation<br />
  4. 4. Base de datos 2/3<br />CREATE PARTITION FUNCTION myRangePF1 (int) AS RANGE LEFT FOR VALUES (1, 100, 1000)<br />GO <br />CREATE PARTITION SCHEME myRangePS1 AS PARTITION myRangePF1 TO (test1fg, test2fg, test3fg, test4fg) <br />GO<br />CREATE TABLE PartitionTable (col1 int, col2 char(10)) ON myRangePS1 (col1) <br />CREATE PARTITION FUNCTION myRangePF3 (char(20)) AS RANGE RIGHT FOR VALUES ('EX', 'RXE', 'XR'); <br />
  5. 5. Base de datos 3/3<br />4911-403C-9<br />6431-4D57-8<br />2007060<br />2<br />3<br />1<br />2<br />10<br />1<br />0.00<br />2<br />3<br />1<br />4<br />4<br />2<br />3<br />1<br />1<br />1<br />1<br />2<br />3<br />4<br />2<br />1<br />3<br />4<br />3<br />4<br />2<br />1<br />3<br />4<br />3<br />4<br />3<br />1<br />2<br />3<br />3<br />2<br />1<br />3<br />1<br />3<br />4<br />
  6. 6. El tan esperado host paranuestralógica de negocios…<br />AppFabric<br />CACHING<br />MONITORING<br />WORKFLOW HOSTING<br />SERVICE BUS<br />ACCESS CONTROL<br />SERVICE HOSTING<br />SCALE OUT<br />HIGH AVAILABILITY <br />MULTI-TENANT <br />MANAGEMENT<br />
  7. 7. ¿Quées el caché del Appfabric?<br />Un caché de aplicaciónexplícito, distribuido, en memoria, paracualquiertipo de datos<br />(CLR objects, rows, XML, Binary data etc.)<br />Clientes del caché en diversasmáquinas o procesos<br />Vista lógica del caché. Un solo gran caché<br />Vista unificada del cache<br />Cachédistribuído entre N nodos<br />
  8. 8. ¿Dóndecalza el caché?<br />Users<br />…<br />Web Tier<br />(ASP.Net)<br /> Application<br /> Application<br /> Application<br />Caching Access Layer<br />Caching Access Layer<br />Caching Access Layer<br />Caching Service<br />Caching Service<br />Caching Service<br />Cache Tier<br />Data Tier<br />Database<br />Cloud<br />
  9. 9. Test de Escalabilidad<br />Server 3 Added<br />Throughput Increases<br />Latency Decreases<br />Server 2 Added<br />Throughput Increases<br />Latency Decreases<br />Until Server Saturation<br />Load<br />Single Server<br />Throughput Increases with Increasing Load<br />Until Server Saturation<br />Throughput<br />Latency<br />
  10. 10. Application<br />Application<br />Cache1<br />Cache2<br />Cache3<br />Primary for <br />Caché con altadisponibilidad<br />PUT<br />Get(K2)<br />AppFabric Caching Client<br />AppFabric Caching Client<br />Routing Table<br />Routing Table<br />Primary for<br />Primary for<br />Replication Agent<br />K3, V3<br />K1, V1<br />K2, V2<br />(K2, V2)<br />K2, V2<br />Secondary for<br />Secondary for <br />Secondary for<br />K2, V2<br />K3, V3<br />K1, V1<br />
  11. 11. Integración con la sesión de ASP.net<br />Balanceador de carga sin afinidad de sesión<br /><sessionState mode="Custom“ customProvider="SessionStoreProvider"><br /><providers><br /> <add name="SessionStoreProvider" <br /> type=“Microsoft.Data.Caching.DataCacheSessionStoreProvider, <br />ClientLibrary“ <br />cacheName="<YourNamedCache>"/><br /></providers><br /></sessionState><br />Almacena en AppFabric Caching SessionStoreProvider<br />…<br />Caching Access Layer<br />Caching Access Layer<br />Sesiónalmacenada en AppFabric Caching<br />Estado de Sesióncompartido entre múltiplesaplicaciones<br />El almacenamientoescaladinámicamente<br />Cache Service<br />Caching Service<br />Caching Service<br />Alta Disponibilidad<br /> Application<br /> Application<br /> Application<br />Caching Access Layer<br />
  12. 12. EscenarioInicial<br />“Wow! Québuenaaplicación!”<br />Database<br />Request<br />App Tier<br />Browser<br />Response<br />
  13. 13. EscenarioInicial<br />“Yupiii!!! Tenemosmuchos<br />usuarios!”<br />Browser<br />Browser<br />Database<br />App Tier<br />Browser<br />Browser<br />Browser<br />
  14. 14. EscenarioInicial<br />“Mamaaaaaa…”<br />Browser<br />Browser<br />Database<br />App Tier<br />Browser<br />“Server Busy”<br />Browser<br />“Timeout”<br />Browser<br />
  15. 15. ¿Cómopodemosayudar a Carlitos?<br />
  16. 16. Opción 1: <br />Escalarverticalmente: “Scale Up”<br />Browser<br />App Tier<br />Browser<br />Database<br />App Tier<br />Browser<br />Browser<br />Browser<br />“No me gusta…”<br />
  17. 17. Opción 2: <br />Escalarhorizontalmente: “Scale Out”<br />Browser<br />N L B<br />App Tier<br />Browser<br />Database<br />App Tier<br />App Tier<br />Browser<br />App Tier<br />Browser<br />Browser<br />“Mmm! Interesante…”<br />
  18. 18. ¿Cómohacemos con el estado?<br />
  19. 19. Opción 1: <br />MantenerAfinidad de Cliente<br />Browser<br />N L B<br />App Tier<br />Browser<br />Database<br />App Tier<br />Browser<br />App Tier<br />Browser<br />Browser<br />I love you!<br />I love you too!<br />“Quécursi! No me gusta…”<br />
  20. 20. Opción 2: <br />Persistir el estado<br />Sessions<br />Browser<br />N L B<br />App Tier<br />Browser<br />Database<br />App Tier<br />Browser<br />App Tier<br />Browser<br />Browser<br />“Cool! Me gusta, pero…”<br />
  21. 21. Opción 3: <br />Utilizar un CachéDistribuido<br />Browser<br />Database<br />N L B<br />App Tier<br />Browser<br />App Tier<br />Browser<br />App Tier<br />Browser<br />Browser<br />AppFabric<br />AppFabric<br />AppFabric<br />Sessions<br />Sessions<br />Sessions<br />
  22. 22. Resultados<br />
  23. 23. ¡Muchas Gracias!<br />

×