SlideShare a Scribd company logo
1 of 14
Download to read offline
Sphinx. Построение
                 распределенного
                     сервера
       Борисенко Евгений
       Системный администратор
       компании «КвартСофт»
       vjik@quartsoft.com



©2012. QuartSoft Corp.           www.quartsoft.com
Зачем? Для чего? Как?




©2012. QuartSoft Corp.        www.quartsoft.com
Кто ближе всех....
Семейство Apache Lucene             Sphinx search engine
Индекс: инкрементный индекс, но     Индекс: монолитный + дельта-
требующий операции слияния          индекс, возможность
сегментов                           распределѐнного поиска

API и протоколы: Java API          API и протоколы: SQL
                                   DB, встроенная поддержка MySQL
Размер индекса и скорость          и PostgreSQL, собственный XML-
поиска: около 20 Мб/минута, размер интерфейс, встроенные API для
индексных файлов ограничен 2 Гб    РНР, Ruby, Python, Java, Perl
(на 32-bit ОС). Есть возможности   Размер индекса и скорость
параллельного поиска по            поиска: очень
нескольким индексам и              быстрый, индексация около 10
кластеризация (требует сторонних   Мб/сек, поиск около 0.1 сек/~2 — 4
платформ)                          Гб индексе, поддерживает
                                   размеры индекса в сотни Гб и
URL: http://lucene.apache.org/     сотни миллионов документов
                                   URL: http://sphinxsearch.com
©2012. QuartSoft Corp.                                    www.quartsoft.com
Что подчеркнули...
системой полнотекстового поиска.

взаимодействия с реляционными базами
данных и скриптовыми языками
программирования.

возможности распределѐнного поиска и
кластеризации.

очень высокая скорость индексации и поиска


©2012. QuartSoft Corp.                  www.quartsoft.com
Sphinxsearch.com
    Самые большие:
    Infegy.com - 9 миллиардов документов в
      Sphinx.

    Boardreader.com a forum > 16 миллиардов
      документов другими словами около 5 Тб в 38
      шардах.

    Самые загруженные:
    Craigslist.org, (сайт обявлений)
      около 200,000,000 миллионов
      запросов/день, - это примерно 2300
      запросов/секунду.
©2012. QuartSoft Corp.                       www.quartsoft.com
Работа одноуровнего Sphinx-
                  сервера


                 Веб приложение




                  Сервер Sphinx




©2012. QuartSoft Corp.            www.quartsoft.com
Проблема




  1.Индекс может разрушиться...
  2.Веб сервер остался без данных...
  3.На восстановление требуется
    время...
©2012. QuartSoft Corp.              www.quartsoft.com
Работа распределенного
                      Sphinx сервера


                 Веб приложение




                  Сервер Sphinx




          1               2       n

©2012. QuartSoft Corp.                 www.quartsoft.com
Критерии создания
   распределенного индекса:
   •     количество обработанных файлов;

   •     суммарный размер обработанных
         файлов;

   •     дисковое пространство занимаемое
         индексами;
   •     общее время восстановления индекса.

©2012. QuartSoft Corp.                      www.quartsoft.com
Время полного восстановления.
 Затраченное время.(ч.)




                          Количество шардов (ед.)

©2012. QuartSoft Corp.                              www.quartsoft.com
Хитрости
   Сервер
   • должен существовать локальный
     индекс той же структуры (пустой);
   • Запись подключения agent’а
     содержит индекс и дельта-индекс;
   Шарды
   • имена индексов и дельта-индексов
     должны совпадать с именами
     agent’а (не source блока).
©2012. QuartSoft Corp.              www.quartsoft.com
Конфигурационные файлы
                         sphinx-сервера
   source vf_transcriptions {                                    index ind_vf_transcriptions {
         type             = xmlpipe2                                 source       = vf_transcriptions
         xmlpipe_field          = title                              path      = /var/lib/sphinx/vf_transcriptions
         xmlpipe_field          = description                        ...
   .....                                                         }
   }

   index main {
         type             = distributed
         local   = ind_vf_transcriptions
         agent            = 192.168.1.2:9312:ind_vf_transcriptions,ind_vf_transcriptions_delta
         agent            = 192.168.1.3:9312:ind_vf_transcriptions,ind_vf_transcriptions_delta
           ...
         agent_connect_timeout = 2000
         agent_query_timeout      = 10000
   }
   searchd {
           listen=       192.168.1.1:9312
   ...
   }
©2012. QuartSoft Corp.                                                                                  www.quartsoft.com
Конфигурационные файлы
               дочерних sphinx-серверов
 source vf_transcriptions {                index ind_vf_transcriptions_delta :
       type              = xmlpipe2          ind_vf_transcriptions{

     xmlpipe_command = run_same_script         source= vf_transcriptions_delta

       xmlpipe_field = title               path = /var/sphinx/vf_transcriptions_delta

     ...                                         ...

 }                                         }

 index ind_vf_transcriptions {             searchd {

     source         = vf_transcriptions          listen=   192.168.1.2:9312

     path= /var/sphinx/vf_transcriptions   ...

       ...                                 }

 }
 source vf_transcriptions_delta :
  vf_transcriptions {
 xmlpipe_command = run_same_DELTA_script
 ...
 }



©2012. QuartSoft Corp.                                                        www.quartsoft.com
http://sphinxsearch.com/info/webinar/

    April 25th, 2012 - Relevance Ranking Explained


   Вопросы? Спасибо!
   Евгений Борисенко
   Системный администратор
   компании «КвартСофт»


   vjik@quartsoft.com
©2012. QuartSoft Corp.                        www.quartsoft.com

More Related Content

What's hot

Нагруженный поиск на Sphinx
Нагруженный поиск на SphinxНагруженный поиск на Sphinx
Нагруженный поиск на SphinxRoman Pavlushko
 
Практические примеры использования API в инфраструктурных продуктах Cisco для...
Практические примеры использования API в инфраструктурных продуктах Cisco для...Практические примеры использования API в инфраструктурных продуктах Cisco для...
Практические примеры использования API в инфраструктурных продуктах Cisco для...Cisco Russia
 
Дмитрий Стогов
Дмитрий СтоговДмитрий Стогов
Дмитрий СтоговCodeFest
 
Обзор Redis storage / Symfony Camp UA 2011
Обзор Redis storage / Symfony Camp UA 2011Обзор Redis storage / Symfony Camp UA 2011
Обзор Redis storage / Symfony Camp UA 2011Igor Brovchenko
 
Эволюция php code coverage в Badoo. Доклад Ильи Агеева на LoveQA РИТ.
Эволюция php code coverage в Badoo. Доклад Ильи Агеева на LoveQA РИТ.Эволюция php code coverage в Badoo. Доклад Ильи Агеева на LoveQA РИТ.
Эволюция php code coverage в Badoo. Доклад Ильи Агеева на LoveQA РИТ.Badoo Development
 
Методы защиты Java-приложений и их обход
Методы защиты Java-приложений и их обходМетоды защиты Java-приложений и их обход
Методы защиты Java-приложений и их обходPositive Hack Days
 
Aviasales: миграция поискового движка в docker / Дмитрий Кузьменков (Aviasales)
Aviasales: миграция поискового движка в docker / Дмитрий Кузьменков (Aviasales)Aviasales: миграция поискового движка в docker / Дмитрий Кузьменков (Aviasales)
Aviasales: миграция поискового движка в docker / Дмитрий Кузьменков (Aviasales)Ontico
 
Nginx Igor Sysoev
Nginx   Igor SysoevNginx   Igor Sysoev
Nginx Igor SysoevMedia Gorod
 
Web весна 2012 лекция 3
Web весна 2012 лекция 3Web весна 2012 лекция 3
Web весна 2012 лекция 3Technopark
 
"Успеть за 100 миллисекунд: контекстная реклама на Sphinx" Дмитрий Хасанов (...
"Успеть за 100 миллисекунд: контекстная реклама на Sphinx" Дмитрий Хасанов  (..."Успеть за 100 миллисекунд: контекстная реклама на Sphinx" Дмитрий Хасанов  (...
"Успеть за 100 миллисекунд: контекстная реклама на Sphinx" Дмитрий Хасанов (...AvitoTech
 
Elasticsearch(java) fluentbit(c++) fluentd(ruby) kibana(javascript)
Elasticsearch(java) fluentbit(c++)    fluentd(ruby) kibana(javascript)Elasticsearch(java) fluentbit(c++)    fluentd(ruby) kibana(javascript)
Elasticsearch(java) fluentbit(c++) fluentd(ruby) kibana(javascript)Александр Сигачев
 
Alexandr Serbul "The Rust language for a high-load network service - a quick ...
Alexandr Serbul "The Rust language for a high-load network service - a quick ...Alexandr Serbul "The Rust language for a high-load network service - a quick ...
Alexandr Serbul "The Rust language for a high-load network service - a quick ...Fwdays
 
Андрей Субботин "Локализация приложений для iOS: как не прострелить себе ногу"
Андрей Субботин "Локализация приложений для iOS: как не прострелить себе ногу"Андрей Субботин "Локализация приложений для iOS: как не прострелить себе ногу"
Андрей Субботин "Локализация приложений для iOS: как не прострелить себе ногу"Yandex
 
Находим и эксплуатируем уязвимости. Теория и практические примеры уязвимых ре...
Находим и эксплуатируем уязвимости. Теория и практические примеры уязвимых ре...Находим и эксплуатируем уязвимости. Теория и практические примеры уязвимых ре...
Находим и эксплуатируем уязвимости. Теория и практические примеры уязвимых ре...Kristina Pomozova
 
Опенсорс-инструменты на страже безопасности бэкенда — Петр Волков
Опенсорс-инструменты на страже безопасности бэкенда — Петр ВолковОпенсорс-инструменты на страже безопасности бэкенда — Петр Волков
Опенсорс-инструменты на страже безопасности бэкенда — Петр ВолковYandex
 

What's hot (19)

Нагруженный поиск на Sphinx
Нагруженный поиск на SphinxНагруженный поиск на Sphinx
Нагруженный поиск на Sphinx
 
Практические примеры использования API в инфраструктурных продуктах Cisco для...
Практические примеры использования API в инфраструктурных продуктах Cisco для...Практические примеры использования API в инфраструктурных продуктах Cisco для...
Практические примеры использования API в инфраструктурных продуктах Cisco для...
 
HTTP протокол
HTTP протоколHTTP протокол
HTTP протокол
 
Анализ трафика
Анализ трафикаАнализ трафика
Анализ трафика
 
Дмитрий Стогов
Дмитрий СтоговДмитрий Стогов
Дмитрий Стогов
 
Обзор Redis storage / Symfony Camp UA 2011
Обзор Redis storage / Symfony Camp UA 2011Обзор Redis storage / Symfony Camp UA 2011
Обзор Redis storage / Symfony Camp UA 2011
 
Эволюция php code coverage в Badoo. Доклад Ильи Агеева на LoveQA РИТ.
Эволюция php code coverage в Badoo. Доклад Ильи Агеева на LoveQA РИТ.Эволюция php code coverage в Badoo. Доклад Ильи Агеева на LoveQA РИТ.
Эволюция php code coverage в Badoo. Доклад Ильи Агеева на LoveQA РИТ.
 
Методы защиты Java-приложений и их обход
Методы защиты Java-приложений и их обходМетоды защиты Java-приложений и их обход
Методы защиты Java-приложений и их обход
 
Aviasales: миграция поискового движка в docker / Дмитрий Кузьменков (Aviasales)
Aviasales: миграция поискового движка в docker / Дмитрий Кузьменков (Aviasales)Aviasales: миграция поискового движка в docker / Дмитрий Кузьменков (Aviasales)
Aviasales: миграция поискового движка в docker / Дмитрий Кузьменков (Aviasales)
 
Nginx Igor Sysoev
Nginx   Igor SysoevNginx   Igor Sysoev
Nginx Igor Sysoev
 
Avito Stachka 2012
Avito Stachka 2012Avito Stachka 2012
Avito Stachka 2012
 
Web весна 2012 лекция 3
Web весна 2012 лекция 3Web весна 2012 лекция 3
Web весна 2012 лекция 3
 
"Успеть за 100 миллисекунд: контекстная реклама на Sphinx" Дмитрий Хасанов (...
"Успеть за 100 миллисекунд: контекстная реклама на Sphinx" Дмитрий Хасанов  (..."Успеть за 100 миллисекунд: контекстная реклама на Sphinx" Дмитрий Хасанов  (...
"Успеть за 100 миллисекунд: контекстная реклама на Sphinx" Дмитрий Хасанов (...
 
Elasticsearch(java) fluentbit(c++) fluentd(ruby) kibana(javascript)
Elasticsearch(java) fluentbit(c++)    fluentd(ruby) kibana(javascript)Elasticsearch(java) fluentbit(c++)    fluentd(ruby) kibana(javascript)
Elasticsearch(java) fluentbit(c++) fluentd(ruby) kibana(javascript)
 
Alexandr Serbul "The Rust language for a high-load network service - a quick ...
Alexandr Serbul "The Rust language for a high-load network service - a quick ...Alexandr Serbul "The Rust language for a high-load network service - a quick ...
Alexandr Serbul "The Rust language for a high-load network service - a quick ...
 
Андрей Субботин "Локализация приложений для iOS: как не прострелить себе ногу"
Андрей Субботин "Локализация приложений для iOS: как не прострелить себе ногу"Андрей Субботин "Локализация приложений для iOS: как не прострелить себе ногу"
Андрей Субботин "Локализация приложений для iOS: как не прострелить себе ногу"
 
pgconf.ru 2015 avito postgresql
pgconf.ru 2015 avito postgresqlpgconf.ru 2015 avito postgresql
pgconf.ru 2015 avito postgresql
 
Находим и эксплуатируем уязвимости. Теория и практические примеры уязвимых ре...
Находим и эксплуатируем уязвимости. Теория и практические примеры уязвимых ре...Находим и эксплуатируем уязвимости. Теория и практические примеры уязвимых ре...
Находим и эксплуатируем уязвимости. Теория и практические примеры уязвимых ре...
 
Опенсорс-инструменты на страже безопасности бэкенда — Петр Волков
Опенсорс-инструменты на страже безопасности бэкенда — Петр ВолковОпенсорс-инструменты на страже безопасности бэкенда — Петр Волков
Опенсорс-инструменты на страже безопасности бэкенда — Петр Волков
 

Similar to Sphinx: распределяя индексы.

Phalcon - самый быстрый PHP Framework
Phalcon - самый быстрый PHP FrameworkPhalcon - самый быстрый PHP Framework
Phalcon - самый быстрый PHP FrameworkOleksandr Torosh
 
ВВЕДЕНИЕ В NODE.JS
ВВЕДЕНИЕ В NODE.JS ВВЕДЕНИЕ В NODE.JS
ВВЕДЕНИЕ В NODE.JS Pavel Tsukanov
 
Программные интерфейсы управления (API) архитектурой, ориентированной на прил...
Программные интерфейсы управления (API) архитектурой, ориентированной на прил...Программные интерфейсы управления (API) архитектурой, ориентированной на прил...
Программные интерфейсы управления (API) архитектурой, ориентированной на прил...Cisco Russia
 
Антон Тюрин, Евгений Сафронов, Инфраструктура под Cocaine
Антон Тюрин, Евгений Сафронов, Инфраструктура под CocaineАнтон Тюрин, Евгений Сафронов, Инфраструктура под Cocaine
Антон Тюрин, Евгений Сафронов, Инфраструктура под CocaineTanya Denisyuk
 
2020.10.13 HA Redis is simple. FWDays Highload
2020.10.13 HA Redis is simple. FWDays Highload2020.10.13 HA Redis is simple. FWDays Highload
2020.10.13 HA Redis is simple. FWDays HighloadYehor Herasymchuk
 
Современный подход к локализации на примере одного проекта
Современный подход к локализации на примере одного проектаСовременный подход к локализации на примере одного проекта
Современный подход к локализации на примере одного проектаSQALab
 
Устройство фреймворка symfony 2 (http://frontend-dev.ru)
Устройство фреймворка symfony 2 (http://frontend-dev.ru)Устройство фреймворка symfony 2 (http://frontend-dev.ru)
Устройство фреймворка symfony 2 (http://frontend-dev.ru)Александр Егурцов
 
Взломать сайт на ASP.NET
Взломать сайт на ASP.NETВзломать сайт на ASP.NET
Взломать сайт на ASP.NETPositive Hack Days
 
Другая виртуализация
Другая виртуализацияДругая виртуализация
Другая виртуализацияYandex
 
Building deployment pipeline - DevOps way
Building deployment pipeline - DevOps wayBuilding deployment pipeline - DevOps way
Building deployment pipeline - DevOps wayAndrey Rebrov
 
Роман Еникеев - PHP или откуда взялся слон
Роман Еникеев - PHP или откуда взялся слонРоман Еникеев - PHP или откуда взялся слон
Роман Еникеев - PHP или откуда взялся слонDataArt
 
Пост-эксплуатация веб-приложений в тестах на проникновение
Пост-эксплуатация веб-приложений в тестах на проникновениеПост-эксплуатация веб-приложений в тестах на проникновение
Пост-эксплуатация веб-приложений в тестах на проникновениеbeched
 
AVITO. Решардинг Redis без даунтайма. DevConf 2012
AVITO. Решардинг Redis без даунтайма. DevConf 2012AVITO. Решардинг Redis без даунтайма. DevConf 2012
AVITO. Решардинг Redis без даунтайма. DevConf 2012Roman Pavlushko
 
Обзор Continuous integration инструментов
Обзор Continuous integration инструментовОбзор Continuous integration инструментов
Обзор Continuous integration инструментовVitalii Morvaniuk
 
Cocaine: погружение в облака — Евгений Сафронов
Cocaine: погружение в облака — Евгений СафроновCocaine: погружение в облака — Евгений Сафронов
Cocaine: погружение в облака — Евгений СафроновYandex
 
CodeFest 2014. Каплуновский Б. — Использование асинхронного I/O для снижения ...
CodeFest 2014. Каплуновский Б. — Использование асинхронного I/O для снижения ...CodeFest 2014. Каплуновский Б. — Использование асинхронного I/O для снижения ...
CodeFest 2014. Каплуновский Б. — Использование асинхронного I/O для снижения ...CodeFest
 

Similar to Sphinx: распределяя индексы. (20)

Phalcon - самый быстрый PHP Framework
Phalcon - самый быстрый PHP FrameworkPhalcon - самый быстрый PHP Framework
Phalcon - самый быстрый PHP Framework
 
ВВЕДЕНИЕ В NODE.JS
ВВЕДЕНИЕ В NODE.JS ВВЕДЕНИЕ В NODE.JS
ВВЕДЕНИЕ В NODE.JS
 
Программные интерфейсы управления (API) архитектурой, ориентированной на прил...
Программные интерфейсы управления (API) архитектурой, ориентированной на прил...Программные интерфейсы управления (API) архитектурой, ориентированной на прил...
Программные интерфейсы управления (API) архитектурой, ориентированной на прил...
 
Антон Тюрин, Евгений Сафронов, Инфраструктура под Cocaine
Антон Тюрин, Евгений Сафронов, Инфраструктура под CocaineАнтон Тюрин, Евгений Сафронов, Инфраструктура под Cocaine
Антон Тюрин, Евгений Сафронов, Инфраструктура под Cocaine
 
Sivko
SivkoSivko
Sivko
 
2020.10.13 HA Redis is simple. FWDays Highload
2020.10.13 HA Redis is simple. FWDays Highload2020.10.13 HA Redis is simple. FWDays Highload
2020.10.13 HA Redis is simple. FWDays Highload
 
Современный подход к локализации на примере одного проекта
Современный подход к локализации на примере одного проектаСовременный подход к локализации на примере одного проекта
Современный подход к локализации на примере одного проекта
 
SAP hands on lab_ru
SAP hands on lab_ruSAP hands on lab_ru
SAP hands on lab_ru
 
Устройство фреймворка symfony 2 (http://frontend-dev.ru)
Устройство фреймворка symfony 2 (http://frontend-dev.ru)Устройство фреймворка symfony 2 (http://frontend-dev.ru)
Устройство фреймворка symfony 2 (http://frontend-dev.ru)
 
Взломать сайт на ASP.NET
Взломать сайт на ASP.NETВзломать сайт на ASP.NET
Взломать сайт на ASP.NET
 
Другая виртуализация
Другая виртуализацияДругая виртуализация
Другая виртуализация
 
Building deployment pipeline - DevOps way
Building deployment pipeline - DevOps wayBuilding deployment pipeline - DevOps way
Building deployment pipeline - DevOps way
 
Sphinx
SphinxSphinx
Sphinx
 
Роман Еникеев - PHP или откуда взялся слон
Роман Еникеев - PHP или откуда взялся слонРоман Еникеев - PHP или откуда взялся слон
Роман Еникеев - PHP или откуда взялся слон
 
Пост-эксплуатация веб-приложений в тестах на проникновение
Пост-эксплуатация веб-приложений в тестах на проникновениеПост-эксплуатация веб-приложений в тестах на проникновение
Пост-эксплуатация веб-приложений в тестах на проникновение
 
AVITO. Решардинг Redis без даунтайма. DevConf 2012
AVITO. Решардинг Redis без даунтайма. DevConf 2012AVITO. Решардинг Redis без даунтайма. DevConf 2012
AVITO. Решардинг Redis без даунтайма. DevConf 2012
 
Обзор Continuous integration инструментов
Обзор Continuous integration инструментовОбзор Continuous integration инструментов
Обзор Continuous integration инструментов
 
Cocaine: погружение в облака — Евгений Сафронов
Cocaine: погружение в облака — Евгений СафроновCocaine: погружение в облака — Евгений Сафронов
Cocaine: погружение в облака — Евгений Сафронов
 
Alfresco Lynx
Alfresco LynxAlfresco Lynx
Alfresco Lynx
 
CodeFest 2014. Каплуновский Б. — Использование асинхронного I/O для снижения ...
CodeFest 2014. Каплуновский Б. — Использование асинхронного I/O для снижения ...CodeFest 2014. Каплуновский Б. — Использование асинхронного I/O для снижения ...
CodeFest 2014. Каплуновский Б. — Использование асинхронного I/O для снижения ...
 

More from MageCloud

How to find the Right Mobile and Cloud Application Development Company for Yo...
How to find the Right Mobile and Cloud Application Development Company for Yo...How to find the Right Mobile and Cloud Application Development Company for Yo...
How to find the Right Mobile and Cloud Application Development Company for Yo...MageCloud
 
First Steps to Mobile Sites and Apps
First Steps to Mobile Sites and AppsFirst Steps to Mobile Sites and Apps
First Steps to Mobile Sites and AppsMageCloud
 
Optimizing Magento for Peak Performance
Optimizing Magento for Peak PerformanceOptimizing Magento for Peak Performance
Optimizing Magento for Peak PerformanceMageCloud
 
Cloud Based Business Application Development
Cloud Based Business Application DevelopmentCloud Based Business Application Development
Cloud Based Business Application DevelopmentMageCloud
 
Three keys to successful banner ads
Three keys to successful banner adsThree keys to successful banner ads
Three keys to successful banner adsMageCloud
 
Two Facets of Great e-Commerce: PPC and Landing Page Best Practices
Two Facets of Great e-Commerce: PPC and Landing Page Best PracticesTwo Facets of Great e-Commerce: PPC and Landing Page Best Practices
Two Facets of Great e-Commerce: PPC and Landing Page Best PracticesMageCloud
 
Yii development
Yii developmentYii development
Yii developmentMageCloud
 
Security testing
Security testingSecurity testing
Security testingMageCloud
 
Project lifecircle
Project lifecircleProject lifecircle
Project lifecircleMageCloud
 
Management of projects
Management of projectsManagement of projects
Management of projectsMageCloud
 
Magento ecommerce
Magento ecommerceMagento ecommerce
Magento ecommerceMageCloud
 
Dotnet development
Dotnet developmentDotnet development
Dotnet developmentMageCloud
 
Corporate structure project_team
Corporate structure project_teamCorporate structure project_team
Corporate structure project_teamMageCloud
 
Continuous integration
Continuous integrationContinuous integration
Continuous integrationMageCloud
 
Clientside optimization
Clientside optimizationClientside optimization
Clientside optimizationMageCloud
 
Automated testing
Automated testingAutomated testing
Automated testingMageCloud
 

More from MageCloud (20)

How to find the Right Mobile and Cloud Application Development Company for Yo...
How to find the Right Mobile and Cloud Application Development Company for Yo...How to find the Right Mobile and Cloud Application Development Company for Yo...
How to find the Right Mobile and Cloud Application Development Company for Yo...
 
First Steps to Mobile Sites and Apps
First Steps to Mobile Sites and AppsFirst Steps to Mobile Sites and Apps
First Steps to Mobile Sites and Apps
 
Optimizing Magento for Peak Performance
Optimizing Magento for Peak PerformanceOptimizing Magento for Peak Performance
Optimizing Magento for Peak Performance
 
Cloud Based Business Application Development
Cloud Based Business Application DevelopmentCloud Based Business Application Development
Cloud Based Business Application Development
 
Three keys to successful banner ads
Three keys to successful banner adsThree keys to successful banner ads
Three keys to successful banner ads
 
Two Facets of Great e-Commerce: PPC and Landing Page Best Practices
Two Facets of Great e-Commerce: PPC and Landing Page Best PracticesTwo Facets of Great e-Commerce: PPC and Landing Page Best Practices
Two Facets of Great e-Commerce: PPC and Landing Page Best Practices
 
Yii development
Yii developmentYii development
Yii development
 
Testing
TestingTesting
Testing
 
Security testing
Security testingSecurity testing
Security testing
 
Project lifecircle
Project lifecircleProject lifecircle
Project lifecircle
 
Management of projects
Management of projectsManagement of projects
Management of projects
 
Magento ecommerce
Magento ecommerceMagento ecommerce
Magento ecommerce
 
Graphics
GraphicsGraphics
Graphics
 
Dotnet development
Dotnet developmentDotnet development
Dotnet development
 
Corporate structure project_team
Corporate structure project_teamCorporate structure project_team
Corporate structure project_team
 
Continuous integration
Continuous integrationContinuous integration
Continuous integration
 
Clientside optimization
Clientside optimizationClientside optimization
Clientside optimization
 
Automated testing
Automated testingAutomated testing
Automated testing
 
Amazon
AmazonAmazon
Amazon
 
Agile
AgileAgile
Agile
 

Sphinx: распределяя индексы.

  • 1. Sphinx. Построение распределенного сервера Борисенко Евгений Системный администратор компании «КвартСофт» vjik@quartsoft.com ©2012. QuartSoft Corp. www.quartsoft.com
  • 2. Зачем? Для чего? Как? ©2012. QuartSoft Corp. www.quartsoft.com
  • 3. Кто ближе всех.... Семейство Apache Lucene Sphinx search engine Индекс: инкрементный индекс, но Индекс: монолитный + дельта- требующий операции слияния индекс, возможность сегментов распределѐнного поиска API и протоколы: Java API API и протоколы: SQL DB, встроенная поддержка MySQL Размер индекса и скорость и PostgreSQL, собственный XML- поиска: около 20 Мб/минута, размер интерфейс, встроенные API для индексных файлов ограничен 2 Гб РНР, Ruby, Python, Java, Perl (на 32-bit ОС). Есть возможности Размер индекса и скорость параллельного поиска по поиска: очень нескольким индексам и быстрый, индексация около 10 кластеризация (требует сторонних Мб/сек, поиск около 0.1 сек/~2 — 4 платформ) Гб индексе, поддерживает размеры индекса в сотни Гб и URL: http://lucene.apache.org/ сотни миллионов документов URL: http://sphinxsearch.com ©2012. QuartSoft Corp. www.quartsoft.com
  • 4. Что подчеркнули... системой полнотекстового поиска. взаимодействия с реляционными базами данных и скриптовыми языками программирования. возможности распределѐнного поиска и кластеризации. очень высокая скорость индексации и поиска ©2012. QuartSoft Corp. www.quartsoft.com
  • 5. Sphinxsearch.com Самые большие: Infegy.com - 9 миллиардов документов в Sphinx. Boardreader.com a forum > 16 миллиардов документов другими словами около 5 Тб в 38 шардах. Самые загруженные: Craigslist.org, (сайт обявлений) около 200,000,000 миллионов запросов/день, - это примерно 2300 запросов/секунду. ©2012. QuartSoft Corp. www.quartsoft.com
  • 6. Работа одноуровнего Sphinx- сервера Веб приложение Сервер Sphinx ©2012. QuartSoft Corp. www.quartsoft.com
  • 7. Проблема 1.Индекс может разрушиться... 2.Веб сервер остался без данных... 3.На восстановление требуется время... ©2012. QuartSoft Corp. www.quartsoft.com
  • 8. Работа распределенного Sphinx сервера Веб приложение Сервер Sphinx 1 2 n ©2012. QuartSoft Corp. www.quartsoft.com
  • 9. Критерии создания распределенного индекса: • количество обработанных файлов; • суммарный размер обработанных файлов; • дисковое пространство занимаемое индексами; • общее время восстановления индекса. ©2012. QuartSoft Corp. www.quartsoft.com
  • 10. Время полного восстановления. Затраченное время.(ч.) Количество шардов (ед.) ©2012. QuartSoft Corp. www.quartsoft.com
  • 11. Хитрости Сервер • должен существовать локальный индекс той же структуры (пустой); • Запись подключения agent’а содержит индекс и дельта-индекс; Шарды • имена индексов и дельта-индексов должны совпадать с именами agent’а (не source блока). ©2012. QuartSoft Corp. www.quartsoft.com
  • 12. Конфигурационные файлы sphinx-сервера source vf_transcriptions { index ind_vf_transcriptions { type = xmlpipe2 source = vf_transcriptions xmlpipe_field = title path = /var/lib/sphinx/vf_transcriptions xmlpipe_field = description ... ..... } } index main { type = distributed local = ind_vf_transcriptions agent = 192.168.1.2:9312:ind_vf_transcriptions,ind_vf_transcriptions_delta agent = 192.168.1.3:9312:ind_vf_transcriptions,ind_vf_transcriptions_delta ... agent_connect_timeout = 2000 agent_query_timeout = 10000 } searchd { listen= 192.168.1.1:9312 ... } ©2012. QuartSoft Corp. www.quartsoft.com
  • 13. Конфигурационные файлы дочерних sphinx-серверов source vf_transcriptions { index ind_vf_transcriptions_delta : type = xmlpipe2 ind_vf_transcriptions{ xmlpipe_command = run_same_script source= vf_transcriptions_delta xmlpipe_field = title path = /var/sphinx/vf_transcriptions_delta ... ... } } index ind_vf_transcriptions { searchd { source = vf_transcriptions listen= 192.168.1.2:9312 path= /var/sphinx/vf_transcriptions ... ... } } source vf_transcriptions_delta : vf_transcriptions { xmlpipe_command = run_same_DELTA_script ... } ©2012. QuartSoft Corp. www.quartsoft.com
  • 14. http://sphinxsearch.com/info/webinar/ April 25th, 2012 - Relevance Ranking Explained Вопросы? Спасибо! Евгений Борисенко Системный администратор компании «КвартСофт» vjik@quartsoft.com ©2012. QuartSoft Corp. www.quartsoft.com