Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 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.04 c
1-1175374006
Gero
2007-04-01 00:46
2007.05.27
Как свернуть DMClient в трей


9-1149530476
-=OpeR=-
2006-06-05 22:01
2007.05.27
Помогите с алгоритм оптимального размещения


2-1178806134
Гость____
2007-05-10 18:08
2007.05.27
Редактор Delphi


2-1178531293
Doom-2
2007-05-07 13:48
2007.05.27
Проект вызвал исключение EStringListError


15-1177678939
Сергей М.
2007-04-27 17:02
2007.05.27
People to Purple





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский