Memcache (d) проти лаку для прискорення 3-х рівневої веб-архітектури


111

Я намагаюся прискорити показник (3-рівнева веб-архітектура), і у мене є деякі загальні питання, пов'язані з Memcache (d) та Varnish.

  • Яка різниця?
    Мені здається, що Varnish стоїть за веб-сервером, кешує веб-сторінки і не вимагає зміни коду, просто конфігурації.
    З іншого боку, Memcached - це система кешування загального призначення, і в основному використовується для кешування результатів із бази даних і вимагає змін у getметоді (перший пошук кешу).

  • Чи можу я використовувати обоє? Лакувати на передньому веб-сервері та Memcached для кешування бази даних?

  • Який кращий варіант?

    (сценарій 1 - в основному пишуть,
    сценарій 2 - в основному читають,
    сценарій 3 - читання і запис схожі)

Відповіді:


269
  • Лак перед веб-сервером; він працює як зворотний проксі-http, який кешує.
  • Можна використовувати і те, і інше.
  • Здебільшого пишуть - для лаку потрібно буде очистити постраждалі сторінки. Це призведе до накладних витрат і мало користі для змінених сторінок.
  • В основному читається - лак, ймовірно, охопить більшу частину цього.
  • Подібне читання та записування - лак буде обслуговувати багато сторінок для вас, Memcache надасть інформацію для сторінок, які містять суміш відомих та нових даних, що дозволять швидше створювати сторінки.

Приклад, який може бути застосований до stackoverflow.com: додавання цього коментаря визнає недійсним кеш сторінки, тому цю сторінку потрібно було б очистити від лаку (а також мою сторінку профілю, яку, напевно, не варто починати кешувати. Пам’ятайте про недійсність усіх Зачеплені сторінки можуть бути проблемою). Однак усі коментарі все ще є в Memcache, тому база даних має написати лише цей коментар. Нічого іншого не потрібно робити базі даних для створення сторінки. Усі коментарі витягнуті Memcache, і сторінка буде відновлена, поки хтось не вплине на неї знову (можливо, голосуванням моєї відповіді). Знову ж таки, база даних записує голосування, всі інші дані витягуються з Memcache, і життя проходить швидко.

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


3
це: "(можливо шляхом голосування мою відповідь вгору") змусив мене проголосувати вашу відповідь
Сеск

тому не рекомендується на сайтах, таких як stackoverflow (або на веб-сайті типу facebook зі сторінкою стрічки активності) використовувати лак. є це?
Мохаммед Реза Есмаїлзаде

@jbferland Моє запитання у вашому прикладі полягає в тому, що у верхній частині цієї сторінки є фотографія мене з кількістю очок, які я отримав, як ми можемо кешувати з Varnish, але показати цю область динамічною?
Hossj

@Hossj за допомогою тегів ESI.
Джонні

Лак може бути перед веб-сервером, але також позаду веб-сервера. Він також може бути одночасно перед і за тим самим веб-сервером ;-) Наприклад, лак не підтримує SSL, тому не рідкість веб-сервер перед Varnish для обробки HTTPS. Потім трафік передається на Varnish, який потім спілкується з веб-сервером програми - який може бути тим же сервером, що і той, що обробляє трафік HTTPS.
мат

32

Мій досвід походить від використання лаку з Drupal. Як можна простішими словами, ось як я відповів би:

Загалом, Varnish працює для неаутентифікованого (через cookie) трафіку, а запам’ятовується кеш-пам'ять.

Тому використовуйте обидва.


5
Ви прибили це, до речі, я думаю, що лак краще працює на кешування анонімних користувачів ...
Allan Jikamu
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.