Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.05.27;
Скачать: CL | DM;

Вниз

Транзакции для распределенных систем. Кто использовал?   Найти похожие ветки 

 
alex_*** ©   (2007-04-24 16:06) [0]

Возникла необходимость реализовать такую схему:
Есть система А, система Б. Адаптеру системы А передаются данные, вставляются в БД и возвращается ответ. Ответ используется в данных для системы Б. Если адаптер системы Б вернул ошибку, то в системе А транзакцию надо откатить. Системы удаленные, для связи с внешним миром есть адаптер для каждой системы.

Если адаптер сделать как WebService, то транзакции не получится между его двумя вызовами. Вот вычитал что можно сделать ejb на яве с использованием сессионного контейнера. Но с явой не работал практически, этот вариант на крайний случай.
Можно сделать на очередях, но здесь тоже сессию между вызовами держать не получится. Remoting может подойдет, но тоже пока не работал с ним.

Если кто делал такие системы, поделитесь опытом, пж-та.


 
Ega23 ©   (2007-04-24 16:10) [1]

Я бы через очередь сделал.


 
Игорь Шевченко ©   (2007-04-24 16:13) [2]


>  Ответ используется в данных для системы Б. Если адаптер
> системы Б вернул ошибку, то в системе А транзакцию надо
> откатить. Системы удаленные, для связи с внешним миром есть
> адаптер для каждой системы.


А кто делает commit и в какой момент ?


 
alex_*** ©   (2007-04-24 16:17) [3]


> Я бы через очередь сделал.

и как бы держал сессию? Допустим ты висишь на Get из очереди. 1 пачка данные - вставил, 2 пачка - commit or rollback. Сессию держать в своем пуле? Слишком трудоемко. Висячие сессии и все такое. Такие вещи MTS делает вроде, но для распределенных систем он не подходит.


 
alex_*** ©   (2007-04-24 16:18) [4]


> А кто делает commit и в какой момент ?

есть некий интеграционный шлюз, который рулит данными. Он и дает подтверждение или откат


 
alex_*** ©   (2007-04-24 16:23) [5]


> Сессию держать в своем пуле?

здесь еще проблема в том что работа будет многопоточная. т.е. запросы в системы будут приходить асинхронно.


 
Ломброзо ©   (2007-04-24 17:42) [6]

как раз таки COM+ для распределённых транзакций подходит как нельзя лучше. Но программировать под него - проще удавиться. Ну и раз уж речь зашла о .NET, гляньте в сторону System.Transactions. Насколько я понимаю, это прозрачная обёртка над COM+, правда, только для SqlServer.


 
Ломброзо ©   (2007-04-24 17:46) [7]

т.е не над COM+, а над DTS


 
alex_*** ©   (2007-04-24 17:52) [8]


> т.е не над COM+, а над DTS
>

через интернет можно к нему доступ сделать?


 
Ломброзо ©   (2007-04-24 17:55) [9]

окольными способами можно, инсталлировав COM+компонент в приложение IIS как SOAP-веб-сервис. Это всё равно смежные технологии, одно без другого использовать сложновато.


 
oldman ©   (2007-04-24 18:52) [10]

Прочитав условие сабжа - можно и без транзакций обойтись.
Русским методом "в лоб".


 
alex_*** ©   (2007-04-24 18:54) [11]


> Прочитав условие сабжа - можно и без транзакций обойтись.
>
> Русским методом "в лоб".
>

это как?


 
oldman ©   (2007-04-24 20:12) [12]


> alex_*** ©   (24.04.07 18:54) [11]
> это как?


Система А удаляет запись из БД и повторяет запрос.
Физически удаляет и физически повторяет.


 
alex_*** ©   (2007-04-25 10:57) [13]


> Система А удаляет запись из БД и повторяет запрос.
> Физически удаляет и физически повторяет.
>

супер. а между вставкой и удалением эта запись уже была кем-то использована в каких-то ссылках в БД. Потом мы пытаемся её удалить и получаем по шарам. Я уже не говорю про вариант что запись изменятся, а не удаляется или добавляется. Тогда надо держать её оригинальное состяние и на него опять откатываться. Но при этом опять есть вероятность что между этими двумя операциями эта запись может быть использована. А если учесть что мы имеем дело с банковскими системами и обмениваемся полной информацией по клиенту, счету, документу, то это еще и накладно.



Страницы: 1 вся ветка

Текущий архив: 2007.05.27;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.065 c
4-1166780935
Grademax
2006-12-22 12:48
2007.05.27
Как узнать сколько времени отработал HDD?


2-1178529896
Officeman
2007-05-07 13:24
2007.05.27
Делаю скриншот экрана, КАК вывести текст на изображение


1-1175342314
Салат
2007-03-31 15:58
2007.05.27
Подключить шрифт из ресурса


15-1177774830
oldman
2007-04-28 19:40
2007.05.27
Ну вот и суббота (которая понедельник) на исходе...


2-1178468708
Ламер 2.Х
2007-05-06 20:25
2007.05.27
Инфа о системе