Вопрос

PREDIS утверждает, что имеет шарнинг на стороне клиента (поддержка последовательного хэширования ключей). http://github.com/nrk/predis

Я могу делать шардинг, используя подключение к массиву профилей (узлов), но это не последовательное хэширование. Когда я добавляю еще один узел в бассейн, некоторые ключи не могут быть найдены. У кого -нибудь есть опыт в этом?

Используя PHP 5.2 (и версия Redis PHP 5.2).

Это было полезно?

Решение

выглядит как проблема разрешений с учетной записью домена \ sn_spapprod.У него есть вход в SQL с необходимыми правами?Если у вас есть мультисерверная ферма, у вас есть псевдоним на каждом сервере?

Приятный трюк, чтобы увидеть, есть ли у вашего пользователя доступа к использованию тестирования, см. Нижний раздел Эта статья на том, как это сделать.Если этот тест не возвращает ошибок, ваше соединение с сервером SQL в порядке - обязательно используйте имя псевдонима Server2 при запуске теста.

Если тест возвращает ошибку, ваш псевдоним, вероятно, не настроен правильно на сервере.

Также может быть, что ваша учетная запись не имеет необходимых разрешений для запуска мастера конфигурации.Обратитесь к разделу «Устранение учетной записи администратора пользователя Setup» в Эта статья .

Другие советы

Решение состоит в том, чтобы использовать виртуальный шардинг. Я не знаю, что Predis Framework работает, но я предсказываю, что он использует какой -то массив - вы, вероятно, заполняете его информацией о каждом осколках при запуске.

Предположим, что у вас будет максимум 10 осколков (это число вряд ли будет достигнуто). Затем создайте массив Sharding, который указывает только на 3 настоящих сервера. В будущем, когда вы добавите новые узлы, вы будете переносить связанные данные в новый Shard и изменить картирование. Этот подход сохраняет изменяющуюся хэш -функцию формы.

Начальное отображение:

0 => 0 //node #0
1 => 0
2 => 0
3 => 1 //node #1
4 => 1
5 => 1
6 => 2 //node #2
7 => 2
8 => 2
9 => 2

Когда вы добавляете новый узел, вы только меняете отображение:

0 => 0
1 => 0
2 => 3 // new node #3
3 => 1
4 => 1
5 => 3 // new node #3
7 => 2
8 => 2
9 => 3 // new node #3

Таким образом, вы должны переместить данные с H (x) = 9 или 5 или 2 в узел № 3.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top