Я разрабатываю небольшую систему управления группами, где есть два разных типа серверов. «Клиентский сервер», который может присоединиться и оставить группы на «сервере управления».Как синхронизировать изменения списков по сети в Python
В группе многоадресной передачи имеется несколько серверов управления. Таким образом, клиентские серверы отправляют запросы на соединение и оставляют эту группу многоадресной рассылки. В связи с тем, что многоадресная передача IPv6 не является надежной, существует вероятность того, что некоторые серверы управления не получат запросы. Поэтому их список - членство не в курсе.
Так что мне нужна функция, которую я могу использовать для синхронизации списков всякий раз, когда они меняются. Есть три типа изменений:
- клиент-сервер покидает группу
- клиент-сервер присоединяется к группе сервер
- клиент обновляет свой полный список членства (так что сервер управления заменяет свой список)
Я подумал о создании списка журналов на каждом сервере управления, который регистрирует последние изменения (возможно, последние 60 секунд). Если сервер уведомляет об изменении, он информирует другие серверы управления об изменении и отправляет время с этой информацией. Если получатель имеет более недавнее изменение, он игнорирует информацию отправителя. Если нет, он обновляет свой список.
Но это лучший способ сделать это? Существуют ли специальные шаблоны для таких вещей? Или, может быть, даже python framework?
Значит, любые изменения на любом сервере управления должны отражаться на всех серверах да? –
Я бы использовал что-то вроде spanning tree, у вас есть корень, который все серверы отправляют обновления после изменений, а затем отправляют номер ревизии так часто, если номер версии больше текущей синхронизации. –
Да, на всех серверах управления. Предположим, у нас есть два сервера управления A и B. Клиентский сервер регистрируется через многоадресную рассылку в группу, где A и B являются членами. Но из-за сетевых проблем только А получает запрос на регистрацию. Таким образом, B имеет недопустимый вид в списке групп, в которые входит клиентский сервер. Чтобы решить эту проблему, после каждого процесса регистрации каждый сервер управления синхронизирует новый список со всеми другими серверами управления. –