Как правильно проверять, среплицировался ли документ на сервер или нет

  • Автор темы Автор темы fedotxxl
  • Дата начала Дата начала
может статься что время репликации всегда позже, чем время сохранения документа, и тогда придется хранить информацию о предпоследней репликации..
Не..
1.Если время репликации ПОЗЖЕ времени сохранения док-та, значит данный док-т синхронен для данной пары серверов
2.Если время сохранения док-та позже последнего сеанса репликации (а в журнале только последний и хранится), значит про данный док-т достоверно ничего сказать нельзя, т.к.:
а) он еще не реплицировался, либо
б) он реплицировался, но сеанс кончился неудачно
 
Гм... интересная задачка...
Есть две реплики на двух серверах - А и Б. На А изменяют документ. Нужно произвести какое-то действие, когда документ дотечет до сервера Б. Как ПРАВИЛЬНО проверить, дошел ли документ до Б или же нет?
Пусть условие такое - в промежутки между репликацией документ может меняться только на одном сервере.

Короче - есть еще одна идея: заюзать штатный механизм Домино - Billing.
billing.JPG
PS - как я эту штуку забыл - лет 8 пашет уже... ;) Эт когда межгород диалап только был :(
Но и тут был замечен глюк - когда биллинг считает, что документ был прочтен сервером, на самом деле он НЕ БЫЛ сохранен в базе! Так что для важных данных был применен механизм чековки на уровне приложения...
 
1.Если время репликации ПОЗЖЕ времени сохранения док-та, значит данный док-т синхронен для данной пары серверов
не согласен.. даже на простой схеме - филиал - центр, т.е. сервер - сервер время репликации может убегать от реального времени вперед, а если в центре несколько серверов, которые реплицируются между собой и с любыми филиалами, то в такой ситуации время репликации может убегать на часы вперед..
таким образом, взяв базу на любом сервере, сложно определить степень актуальности ее данных..
поэтому я и говорил о том, что придется смотреть на условие - время предпоследней репликации < время изменения документа < время последней репликации..
 
Прошу прощения, что давно не посещал тему - времени было мало
Да, задача проста - послать ссылку пользователю, когда документ прийдет на определенный сервер (сервер, на котором работает пользователь)
 
Гм... интересная задачка...
Есть две реплики на двух серверах - А и Б. На А изменяют документ. Нужно произвести какое-то действие, когда документ дотечет до сервера Б. Как ПРАВИЛЬНО проверить, дошел ли документ до Б или же нет?
Пусть условие такое - в промежутки между репликацией документ может меняться только на одном сервере.
1. на сервере А при создании/изменении ставим два флага в поля, например, Mod = "1", Link = "1"
2. на сервере Б пишем агента, который отбирает документы (Mod = "1" & Link = "1"), отправляет линки на эти документы и меняет флаг Link ="0"

вот и все..
 

Вот мне стало интересно - кто-ть вообще пробовал парсить лог репликации и repl. history и получать достоверные данные о доставке cообщения до другого сервера??? ;) Нет? Попробуйте - вам понравится! :o :( :D

1. на сервере А при создании/изменении ставим два флага в поля, например, Mod = "1", Link = "1"
2. на сервере Б пишем агента, который отбирает документы (Mod = "1" & Link = "1"), отправляет линки на эти документы и меняет флаг Link ="0"
вот и все..

прально - а в случе нескольких серверов - и в небходимости Веерной рассылки сообщений - по уникальному для каждого сервера полю...
 
Увы - да. Тогда - ответные документы или фолдеры...
Я думал над дополнительными документами. А папки, по-моему, это неправильно.
Каждый раз при изменении создавать дополнительный документ с именем сервера, с которого надо слать оповещения, и временем изменения главного документа.
Потом агентом ловить их на соответствующих серверах. Если время совпадает, то с большой долей вероятности можно сказать, что это документ отреплицировался и надо слать оповещение.
А если не совпадают, то:
1) Документ еще не отреплицировался.
2) Документ еще не отреплицировался, но его уже успели поправить на этом сервере.
3) Документ отреплицировался, но его уже успели поправить на этом сервере.
С 1 всё просто, а 2 и 3 случаи интересны. И в них пока не до конца понятно, что делать.
 
Я думал над дополнительными документами. А папки, по-моему, это неправильно.
Каждый раз при изменении создавать дополнительный документ с именем сервера, с которого надо слать оповещения, и временем изменения главного документа.
Потом агентом ловить их на соответствующих серверах. Если время совпадает, то с большой долей вероятности можно сказать, что это документ отреплицировался и надо слать оповещение.
А если не совпадают, то:
1) Документ еще не отреплицировался.
2) Документ еще не отреплицировался, но его уже успели поправить на этом сервере.
3) Документ отреплицировался, но его уже успели поправить на этом сервере.
С 1 всё просто, а 2 и 3 случаи интересны. И в них пока не до конца понятно, что делать.

Может пойти с другого конца?:( На сервер_Б строится вид отсортированный: 1- если нужно обрабатывать Изменения=ВремяИзм 2 - если просто появление=время создания.
агент бежит по вид с начала и на сервере_Б:
1 док есть - нет ответного = создает ответный (можно с ридерсами серв_А+серв_Б) + прописывает дату изм. главного дока > Action.
2 - док есть + есть ответный, но дата изм. в ответном не равна главному >Action
п.2 нужен если нужна реакция на изменение гл. док-та.

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

имеет один явный минус, другие пока не осознал:
- на локальной реплике придется доп. шаманить :)
 
Мы в соцсетях:

Взломай свой первый сервер и прокачай скилл — Начни игру на HackerLab