!!8 flyonts serp cache hl++2008 (office97)

15
Создание системы кэширования для сложных вычислительных систем Владимир Фльонц <МЕТА>

Upload: ontico

Post on 01-Nov-2014

1.520 views

Category:

Technology


2 download

Tags:

DESCRIPTION

 

TRANSCRIPT

Page 1: !!8 Flyonts Serp Cache Hl++2008 (Office97)

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

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

<МЕТА>

Page 2: !!8 Flyonts Serp Cache Hl++2008 (Office97)

Зачем?

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

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

Page 3: !!8 Flyonts Serp Cache Hl++2008 (Office97)

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

* - www.gemius.com.ua

Page 4: !!8 Flyonts Serp Cache Hl++2008 (Office97)

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

Balancer Balancer

Page 5: !!8 Flyonts Serp Cache Hl++2008 (Office97)

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

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

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

Page 6: !!8 Flyonts Serp Cache Hl++2008 (Office97)

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

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

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

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

Page 7: !!8 Flyonts Serp Cache Hl++2008 (Office97)

Растём

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

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

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

Berkeley DB Btree

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

Page 9: !!8 Flyonts Serp Cache Hl++2008 (Office97)

Berkeley DB Btree

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

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

Page 10: !!8 Flyonts Serp Cache Hl++2008 (Office97)

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

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

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

Page 11: !!8 Flyonts Serp Cache Hl++2008 (Office97)

Ещё лучше

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

Page 12: !!8 Flyonts Serp Cache Hl++2008 (Office97)

Ещё лучше

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

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

Page 13: !!8 Flyonts Serp Cache Hl++2008 (Office97)

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

Balancer Balancer

Page 14: !!8 Flyonts Serp Cache Hl++2008 (Office97)

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

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

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

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

Page 15: !!8 Flyonts Serp Cache Hl++2008 (Office97)

Вопросы?

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

[email protected]