!!8 Flyonts Serp Cache Hl++2008 (Office97)

Post on 01-Nov-2014

1.517 views 2 download

Tags:

description

 

Transcript of !!8 Flyonts Serp Cache Hl++2008 (Office97)

Создание системы кэширования для сложных

вычислительных системВладимир Фльонц

<МЕТА>

Зачем?

• Кэш (англ. cache) - в компьютерных науках промежуточный буфер с быстрым доступом.• Кэш (англ. cash) - сленговое обозначение наличных денег.

Кэш сбережёт вам кэш.

Реклама• Десять лет в интернете.• Один из наиболее посещаемых украинцами сайтов*• 50+ сервисов и служб под одной крышей• Собственный поиск по украинскому сегменту Web

* - www.gemius.com.ua

Один запрос «большого поиска»

Balancer Balancer

Что можно кэшировать?

• Найденные документы по каждому слову – дисковый кэш.• Конечные результаты поиска (SERP)

+ Просто– Большинство «тяжелых» запросов не повторяются

Пока кэш не большой

• Если все умещается в память (RAM) то лучше хранить это там- минусы: сбой/перезапуск и кэш нужно заново наполнять

• Своя реализация vs. готовые third party решениятребования:• максимально быстрый поиск/доступ к записи• эффективное удаление устаревших записей

• list<serp> + map<query, serp*>

Растём

• Увеличение количества запросов * увеличение времени жизни записи в кэше = (увеличение размера данных)2

• Надо «слазить» на диск• Выбор контейнеров хранения• Опять изобретать велосипед?

Berkeley DB Btree

• Знакомый, хорошо зарекомендовавший себя компонент• Поддержка многопоточных приложений• Прогнозируемое время отклика• Собственная система кэширования

Berkeley DB Btree

• Знакомый, хорошо зарекомендовавший себя компонент• Поддержка многопоточных приложений• Прогнозируемое время отклика• Собственная система кэширования

• Фрагментация и избыточность данных• Постраничное кэширование не эффективно!

Попробуем сделать лучше

• Хэш таблица в памяти данные на диске• Последовательная запись, произвольное чтение• Сжатые данные быстрее пишутся и читаются• Данные пишутся и «закрываются» частями• «Закрытые» части переходят в R/O• Мы можем потерять, но только малую часть• Чистка мусора происходит тоже частями

(hint: ext3 медленно удаляет большие файлы)

Ещё лучше

• Произвольное чтение – медленно• Востребованных данных по прежнему гораздо меньше

Ещё лучше

• Произвольное чтение – медленно• Востребованных данных по прежнему гораздо меньше

• Промежуточный «горячий» кэш по записям в памяти• Не обязательно в том же процессе на той же машине• Не забываем сжимать то что кэшруем• Теперь мы только пишем на диск и иногда читаем

Маштабируемость

Balancer Balancer

Маштабируемость

• Полные копии на каждом из сливателей Надёжно но избыточно, многократное кэширование• Общее правило распределения

Hash(Query) mod NДобавление хранилищ требует очистку кэша

• Общий менеджер, раздельные хранилищаОдно узкое место, закон Мёрфи никто не отменял.

Вопросы?

Владимир Фльонц<META>

flyonts@office.meta.ua