0157 genexus full_throttling

Preview:

Citation preview

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

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!