2013-03-19 3 views
0

Я начинаю интегрировать libmemcached в мое приложение и читать документацию, есть флаг неблокирующего режима. После быстрого google, похоже, преимущество производительности в режиме без блокировки, но есть ли недостатки для запуска libmemcached в режиме без блокировки?Когда использовать libmemcached в неблокирующем режиме?

ответ

0

Конечно, есть. Недостаток возникнет только в том случае, если вам необходимо ОБЕСПЕЧИТЬ, что письменное значение фактически было записано в memcached и не потерпело неудачу. Например, вы используете memcached для хранения переменной счетчика, у которой есть дозор, который проверяет, достиг ли счетчик определенного значения перед выполнением операции.

В режиме блокировки клиент memcached будет ждать, чтобы получить ответ на успех записи от memcached, прежде чем продолжить, и создать ошибку, если она не удалась. Таким образом, вы знаете, что счетчик был обновлен. Если вы укажете, что он должен писать в неблокирующем режиме, клиент отправляет запрос на увеличение счетчика, но никогда не ждет, чтобы он действительно произошел. Поскольку он не ждет, вы выполняете выполнение кода после того, как вызов возобновляется быстрее, но с неопределенностью не зная наверняка, что счетчик постоянно увеличивался.

Однако, поскольку значения memcached уничтожаются при перезагрузке службы (сбой системы сообщений), вы никогда не можете быть уверены, что значение будет там. Кроме того, при обрезке с низкой памятью вы также никогда не можете быть уверены, что значение на 100% правильное, поскольку оно может быть обрезано алгоритмом LRU - вам нужно постоянное хранилище, чтобы смягчить эту неопределенность.

Учитывая эту неопределенность, многие люди используют неблокирующий режим, чтобы получить прирост производительности, потому что они никогда не могут быть полностью уверены, что значение счетчика в memcached в любом случае не сбрасывается/не поддается нейтрализации, поэтому почему бы не получить некоторую производительность для компромисс.

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

R

 Смежные вопросы

  • Нет связанных вопросов^_^