Как эффективно искать информацию о UUID в распределенной среде? - PullRequest
0 голосов
/ 10 ноября 2009

В настоящее время я делю пространство UUID по модулю, поэтому поиск данных не требует проверки связи с каждым сервером. Однако основная проблема с модулем - это масштабирование, поскольку добавление большего количества узлов в хранилище данных, вероятно, требует некоторой миграции данных. По вашему мнению, каков наилучший подход для добавления большего количества узлов в систему при сохранении доступности службы?

Заранее спасибо!

Chris

1 Ответ

0 голосов
/ 10 ноября 2009

Я вижу два сценария добавления дополнительных узлов:

  1. Ваш текущий набор узлов недостаточен для ваших требований к производительности.
  2. Вы добавляете новые данные, поэтому со временем вам необходимо добавить новые узлы

Во втором случае, если идентификаторы UUID имеют некоторый компонент, основанный на времени, разделение по возрасту может быть достаточно хорошим

Но я предполагаю, что это первый случай, который более интересен. По мере использования ваших данных вы обнаружите, что разделение должно измениться, чтобы распределить работу достаточно. В этом случае я не вижу альтернативы перемещению некоторых разделов на новые узлы, по определению текущий набор узлов перегружен. Мне не ясно, в какой степени проблема - это фактическая миграция, которая вызывает беспокойство? Или же клиентам вдруг нужно перейти на новое место для своих данных?

Можете ли вы реализовать какой-нибудь ленивый подход поиска?

Client initialises with current table of servers, 
    (hence knows the modulus to apply to uuid and can route on that basis)

Servers decide to reorganise themselves

Client gets a request, calclulates a now invalid modulus

Attempts to access the data

response says "Gone Away" **AND** gives the new server info

Client can now recompute the location
...