23
Genexus, acelerador a fondo Gabriel Klestorny – Pablo García t [email protected] [email protected]

0157 genexus full_throttling

  • Upload
    genexus

  • View
    707

  • Download
    1

Embed Size (px)

Citation preview

Page 1: 0157 genexus full_throttling

Genexus, acelerador a fondo

Gabriel Klestorny – Pablo Garcí[email protected][email protected]

Page 2: 0157 genexus full_throttling

¿Objetivo?Dar recetas sencillas para

Dar recetas sencillas para optimizar el desempeño de las aplicaciones Genexus en la plataforma .net

Page 3: 0157 genexus full_throttling

Base de datos 1/3

Snapshot Isolation

Page 4: 0157 genexus full_throttling

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');

Page 5: 0157 genexus full_throttling

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

Page 6: 0157 genexus full_throttling

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

Page 7: 0157 genexus full_throttling

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

Page 9: 0157 genexus full_throttling

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

Page 10: 0157 genexus full_throttling

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

Page 11: 0157 genexus full_throttling

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>

Page 12: 0157 genexus full_throttling

Escenario Inicial

App TierBrowserRequest

Database

Response

“Wow! Qué buena aplicación!”

Page 13: 0157 genexus full_throttling

Escenario Inicial

App Tier Database

Browser

Browser

Browser

Browser

Browser

“Yupiii!!! Tenemos muchos

usuarios!”

Page 14: 0157 genexus full_throttling

Escenario Inicial

App Tier Database

Browser

Browser

Browser

Browser

Browser

“Server Busy”“Timeout”

“Mamaaaaaa…”

Page 15: 0157 genexus full_throttling

¿Cómo podemos ayudar a Carlitos?

Page 16: 0157 genexus full_throttling

Opción 1: Escalar verticalmente:

“Scale Up”

App Tier Database

Browser

Browser

Browser

Browser

Browser

App Tier

“No me gusta…”

Page 17: 0157 genexus full_throttling

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…”

Page 18: 0157 genexus full_throttling

¿Cómo hacemos con el estado?

Page 19: 0157 genexus full_throttling

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…”

Page 20: 0157 genexus full_throttling

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

Page 21: 0157 genexus full_throttling

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

Page 22: 0157 genexus full_throttling

Resultados

Page 23: 0157 genexus full_throttling

¡MUCHAS GRACIAS!