Форум: "Прочее";
Текущий архив: 2007.05.27;
Скачать: [xml.tar.bz2];
ВнизТранзакции для распределенных систем. Кто использовал? Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.044 c