Post on 26-Jun-2015
Genexus, acelerador a fondo
Gabriel Klestorny – Pablo Garcíat-gakles@microsoft.com – pcgarcia@microsoft.com
¿Objetivo?Dar recetas sencillas para
Dar recetas sencillas para optimizar el desempeño de las aplicaciones Genexus en la plataforma .net
Base de datos 1/3
Snapshot Isolation
Base de datos 2/3CREATE PARTITION FUNCTION myRangePF1 (int) AS RANGE LEFT FOR VALUES (1, 100, 1000)GO
CREATE PARTITION SCHEME myRangePS1 AS PARTITION myRangePF1 TO (test1fg, test2fg, test3fg, test4fg) GO
CREATE TABLE PartitionTable (col1 int, col2 char(10)) ON myRangePS1 (col1)
CREATE PARTITION FUNCTION myRangePF3 (char(20)) AS RANGE RIGHT FOR VALUES ('EX', 'RXE', 'XR');
Base de datos 3/3
DateId CarrierTracking OfferID PriceDisc
8
9
3
4
5 100.00
3 4E0A-4F89-AE
4911-403C-92 6431-4D57-8320070601
1
1
1
1
1
1
1
2
2
3
3
3
3
4
22 10311 0.004
1
1
2
2
2
2
3
3
3
3
3
3
3
4
4
4
4
4
4
DateId CarrierTracking OfferID PriceDisc
20070601 4911-403C-98 10 0.00
20070601 4911-403C-99 10 0.00
20070602 6431 10 0.00
20070602 6431-4D57-83 10 0.00
20070602 6431-4D57-84 10 0.00
20070602 6431-4D57-85 10 100.00
20070603 4E0A-4F89-AE 10 0.00
El tan esperado host para nuestra lógica de negocios…
AppFabric
CACHING
SERVICE BUS ACCESS CONTROL
MONITORINGWORKFLOW HOSTING
SERVICE HOSTING
SCALE OUTHIGH AVAILABILITY MULTI-TENANT MANAGEMENT
Vista unificada del cache
¿Qué es el caché del Appfabric?Un caché de aplicación explícito, distribuido, en memoria, para cualquier tipo de datos
(CLR objects, rows, XML, Binary data etc.)
Clientes del caché en diversas máquinas o
procesos
Vista lógica del caché. Un solo gran caché
Caché distribuído entre
N nodos
¿Dónde calza el caché?
… Web Tier(ASP.Net)
Users
Database Cloud Data Tier
Application Application ApplicationCaching Access Layer Caching Access Layer Caching Access Layer
Cach
ing
Serv
ice
Cach
ing
Serv
ice
Cach
ing
Serv
ice
Cache Tier
Test de Escalabilidad
Single ServerThroughput Increases with Increasing Load
Until Server Saturation
Load
Throughput
Latency
Server 2 AddedThroughput Increases
Latency DecreasesUntil Server Saturation
Server 3 AddedThroughput Increases
Latency Decreases
ApplicationApplication
(K2, V2)
Cache2Cache1 Cache3
Primary for
Caché con alta disponibilidad
Get(K2)
Primary for Primary for
K3, V3
AppFabric Caching ClientRouting Table
K2, V2
PUT
Secondary for
K2, V2
K1, V1
Secondary for
K3, V3
Secondary for
K1, V1
AppFabric Caching Client
Routing Table
K2, V2
Replication Agent
Integración con la sesión de ASP.net
…Sesión almacenada
en AppFabric Caching
Cach
e S
ervi
ce
Cach
ing
Ser
vice
Balanceador de carga sin afinidad de sesión
Cach
ing
Ser
vice
El almacenamiento escala
dinámicamente
Alta Disponibilidad
Almacena en AppFabric Caching
SessionStoreProvider
Estado de Sesión compartido entre múltiples aplicaciones
Application
Caching Access Layer
Application ApplicationCaching Access Layer Caching Access Layer
<sessionState mode="Custom“ customProvider="SessionStoreProvider"><providers> <add name="SessionStoreProvider" type=“Microsoft.Data.Caching.DataCacheSessionStoreProvider, ClientLibrary“ cacheName="<YourNamedCache>"/></providers></sessionState>
Escenario Inicial
App TierBrowserRequest
Database
Response
“Wow! Qué buena aplicación!”
Escenario Inicial
App Tier Database
Browser
Browser
Browser
Browser
Browser
“Yupiii!!! Tenemos muchos
usuarios!”
Escenario Inicial
App Tier Database
Browser
Browser
Browser
Browser
Browser
“Server Busy”“Timeout”
“Mamaaaaaa…”
¿Cómo podemos ayudar a Carlitos?
Opción 1: Escalar verticalmente:
“Scale Up”
App Tier Database
Browser
Browser
Browser
Browser
Browser
App Tier
“No me gusta…”
Opción 2: Escalar horizontalmente:
“Scale Out”
Database
Browser
Browser
Browser
Browser
Browser
App TierN L B
App Tier
App Tier
App Tier
“Mmm! Interesante…”
¿Cómo hacemos con el estado?
Opción 1: Mantener Afinidad de
Cliente
Database
Browser
Browser
Browser
Browser
Browser
N L B
App Tier
App Tier
App Tier
I love you too!
I love you!
“Qué cursi! No me gusta…”
Opción 2: Persistir el estado
Database
Browser
Browser
Browser
Browser
Browser
N L B
App Tier
App Tier
App Tier
“Cool! Me gusta, pero…”
Sessions
Opción 3: Utilizar un Caché
Distribuido
Database
Browser
Browser
Browser
Browser
Browser
N L B
App Tier
App Tier
App Tier
AppFabric
AppFabric
AppFabric
Sessions
Sessions
Sessions
Resultados
¡MUCHAS GRACIAS!