Servicios Transaccionales Características básicas de las ... · Servicios Transaccionales ©...

28
Servicios Transaccionales © 2003-2004 Depto. Ciencia Computación e IA Características básicas-1 Especialista en Aplicaciones y Servicios Web con Java Enterprise Servicios Transaccionales Sesión 1: Características básicas de las transacciones

Transcript of Servicios Transaccionales Características básicas de las ... · Servicios Transaccionales ©...

Page 1: Servicios Transaccionales Características básicas de las ... · Servicios Transaccionales © 2003-2004 Depto. Ciencia Computación e IA Características básicas-1 Especialista

Servicios Transaccionales © 2003-2004 Depto. Ciencia Computación e IA Características básicas-1

Especialista en Aplicaciones y Servicios Web con Java Enterprise

Servicios Transaccionales

Sesión 1:Características básicas de las

transacciones

Page 2: Servicios Transaccionales Características básicas de las ... · Servicios Transaccionales © 2003-2004 Depto. Ciencia Computación e IA Características básicas-1 Especialista

Servicios Transaccionales © 2003-2004 Depto. Ciencia Computación e IA Características básicas-2

Índice

Introducción

Aplicaciones distribuidas

Carácterísticas básicas de las transacciones

Page 3: Servicios Transaccionales Características básicas de las ... · Servicios Transaccionales © 2003-2004 Depto. Ciencia Computación e IA Características básicas-1 Especialista

Servicios Transaccionales © 2003-2004 Depto. Ciencia Computación e IA Características básicas-3

Introducción

Aplicaciones distribuidos

Conceptos básicos de transacciones

Carácterísticas básicas de las transacciones

Page 4: Servicios Transaccionales Características básicas de las ... · Servicios Transaccionales © 2003-2004 Depto. Ciencia Computación e IA Características básicas-1 Especialista

Servicios Transaccionales © 2003-2004 Depto. Ciencia Computación e IA Características básicas-4

JTA vs. JDBC

JTA = Java Transaction API

Ventajas de JTA frente a las transacciones JDBCPosibilidad de gestionar transacciones distribuidasAPI usable con distintos tipos de recursos, no sólo bases de datos

En estas 2 sesiones vamos a verFundamentos básicos de la computación distribuida en JavaEjemplos de uso de JTA con bases de datos y colas de mensajes

Page 5: Servicios Transaccionales Características básicas de las ... · Servicios Transaccionales © 2003-2004 Depto. Ciencia Computación e IA Características básicas-1 Especialista

Servicios Transaccionales © 2003-2004 Depto. Ciencia Computación e IA Características básicas-5

Actores en una aplicación J2EE

Navegador web (Mozilla)Interfaz de usuario HTML/HTTP: presenta información y recoge peticiones del usuario

Cliente independiente (Programa Swing)Interfaz de usuario no HTML/HTTP

Contenedor web (Tomcat)Procesa servlets y páginas JSP

Contenedor EJB (jBoss)Numerosos servicios: JNDI, JMS, Seguridad, componentes EJB

SGBD/EISBases de datosAplicaciones heredadas

Page 6: Servicios Transaccionales Características básicas de las ... · Servicios Transaccionales © 2003-2004 Depto. Ciencia Computación e IA Características básicas-1 Especialista

Servicios Transaccionales © 2003-2004 Depto. Ciencia Computación e IA Características básicas-6

Escenarios de aplicación J2EE

Page 7: Servicios Transaccionales Características básicas de las ... · Servicios Transaccionales © 2003-2004 Depto. Ciencia Computación e IA Características básicas-1 Especialista

Servicios Transaccionales © 2003-2004 Depto. Ciencia Computación e IA Características básicas-7

Introducción

Aplicaciones distribuidos

Conceptos básicos de transacciones

Carácterísticas básicas de las transacciones

Page 8: Servicios Transaccionales Características básicas de las ... · Servicios Transaccionales © 2003-2004 Depto. Ciencia Computación e IA Características básicas-1 Especialista

Servicios Transaccionales © 2003-2004 Depto. Ciencia Computación e IA Características básicas-8

Modelos de programación distribuida

Dos modelos fundamentalesRPC (Remote Procedure Call)Paso de mensajes

En la plataforma J2EERMI (Remote Method Invocation)JMS (Java Message Service)

Page 9: Servicios Transaccionales Características básicas de las ... · Servicios Transaccionales © 2003-2004 Depto. Ciencia Computación e IA Características básicas-1 Especialista

Servicios Transaccionales © 2003-2004 Depto. Ciencia Computación e IA Características básicas-9

Llamada a procedimiento remoto

Modelo más sencillo

El cliente realiza una llamada a un procedimiento, pero éste no reside en la zona de memoria del proceso (heap), sino en otra zona

El cliente se queda a la espera de recibir la respuesta del servidor, que puede retrasarse por problemas en la red o por otros problemas

Page 10: Servicios Transaccionales Características básicas de las ... · Servicios Transaccionales © 2003-2004 Depto. Ciencia Computación e IA Características básicas-1 Especialista

Servicios Transaccionales © 2003-2004 Depto. Ciencia Computación e IA Características básicas-10

Desentrañando una llamada RPC

result = objetoServidor.metodoABC();

Page 11: Servicios Transaccionales Características básicas de las ... · Servicios Transaccionales © 2003-2004 Depto. Ciencia Computación e IA Características básicas-1 Especialista

Servicios Transaccionales © 2003-2004 Depto. Ciencia Computación e IA Características básicas-11

RPC en J2EE: RMI/IIOP

Elementos fundamentalesServicio de nombres: JNDI Cliente se comunica con IIOPInterfaz e implementación del servidor

Contextic = new InitialContext();Object objref= ic.lookup("Fax service");FaxServiceInterfacefaxService= (FaxServiceInterface) PortableRemoteObject.narrow(objref,

AccountManagerInterface.class);faxService.setFaxNumber("965903900");faxService.setText("Hola recuerda enviarme la factura!");faxService.setTextSize(32);

status = faxService.send();System.out.println("fax enviado con resultado:" + status);

Page 12: Servicios Transaccionales Características básicas de las ... · Servicios Transaccionales © 2003-2004 Depto. Ciencia Computación e IA Características básicas-1 Especialista

Servicios Transaccionales © 2003-2004 Depto. Ciencia Computación e IA Características básicas-12

Paso de mensajes

Los mensajes se envían a destinos

Procesos débilmente acoplados

Implementación en Java = JMS

Page 13: Servicios Transaccionales Características básicas de las ... · Servicios Transaccionales © 2003-2004 Depto. Ciencia Computación e IA Características básicas-1 Especialista

Servicios Transaccionales © 2003-2004 Depto. Ciencia Computación e IA Características básicas-13

Elementos JMS (Java Message Service)

Servidor de mensajería JMS

Clientes (emisores y receptores de mensajes)

Mensajes

Objetos administrados

Page 14: Servicios Transaccionales Características básicas de las ... · Servicios Transaccionales © 2003-2004 Depto. Ciencia Computación e IA Características básicas-1 Especialista

Servicios Transaccionales © 2003-2004 Depto. Ciencia Computación e IA Características básicas-14

Modalidad punto-a-punto

La comunicación entre clientes (emisores y receptores) se realiza a través de una cola

La cola se crea por el administrador JMS y se mantiene en el proveedor JMS

Page 15: Servicios Transaccionales Características básicas de las ... · Servicios Transaccionales © 2003-2004 Depto. Ciencia Computación e IA Características básicas-1 Especialista

Servicios Transaccionales © 2003-2004 Depto. Ciencia Computación e IA Características básicas-15

Código ejemplo: emisor

ContextjndiContext = new InitialContext();QueueConnectionFactory queueConnectionFactory =

(QueueConnectionFactory)jndiContext.lookup("QueueConnectionFactory");

Queue queue = (Queue) jndiContext.lookup(queueName);QueueConnection queueConnection =

queueConnectionFactory.createQueueConnection();QueueSession queueSession =

queueConnection.createQueueSession(false,Session.AUTO_ACKNOWLEDGE);

QueueSender queueSender = queueSession.createSender(queue);TextMessage message = queueSession.createTextMessage();for(inti = 0; i < NUM_MSGS; i++) {

message.setText("Thisis message " + (i + 1));System.out.println("Sending message: " + message.getText());queueSender.send(message);

}

Page 16: Servicios Transaccionales Características básicas de las ... · Servicios Transaccionales © 2003-2004 Depto. Ciencia Computación e IA Características básicas-1 Especialista

Servicios Transaccionales © 2003-2004 Depto. Ciencia Computación e IA Características básicas-16

Código ejemplo: receptor

ContextjndiContext= new InitialContext();QueueConnectionFactory queueConnectionFactory =

(QueueConnectionFactory)jndiContext.lookup("QueueConnectionFactory");

Queue queue = (Queue) jndiContext.lookup(queueName);QueueConnection queueConnection =

queueConnectionFactory.createQueueConnection();QueueSession queueSession = queueConnection.createQueueSession(

false, Session.AUTO_ACKNOWLEDGE);QueueReceiverqueueReceiver= queueSession.createReceiver(queue);queueConnection.start();while(true) {

Message m = queueReceiver.receive(10);if(m != null) {if(m instanceof TextMessage) {message = (TextMessage) m;System.out.println("Reading message: " +message.getText());

}}

}

Page 17: Servicios Transaccionales Características básicas de las ... · Servicios Transaccionales © 2003-2004 Depto. Ciencia Computación e IA Características básicas-1 Especialista

Servicios Transaccionales © 2003-2004 Depto. Ciencia Computación e IA Características básicas-17

Diagrama de creación de objetos

Page 18: Servicios Transaccionales Características básicas de las ... · Servicios Transaccionales © 2003-2004 Depto. Ciencia Computación e IA Características básicas-1 Especialista

Servicios Transaccionales © 2003-2004 Depto. Ciencia Computación e IA Características básicas-18

Introducción

Aplicaciones distribuidos

Conceptos básicos de transacciones

Carácterísticas básicas de las transacciones

Page 19: Servicios Transaccionales Características básicas de las ... · Servicios Transaccionales © 2003-2004 Depto. Ciencia Computación e IA Características básicas-1 Especialista

Servicios Transaccionales © 2003-2004 Depto. Ciencia Computación e IA Características básicas-19

Definición de transacción

Una transacción es un grupo de operaciones que representa una unidad de trabajo y que deben ejecutarse como tal unidad.

Las operaciones se realizan sobre recursos (como lectura, escritura o actualización) y transforman un estado consistente del sistema en un nuevo estado consistente.

Page 20: Servicios Transaccionales Características básicas de las ... · Servicios Transaccionales © 2003-2004 Depto. Ciencia Computación e IA Características básicas-1 Especialista

Servicios Transaccionales © 2003-2004 Depto. Ciencia Computación e IA Características básicas-20

Atomicidad: transferencia entre cuentas

Page 21: Servicios Transaccionales Características básicas de las ... · Servicios Transaccionales © 2003-2004 Depto. Ciencia Computación e IA Características básicas-1 Especialista

Servicios Transaccionales © 2003-2004 Depto. Ciencia Computación e IA Características básicas-21

Más carácterísticas (ACID)

ConsistenciaResponsabilidad del programador

Aislamiento (o seriabilidad)El resultado de la ejecución de un conjunto concurrente de transacciones debe ser equivalente a una ejecución en serie de las misma.Los datos que participan en una transacción deben quedar ocultos (aislados) hasta el commit.

Durabilidad

Page 22: Servicios Transaccionales Características básicas de las ... · Servicios Transaccionales © 2003-2004 Depto. Ciencia Computación e IA Características básicas-1 Especialista

Servicios Transaccionales © 2003-2004 Depto. Ciencia Computación e IA Características básicas-22

Demarcación de transacciones

try{userTran.begin();cliente.grabaPedido(pedido); tarjetaCredito= cliente.tarjetaCredito(); tarjetaCredito.carga(pedido.precio); almacen.descuenta(pedido); userTran.com mit();

}catch(Exception e} {userTran.rollback();

}

En la mayor parte de los modelos de gestión de transacciones, éstas no son declarativas, sino que se informan al gestor según se van ejecutando

Notación para marcar el comienzo y el final de las transacciones

Page 23: Servicios Transaccionales Características básicas de las ... · Servicios Transaccionales © 2003-2004 Depto. Ciencia Computación e IA Características básicas-1 Especialista

Servicios Transaccionales © 2003-2004 Depto. Ciencia Computación e IA Características básicas-23

Tipos de alcance

Transacciones encadenadasSe definen subtransaccionesSi una transacción termina con éxito no hace rollbackcuando la transacción padre falla

Page 24: Servicios Transaccionales Características básicas de las ... · Servicios Transaccionales © 2003-2004 Depto. Ciencia Computación e IA Características básicas-1 Especialista

Servicios Transaccionales © 2003-2004 Depto. Ciencia Computación e IA Características básicas-24

Transacciones y concurrencia: problemas

Supongamos las siguientes operaciones. Si se ejecutan concurrentemente 2 instancias es posible que X quede en un estado inconsistente.

1. Leer el dato X

2. Sumar 10 a X

3. Escribir el dato X

1. Leer el dato X

2. Sumar 10 a X

3. Escribir el dato X

Instancia 1 Instancia 2

Page 25: Servicios Transaccionales Características básicas de las ... · Servicios Transaccionales © 2003-2004 Depto. Ciencia Computación e IA Características básicas-1 Especialista

Servicios Transaccionales © 2003-2004 Depto. Ciencia Computación e IA Características básicas-25

Two-phase blocking

Antes de usar un dato, éste se bloquea.

Dos tipos de bloqueos: de lectura y de escritura.

Un bloqueo de lectura entra en conflicto con otro de escritura. Un bloqueo de escritura entra en conflicto con otro de escritura.

Una transacción puede obtener un dato si no se produce ningún conflicto. En caso de no poder obtener el dato, queda en espera hasta que el dato se libera.

Page 26: Servicios Transaccionales Características básicas de las ... · Servicios Transaccionales © 2003-2004 Depto. Ciencia Computación e IA Características básicas-1 Especialista

Servicios Transaccionales © 2003-2004 Depto. Ciencia Computación e IA Características básicas-26

Ejemplo

1. Bloqueo de escriturasobre X

2. Leer el dato X

3. Sumar 10 a X

4. Escribir el dato X

5. Liberar X

Instancia 1 Instancia 21. Bloqueo de escritura

sobre X

2. Leer el dato X

3. Sumar 10 a X

4. Escribir el dato X

5. Liberar X

Page 27: Servicios Transaccionales Características básicas de las ... · Servicios Transaccionales © 2003-2004 Depto. Ciencia Computación e IA Características básicas-1 Especialista

Servicios Transaccionales © 2003-2004 Depto. Ciencia Computación e IA Características básicas-27

Control optimista

1. Clonar X, guardandoel número de versión

2. Sumar 10 a X

3. Si el número de versiónde X es el mismo que eldel clon: escribirlo

4. Sino: abortar la transacción

Instancia 1 Instancia 21. Clonar X, guardando

el número de versión

2. Sumar 10 a X

3. Si el número de versiónde X es el mismo que eldel clon: escribirlo

4. Sino: abortar la transacción

Page 28: Servicios Transaccionales Características básicas de las ... · Servicios Transaccionales © 2003-2004 Depto. Ciencia Computación e IA Características básicas-1 Especialista

Servicios Transaccionales © 2003-2004 Depto. Ciencia Computación e IA Características básicas-28

TP Monitor

Aplicación que realiza el control de las transacciones en una arquitectura de 3 capas

Mercado maduro: existe desde los años 80

Los servidores de aplicaciones son la siguiente evolución de los monitores de procesamiento de transacciones