Memcache (d) и Varnish для ускорения 3-уровневой веб-архитектуры - PullRequest
108 голосов
/ 20 декабря 2010

Я пытаюсь ускорить мой тест (трехуровневая веб-архитектура), и у меня есть несколько общих вопросов, касающихся Memcache (d) и Varnish.

  • В чем разница?
    Мне кажется, что Varnish находится за веб-сервером, кэширует веб-страницы и не требует изменений в коде, только конфигурация.
    С другой стороны, Memcached - это система кэширования общего назначения, которая в основном используется для кэширования результатов из базы данных и требует изменения в методе get (первый поиск в кэше).

  • Могу ли я использовать оба? Лак на переднем веб-сервере и Memcached для кэширования базы данных?

  • Какой вариант лучше?

    (сценарий 1 - в основном запись,
    Сценарий 2 - в основном чтение,
    сценарий 3 - чтение и запись аналогичны)

Ответы [ 2 ]

266 голосов
/ 20 декабря 2010
  • Лак перед веб-сервером; он работает как обратный http-прокси, который кэширует.
  • Вы можете использовать оба.
  • В основном пишите - Лак должен будет очистить затронутые страницы. Это приведет к дополнительным расходам и небольшим преимуществам для измененных страниц.
  • Чаще всего читайте - Лак, вероятно, покроет большую часть.
  • Аналогично для чтения и записи - Varnish будет обслуживать многие страницы за вас, Memcache предоставит информацию для страниц, которые содержат смесь известных и новых данных, позволяя вам создавать страницы быстрее.

Пример, который может применяться к stackoverflow.com: добавление этого комментария лишает законной силы кэш страницы, поэтому эту страницу придется очистить от Varnish (а также от страницы моего профиля, которая, вероятно, не стоит начинать кэширование с самого начала. аннулировать все затронутые страницы может быть немного проблемой). Все комментарии, тем не менее, все еще находятся в Memcache, поэтому базе данных остается только написать этот комментарий. Больше ничего не нужно делать с помощью базы данных для генерации страницы. Все комментарии извлекаются Memcache, и страница перечитывается до тех пор, пока кто-то не повлияет на нее снова (возможно, проголосовав за мой ответ). Опять же, база данных записывает результаты голосования, все остальные данные извлекаются из Memcache, и жизнь идет быстро.

Memcache спасает вашу БД от большой работы по чтению, Varnish спасает ваш динамический веб-сервер от нагрузки на процессор, заставляя вас генерировать страницы реже (и немного уменьшает нагрузку на БД, если не для Memcache).

31 голосов
/ 07 августа 2011

Мой опыт основан на использовании Varnish с Drupal. В максимально простых терминах я отвечу вот так:

Как правило, Varnish работает для трафика, не прошедшего проверку подлинности (посредством файлов cookie), а memcached будет кэшировать проверенный трафик.

Так что используйте оба.

...