Форум программистов, компьютерный форум, киберфорум
HCL Notes: Программирование
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.57/100: Рейтинг темы: голосов - 100, средняя оценка - 4.57
omvorykus

Как избежать конфликтов при кластерной репликации

11.10.2007, 09:03. Показов 18478. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброе время суток. В ходе разработки стала проблема, а как же все таки избежать конфликтов..
Ситуация такая.. Имеется два сервера в кластере, возможно и третий добавится... Статусы документов (Платежей) должны фиксироваться в главном документе (Договоре), + агент должен прокладывать данные из ERP в главный документ (Договор).. То есть фоновых сохранения главного документа не избежать, а соотв-но конфликтов... Хотел сделать защиту с помощью Lock / UnLock .. но тут вопросы появляются...

Или если пользователь заблокировал документы и не смог корректно их разблокировать. Лотус например глюканул и вылетел... Можно ли получить коллекцию заблокированных доков для быстрого восстановления. Или как лучше поступить в таком случае.

как блокировка работает в кластерах? будет ли заблокированный документ на одном из серверов заблокированным на другом сервере кластера. Или блокировка действует только на текущем сервере.

не будет ли перезапись данных, занесенных агентом в случае если произошло примерно следующее
1) Пользователь на сервере А открыл документ для редактирования и начал изменять документ
2) агент на сервере Б изменил данные и произошла репликация
3) что будет с документом, который редактировал пользователь. Он затрёт изменения сделанные агентом или, агент на сервере Б увидит, что документ заблокирован на сервере А и изменять его не будет..

В общем вопросов много, ответов мало... Если кто сталкивался с подобным может поделитесь советом.
Спасибо за помощь :D
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
11.10.2007, 09:03
Ответы с готовыми решениями:

Как избежать конфликтов репликации?
Привет! Прошу подсказать правильный подход Есть сервер и есть клиент. Фактически хотелось бы чтобы сервер вписывал свои...

Прошу Подсказать По Поводу Исключения Конфликтов Репликации
Привет! Есть приложение на сервере с которым реплицируется локальные клиенты. На форме есть ряд полей (computed when composed),...

Как разграничить работу трех потоков и избежать конфликтов
Подскажите пожалуйста, впервые сталкиваюсь, наработок пока особо нет, то,что нашла касается только моделирования работы потоков, то есть...

11
0 / 0 / 0
Регистрация: 27.02.2007
Сообщений: 154
11.10.2007, 09:53
<!--QuoteBegin-anvarikus+12:10:2007, 07:50 -->
<span class="vbquote">(anvarikus @ 12:10:2007, 07:50 )</span><!--QuoteEBegin-->Или если пользователь заблокировал документы и не смог корректно их разблокировать. Лотус например глюканул и вылетел... Можно ли получить коллекцию заблокированных доков для быстрого восстановления. Или как лучше поступить в таком случае.
[snapback]81495" rel="nofollow" target="_blank[/snapback]?[/quote]
делаеться агент по разблокировке документов

Code
1
If Len(Source.Document.LockHolders(0))>0 Then Call Source.Document.UnLock
условие что документ залочен<!--QuoteBegin-anvarikus+12:10:2007, 07:50 -->
<span class="vbquote">(anvarikus @ 12:10:2007, 07:50 )</span><!--QuoteEBegin-->не будет ли перезапись данных, занесенных агентом в случае если произошло примерно следующее
1) Пользователь на сервере А открыл документ для редактирования и начал изменять документ
2) агент на сервере Б изменил данные и произошла репликация
3) что будет с документом, который редактировал пользователь. Он затрёт изменения сделанные агентом или, агент на сервере Б увидит, что документ заблокирован на сервере А и изменять его не будет..
[snapback]81495" rel="nofollow" target="_blank[/snapback]?[/quote]
данную ситуацию нужно прорабатывать кодом.....
0
omvorykus
11.10.2007, 10:08
Для: Ronchik

Я понимаю что можно разблокировать конкретно выбранный документ


Code
1
If Len(Source.Document.LockHolders(0))>0 Then Call Source.Document.UnLock
Я спрашиваю как получить коллекцию залоченных доков... Без перебора всех доков.. +не факт что в эту коллекцию не попадут корректно залоченные доки, которые разлочить крайне не рекомендуется.

и на счет второго... Может я не в курсе, но как программно отследить процесс репликации... ведь в описанной выше ситуации затирание данных сделанных агентом будет происходить в процессе репликации, а не выполнения кода... Или Вы имеете в виду "проработать кодом" еще во время выполнения агентом... Если да, то как раз всплывает вопрос о том, можно ли узнать, залочен ли док на другом сервере кластера или нет...
0 / 0 / 0
Регистрация: 04.12.2004
Сообщений: 3,329
11.10.2007, 10:16
<!--QuoteBegin-anvarikus+12:10:2007, 09:55 -->
<span class="vbquote">(anvarikus @ 12:10:2007, 09:55 )</span><!--QuoteEBegin-->Я спрашиваю как получить коллекцию залоченных доков... Без перебора всех доков.. +не факт что в эту коллекцию не попадут корректно залоченные доки, которые разлочить крайне не рекомендуется.
[snapback]81505" rel="nofollow" target="_blank[/snapback]?[/quote]
У заблокированных документов есть непустое поле $Writers. Отбирай в представлении. Представление будет правильно работать только на сервере блокировки.
0
omvorykus
11.10.2007, 10:24
Для: Medevic

Во..Точно.. Так. с разблокировкой наполовину понятно...
но это опять же, не позволяет определить - корректен ли документ и заблокирован в данный момент пользователем для работы, или нужно вмешиваться агентом и разблокировать документ...

Или просто админу фичу сделать, чтобы в случае жалоб все документы разом разблокировать можно было.
0 / 0 / 0
Регистрация: 04.12.2004
Сообщений: 3,329
11.10.2007, 10:34
<!--QuoteBegin-anvarikus+12:10:2007, 10:11 -->
<span class="vbquote">(anvarikus @ 12:10:2007, 10:11 )</span><!--QuoteEBegin-->но это опять же, не позволяет определить - корректен ли документ и заблокирован в данный момент пользователем для работы, или нужно вмешиваться агентом и разблокировать документ...
[snapback]81508" rel="nofollow" target="_blank[/snapback]?[/quote]
Никак не определить.

<!--QuoteBegin-anvarikus+12:10:2007, 10:11 -->
<span class="vbquote">(anvarikus @ 12:10:2007, 10:11 )</span><!--QuoteEBegin-->Или просто админу фичу сделать, чтобы в случае жалоб все документы разом разблокировать можно было.
[snapback]81508" rel="nofollow" target="_blank[/snapback]?[/quote]
Менеджер может делать это (или агент). Или сам пользователь для заблокированных им документов.
0
omvorykus
11.10.2007, 10:38
Для: Medevic

в принципе да... Во время открытия БД пользователем можно пробежаться по всем заблоченным докам и разблочить те доки, которые заблокированы пользователем. Кажись выход, может не совсем шустрый, но более менее корректный...

С этим более менее ясно... А что вот на счет работы на кластерах... Блокировка корректно работает или лучше вообще не использовать? То есть, залоченный док на сервере А, сможет ли открыть для редактирования или просто залочить пользователь на сервере Б.. ?
0 / 0 / 0
Регистрация: 04.12.2004
Сообщений: 3,329
11.10.2007, 10:43
<!--QuoteBegin-anvarikus+12:10:2007, 10:25 -->
<span class="vbquote">(anvarikus @ 12:10:2007, 10:25 )</span><!--QuoteEBegin-->в принципе да... Во время открытия БД пользователем можно пробежаться по всем заблоченным докам и разблочить те доки, которые заблокированы пользователем. Кажись выход, может не совсем шустрый, но более менее корректный...
[snapback]81510" rel="nofollow" target="_blank[/snapback]?[/quote]
Да. Но пользователь может не открывать базу заново. Или пользователь может захотеть специально заблокировать документ (и такая возможность у него есть), чтобы защитить от изменений некоторое время.
По-моему, точно никак не определить.

<!--QuoteBegin-anvarikus+12:10:2007, 10:25 -->
<span class="vbquote">(anvarikus @ 12:10:2007, 10:25 )</span><!--QuoteEBegin-->С этим более менее ясно... А что вот на счет работы на кластерах... Блокировка корректно работает или лучше вообще не использовать? То есть, залоченный док на сервере А, сможет ли открыть для редактирования или просто залочить пользователь на сервере Б.. ?
[snapback]81510" rel="nofollow" target="_blank[/snapback]?[/quote]
Не сможет при наличии нормальной связи.
0
0 / 0 / 1
Регистрация: 30.06.2007
Сообщений: 2,153
11.10.2007, 10:46
Под R5 писал когда-то функциональность блокировки документов.
Сейчас вижу, что она была не идеальна, но тем не менее работала.

Было сделано примерно так:
каждая реплика в настройках знала, где находиться главный сервер.
при открытии, закрытии и прочих опреациях для которых нужна проверка лока, скрипт лез на главный сервак и проверял там документ (в то время это был профильный документ).

Из плюсов вижу:
1. ты сам знаешь как это работает
2. можно что-то продебажить, оптимизнуть и т.д.

Из минусов:
1. скорость сильно зависит от скорости сетки до главного сервака
2. при отваливании интернета отваливался механиз блокировки
0
omvorykus
11.10.2007, 12:45
<!--QuoteBegin-Medevic+12:10:2007, 08:30 -->
<span class="vbquote">(Medevic @ 12:10:2007, 08:30 )</span><!--QuoteEBegin-->Цитата(anvarikus @ 12:10:2007, 10:25 )
Блокировка корректно работает или лучше вообще не использовать? То есть, залоченный док на сервере А, сможет ли открыть для редактирования или просто залочить пользователь на сервере Б.. ?
*

Не сможет при наличии нормальной связи.
[snapback]81511" rel="nofollow" target="_blank[/snapback]?[/quote]
ТО есть не сможет? То есть для пользователя документ будет заблокирован... если он ранее заблокирован другим пользователем на другом сервере? Так?.. или наоборот?
0 / 0 / 0
Регистрация: 19.07.2007
Сообщений: 1,098
11.10.2007, 12:55
Вообще, в кластерной репликции, на одном сервере лучше отключить агент-менеджер...
0
0 / 0 / 0
Регистрация: 26.05.2006
Сообщений: 1,313
11.10.2007, 13:34
Sorry за нравоучения вместо конкретного решения:

IMHO вы пытаетесь взвалить на Домину несвойственную ему задачу. Уже помянуты блокировки, сейчас кто-нибудь транзакцию вбросит. В общем - СУБД.
Т.е. либо переформулируйте задачку, либо меняйте инструмент.

Совет на будущее: Домина "транзакционна" на уровне ОДНОГО документа. При синхронной модификации группы док-тов вы рано или поздно вляпаетесь (при репликации с филиалом туда попадет только половинка "транзакции")
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
11.10.2007, 13:34
Помогаю со студенческими работами здесь

В Каких Случаях Портятся Файлы При Репликации И Как Это Побороть?
Привет! Прошу подсказать, в каких случаях портятся файлы при репликации и как это побороть?

Как избежать остановки таймера при выскакивании MsgBox и при нажатии на кнопку “закрыть”?
Например, во время работы программы работает таймер времени, который показывает, сколько времени осталось до завершения работы программы,...

Как избежать бана при первичной регистрации
Здравствуйте господа. Кто нибудь может подсказать новичку на что следует обратить внимание чтобы избежать бана при разработке сайта

Как избежать мерцания при перерисовке Panel
Необходимо чтобы после того, как загнал все точки в список (List), их отрисовало на panel. Причем так, чтобы &quot;не моргала&quot; панель....

Как избежать добавление в БД при обновлении страницы?
Доброго всем времени суток Проблема соответствует заголовку темы Код в катором происходит автоматическое добовление данных к БД...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru