Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Синхронизация блоков данных / 10 сообщений из 10, страница 1 из 1
21.02.2013, 14:32
    #38160768
PeterXa
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Синхронизация блоков данных
Есть N процессов, запущенных на разных серверах.
Необходимо соорудить что-то вроде шаред мемори между этими процессами.
Все процессы могут читать/писать в общую память.
Есть вариант сделать у каждого процесса свою локальную копию, но встает вопрос синхронизации этих всех блоков.
Подскажите где почитать про подобные алгоритмы синхронизации.
...
Рейтинг: 0 / 0
21.02.2013, 22:00
    #38161488
vvm
vvm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Синхронизация блоков данных
PeterXa,

просто сервер БД не подойдет?
...
Рейтинг: 0 / 0
21.02.2013, 22:11
    #38161498
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Синхронизация блоков данных
PeterXa, без специального сетевого оборудования и протокола у тебя 99% времени
будет занимать таймаут ожидания сетевых событий синхронизации.
...
Рейтинг: 0 / 0
22.02.2013, 01:19
    #38161610
ДохтаР
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Синхронизация блоков данных
PeterXa,
Целяком и полностью согласен с mayton .

Что касается самого механизма, то он ИМХО должен выглядеть
приблизительно следующим образом:

1. У каждой сущьности в один момент времени должна быть одна мастер нода,
производящая изменения.

2. Мастер нода должна передавать вектор изменений
всем подчиненным нодам.

3. Изменяющая нода должна запрашивать у мастер ноды
разделяемую брокировку ресурса.

4. Вместе с блокировкой можно отправить запрос на изменение,
и как результат получить в ответ вектор изменений.

5. Менеджмент очереди разделяемых блокировок и очередности изменений
должен производиться мастер нодой.

6. По некому алгоритму любая нода может забрать
на себя мастер роль над сущьностю,
в зависимости от состояния очереди блокировок.

7. Каждая нода может держать у себя историю всех изменений,
для поддержки конситентности.

8. Для этого все ноды должны иметь один общий-глобальный
счетчик-идентификатор изменения для всех сущьностей ( типа SCN).
...
Рейтинг: 0 / 0
22.02.2013, 01:39
    #38161618
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Синхронизация блоков данных
Можно мастер ноду передавать по кругу как флажок.
Мне кажется это даст некоторые преимущества
при случайном отпадении мастер-ноды из сети.
...
Рейтинг: 0 / 0
22.02.2013, 02:37
    #38161637
ДохтаР
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Синхронизация блоков данных
mayton,

Мастер нодой , должна быть та , котора генерирует наибольшее
количество изменений.

Обработка ситуации отпадание мастер ноды,
отдельный вопрос для выбора умный-красивый( быстрый-надежный)
на этапе проектировки архитектуры межнодового взаимодействия.
В самом простом случае
либо
все замернет до истечения кипэлайв таймаутов,
либо
очень быстро сгенерирует 100500 байт мусорных данных.
...
Рейтинг: 0 / 0
22.02.2013, 13:27
    #38162181
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Синхронизация блоков данных
По сути надо реализовать аналог Oracle Cache Fusion.
...
Рейтинг: 0 / 0
22.02.2013, 13:57
    #38162238
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Синхронизация блоков данных
Можно придумать так. Допустим серверов 4 штуки (N=4). И допустим
что shared memory разбита на блоки (addressBlock). Здесь блок
будет идентифицироваться не физическим адресом в памяти
а неким относительным адресом или индексом чтобы маппинг
между серверами был одинаков. Тогда для каждого блока
мастером будет сервер Nmaster = mod(addressBlock,4);
Трафик будет равномерным. Правда в этом случае при отвале
одного сервера (N=3) нужно будет аварийно обнулить владельцев
и сделать перерасчёт.
...
Рейтинг: 0 / 0
23.02.2013, 05:19
    #38163072
ДохтаР
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Синхронизация блоков данных
mayton сделать перерасчёт.
Критический ключевой момент архитекруры.

Нафик ваще такая распределенная ситема нужна,
где при появлении соплей и чихов нужно делат полный рестарт,
а тем более перерасчет.

ИМХО Если связываться, то нужно делать систему надежной,
а производительность оптимизировать или наращивать железом, когда ее нехватает.
...
Рейтинг: 0 / 0
23.02.2013, 08:53
    #38163092
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Синхронизация блоков данных
Уважаемые теоритики, у вас спрашивали что почитатать, а не объяснить принципы.
А читать надо статьи про "распределенные вычисления" и про "distributed computing" (второе даже лучше: больше статей и книг).
Distributed systems - тоже можно, но там сложнее найти что-то более серьезное чем учебные пособия и куски лекций.
...
Рейтинг: 0 / 0
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Синхронизация блоков данных / 10 сообщений из 10, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]