Your SlideShare is downloading. ×
Redis varnish js
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Introducing the official SlideShare app

Stunning, full-screen experience for iPhone and Android

Text the download link to your phone

Standard text messaging rates apply

Redis varnish js

1,752
views

Published on

Слайды с доклада, …

Слайды с доклада,
Илья Кантор 2010

Published in: Technology

0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
1,752
On Slideshare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
10
Comments
0
Likes
1
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Удобная кросс-доменная авторизация и персонализация для DDOS-устойчивого сайта
    Redis + Varnish + Javascript
  • 2. DDOS
  • 3. DDOS-устойчивый сайт
    Как защититься?
    Приходит 10.000 HTTP-запросов/сек с разных IP…
    Что делать?
    Идеи?
    ИЛИ
    ?
  • 4. DDOS-устойчивый сайт
    Варианты защиты
    Вычислять и банить IP ботов
    Способы есть, но это сложно:
    Боты маскируются.
    Оператор – не дурак.
    Ботнет большой.
  • 5. DDOS-устойчивый сайт
    Варианты защиты
    Настоящий Хайлоад
    Большие расходы: железо, программирование…
    DDOS закончится и все это будет не надо.
  • 6. DDOS-устойчивый сайт
    Варианты защиты
    Не пускать анонимов в движок
    Обслуживать их из быстрого кеша
    Медленный сервис? Captcha!
  • 7. Что это означает для движка?
    Типичный проект
    посетитель
    Как внедрить кеширование для анонимов ?
  • 8. Первый подход. Классика жанра.
    Движок с кешированием
    запрос
    FastCGI
    страница
    посетитель
  • 9. Короче
    Структура
    Много компонент
    Много лишней работы по копированию данных
    Производительность
    Средняя, а нужна максимальная.
  • 10. Версия 2.0"Кэш – наше всё"
    авторизация
    FastCGI

    HTTP-КЭШ
    посетитель
    P.S.
    Также пробовали подписанные куки разные для анонима и зарегистрированногоCOOKIE .= md5(secret_anon,cookie).substr(0,4)COOKIE .= md5(secret_regged,cookie).substr(0,4)
  • 11. Redis
    База а-ля Memcache
    Хранит все в памяти
    Сохраняет периодически или по запросу
    GET SET EXPIRE
    Умеет структуры данных
    HASH, (Sorted) SET, LIST
    - это БЫСТРО!
  • 12. Varnish
    Кеширующий прокси / сервер /балансер /…
    Хуки на всех стадиях обработки запроса
    http://www.varnish-cache.org/trac/wiki/VarnishFeatures
  • 13. Что получилось
    2
    C{ … }C
    1
    посетитель
    Нет
    3
    Авторизован?
    Ответ из кеша
    Да
    Ответ генирируют
    скрипты
  • 14. ==cut
    Вопросы?
  • 15. Персонализируемый сайт
    Геотаргетинг
    Онлайн-сервисы
    Просмотренные товары
    То, что надо!!!
    Персонализация «рулит»
    Она нужна всем, включая анонимных посетителей
    => Авторизуем всех!
  • 16. Кэш VSперсонализация
    Как объединить?
    Кэш
    страница генерируется 1 раз
    Персонализация
    страница подстраивается под посетителя
    Идеи?
  • 17. Кэш + персонализация
    Персонализация влияет комплексно.
    Геотаргетинг
    телефоны, цены, информация...
    Каждый геотаргетинг - своя страница в кеше
    2
    mod_geoip
    1
    3
    посетитель
    Варианты страницы
    Russia
    Japan
    USA
  • 18. Кэш + персонализация
    Персонализация влияет точечно.
    Блочные сервисы
    Последние просмотры
    Реклама
    ...
    <html>
    <divclass="sidebar">

    <esisrc="/lastread.php"/>

    </div>
    </html>
    Подзапрос
  • 19. Очистка кеша при изменениях
    К записи в кэше прикреплены тэги.
    Тэги задаются при генерации страницы.
    По тэгам можно удалять.
  • 20. Очистка кеша при изменениях
    Пример:
    Страница фото
    http://www.photosight.ru/photos/3933415/
    Тэг: foto_123
    Фото обновляется
    При изменении файла или описания фото
    При изменении кол-ва комментариев
  • 21. Очистка кеша при изменениях
    Пример:
    Страница галереи / тэга
    http://www.photosight.ru/photos/category/7/
    Тэги: foto_1, foto_2, …, foto_20
  • 22. Кэш + сложные зависимости… или когда добавить таги лень
    Рецепты
    Ограничить время жизни кеша
    Убивать все
    Весь тэг article при изменении дерева статей
    Или все URL вида article/*
    Главное –HIT/MISS
  • 23. Дополнительно
    Кешируем и для зарегистрированных
    SID в Hash
    Поддержка 304 в браузере
    Полезные ссылки
    http://www.varnish-cache.org/docs/2.1/
    http://www.slideshare.net/tgr1/varnish-plnog-4
    http://www.slideshare.net/crucially/varnish-velocity-ignite
    http://kristianlyng.../smart-bans-with-varnish/
  • 24. ==cut
  • 25. Мульти-доменный сайт
    Один сайт – много доменов 2 уровня
    http://site.ru
    http://notebook-site.ru
    http://mouse-site.ru

    Нахрена?
    SEO !
  • 26. Кросс-доменная авторизация
    Вошел на один сайт
    http://site.ru
    … Авторизован на всех
    • http://notebook-site.ru
    • 27. http://mouse-site.ru
    Идеи?
  • 28. Кросс-доменная авторизация
    Вход, выход, авторизация – на мастере
    master.com
    Задача - синхронизировать Cookie между доменами
    Как?
    См. следующий слайд
  • 29. Персонализирующий скрипт
    Анонимная страница
    a.com
    http://master.com/auth.php
    Загрузить/создать сессию
    По кукам master.com
    Если зарегистрированный:
    Поставить куку на b.com=>reload
    Если аноним:
    Персонализация при помощи JS
    <html>
    <head>
    <scriptsrc="http://master.com/auth.php">
    ...
    </head>
    ...
    • Cookie анонима стоят только на master.com
  • Производительность
    C +
    Страница из кэша
    SID существует, авторизован
    и валиден?
    Нет
    a.com/…
    Да
    +
    движок
    ...
    <scriptsrc="http://master.com/auth.php">
    ...
  • 30. Pitfall
    3rd party cookie!
    Политика безопасности P3P
    Safari запрещает по умолчанию
    Другие браузеры можно настроить
    Демо
    Как обойти?
  • 31. Удобная авторизация
    Динамическая форма с любой страницы
    Кросс-доменная коммуникация
    <script> - логин-пароль нельзя передавать GET
    window.name+ вспомогательный iframe
    Действия для авторизованного посетителя
    Auth.decorate(callback)
    Автопривязка после регистрации
    Комментарии
    Все вместе
    См. демо http://master.com
  • 32. Дополнительная защита
    Время жизни однократных посетителей
    Если в течение минуты не было захода – удалять
    Защищает от ботов без кук
    Против ботов с поддержкой Cookie
    Как правило, таких ботов меньше
    Не хранить анонимов с IE6
    Определение по browser features –> запись в Cookie
    Персонализация не везде
    Captcha…