Tranasacciones distribuidas
Publicado por Fernando (1 intervención) el 26/10/2006 13:37:11
Hola a todos, os comento mi problema.
En la aplicación que estoy desarrollando, en un punto del flujo de la aplicación el usuario pulsa un botón. Este evento provoca que el sistema ejecute una serie inserciones en base de datos a traves de un web service, y ademas otras inserciones en la misma base de datos pero con otro web service (desarrollado por otra empresa). El problema es que tengo que conseguir que el conjunto de todos los accesos a la base de datos se realice de forma transaccional. Conseguir que cada uno de los ws se ejecute de forma transaccional es sencillo, pero no veo la forma de conseguir que el conjunto sea transaccional.
He intentado orientarme con la filosofia del commit en dos fases, el problema es que los web services son principalmente susceptibles de fallar por problemas en la red o la bbdd. Dado que el commit en dos fases hace que los subprocesos implicados esperen mensajes de cada otro, y que el problema mas probable es que falle la red, el commit en dos fases me resuelve más bien poco.
¿Alguna idea? ¿Cambiar de perspectiva?
Como es dificil que falle el primer WS sin que falle el segundo ¿deberia no perder el tiempo en prevenir algo que rara vez sucede?
Gracias por anticipado.
Un saludo, Fernando.
En la aplicación que estoy desarrollando, en un punto del flujo de la aplicación el usuario pulsa un botón. Este evento provoca que el sistema ejecute una serie inserciones en base de datos a traves de un web service, y ademas otras inserciones en la misma base de datos pero con otro web service (desarrollado por otra empresa). El problema es que tengo que conseguir que el conjunto de todos los accesos a la base de datos se realice de forma transaccional. Conseguir que cada uno de los ws se ejecute de forma transaccional es sencillo, pero no veo la forma de conseguir que el conjunto sea transaccional.
He intentado orientarme con la filosofia del commit en dos fases, el problema es que los web services son principalmente susceptibles de fallar por problemas en la red o la bbdd. Dado que el commit en dos fases hace que los subprocesos implicados esperen mensajes de cada otro, y que el problema mas probable es que falle la red, el commit en dos fases me resuelve más bien poco.
¿Alguna idea? ¿Cambiar de perspectiva?
Como es dificil que falle el primer WS sin que falle el segundo ¿deberia no perder el tiempo en prevenir algo que rara vez sucede?
Gracias por anticipado.
Un saludo, Fernando.
Valora esta pregunta
0