суббота, 8 октября 2016 г.

Elastic Search - опыт эксплуатации

      Сейчас у нас находятся в эксплуатации несколько поисковых Elastic Search кластеров, в сумме больше 150 машин. Хочу поделится своим опытом настройки/эксплуатации этого хозяйства. 
        Выделенные master ноды - это очень важно для стабильности Elastic Search. Если в кластере нет выделенных master нод - то при перегрузке кластер рассыпается. Текущий мастер выпадает, кластер начинает выбирать новую мастер ноду, после этого начинается rebalance шард а так как ноды перегружены - они то и дело снова вылетают из кластера. Причем вылетают из кластера не всегда по своей вине. Так как master нода также обслуживает запросы - она может быть ими перегружена и просто вовремя не послать/не принять heartbeat запросы от всех остальных нод. Даже если кластер соберется вновь - он может сам собой рассыпаться из-за нагрузки генерируемой процессом перебалансировки.  В таком коматозном состоянии кластер может находится очень долго. Вплоть до нескольких часов. Лечится это только уберанием нагрузки и перезапуском всех нод. Если в кластере есть выделенные master ноды -  он в аналогичной ситуации ведет себя гораздо стабильнее. Как только search queue на рабочих нодах заполняется - они начинают игнорировать все остальные запросы. То есть те запросы для обработки которых у них не хватает ресурсов - быстро возвращаются с ошибкой. То есть даже в условиях перегрузки кластер остается полностью работоспособным и управляемым.
          Хранить какие-то данные в поисковом кластере - это плохая идея. Elastic Search это не база данных. Даже не потому что мгновенный апдейт индекса эластика - это иллюзия. Это просто абстракция которая была реализована поверх immutable solr индексов.  Даже если ваши данные не часто изменяются, и вы не собираетесь сделать Elastic Search  основным хранилищем этих данных - все равно не храните их в  Elastic Search. Поставьте рядом in-memory key-value хранилище и храните их там. Уберите из Elastic Search все данные которые не используются при выполнении поисковых запросов. При увеличении размера ElasticSearch документа в два раза производительность кластера уменьшится примерно в два раза. Поэтому уменьшение размера ElasticSearch документа - это эффективный способ оптимизации кластера. Почему так происходит ? Чтобы понять это достаточно представить как Elastic Search выполняет запросы - https://www.elastic.co/guide/en/elasticsearch/guide/current/distributed-search.html  
           Ограничьте глубину постраничной навигации. Если у вас больше миллиона документов - никакому разумному пользователю не нужно листать больше 100 страниц. Это решение во многом связано с бизнес логикой, поэтому это не всегда возможно наложить подобное ограничение. Стоимость выполнение поисковых запросов с большими номерами  страниц - на порядки выше стоимости выполнения аналогичных поисковых запросов для маленьких номеров страниц. Просто потому что для генерации результата поиска  N, вам нужно передать между нодами и отсортировать список документов размером N * [documents_per_page] * [number_of_shards].
            

среда, 5 октября 2016 г.

Рекомендательная система Flickr

    http://code.flickr.net/2016/09/30/personalized-group-recommendations-on-flickr/ - ребята рассказали довольно много интересных подробностей. Хотя о том как они оптимизировали вычисления они так и не рассказали 

вторник, 27 сентября 2016 г.

The curious case of Artem Andreenko

       Недавно узнал что Артем стал всеми уважаемым ведущим подкаста посвященному языку Go а также администратором соответсвующего Slack канала. Также все посты в которых рассказывалось о "curious case of Artem Andreenko" были забанены. 
Осталась только отредактированная версия - https://medium.com/@karma.wiki/the-curious-case-of-e5d837ba5ee5#.pep3vw61w 
        Я считаю что страна должна знать своих героев, поэтому оставляю эту ссылку здесь. Я могу подтвердить что Артем вел себя аналогичным образом во время работы в компании Lazada. А именно нагло врал и на самом деле ничего не делал. 
        Не хочу ни коем образом умалить его достоинств - он очень умный человек и высоко классный инженер. Но с совестью проблемы.  
    

вторник, 20 сентября 2016 г.

DC/OS

          DC/OS - datacenter operating system, это по сути пристройка к Mesos, которая пытается сделать ее более применимой практически. До недавнего времени Mesos был практически единственным open source инструментом подобного рода и для реального использования требовал хорошей доработки напильником. Ребята из mesosphere (продавец DC/OS) написали к Mesos обертку под названием Marathone, которая умеет запускать Docker контейнеры. По сути это такой Kubernetes подключаемый к Mesos, который выполняет роль глобального планировщика.  После детального ознакомления он производит впечатление очень сырого продукта, создатели приподносят все слишком радужно. Облако волшебное, хочешь мускуль запустит, хочешь - постгрю. В жизни так не бывает. У меня осталось стойкое ощущение что меня хотят наебать. 
          После того как я узнал что внутри MarafonLB находится HA-proxy + python script я понял что дальше мне слушать уже не интересно. С Kubernetes он рядом не лежал. Единственный плюс - он Java-friendly. Написан на Scala, это гораздо удобнее чем Go для компаний использующих Java стэк.

Отели в USA

     Для меня остается загадкой почему в USA все отели - это такое говно ?? Ребята, они все ущербные. Причем я останавливаюсь не в дешевых отелях. Не в Хилтоне конечно, но и по рейтингам и по цене - они очень не плохие. 300-400 баксов за ночь. Но при таких ценах меня каждый раз шокирует уровень предоставляемого сервиса. Он ниже плинтуса.   
        Номера очень сильно поношенные, кондей шумит как дизель-генератор. Причем по нему видно что он весьма почтенного возраста.  В номере очень часто нет даже таких банальных вещей как шампунь. И это впечатление не по одному отелю а минимум по 4-м. То есть это не я такой невезучий, тут в принципе уровень отельного сервиса такой. 
          Отдельная тема - это завтраки. Они просто уебищьные. Во всех странах в которых я бывал - они лучше. Причем на порядок. В юго-восточной Азии, в Сингапуре, во Вьетнаме. И что самое херовое - они к этому привыкли. Они считают что так и должно быть, что завтрак должен быть хуевым - потому что он бесплатный. Я теперь понимаю почему оценки отелям данные американскими туристами зачастую неадекватны. То что американец поставил какому-то отелю 10 из 10 - это вообще ничего не значит. Возможно он просто  в первый раз увидел отель в котором завтраки не отвратные, а номер убирают раз в сутки -и не продают эту услугу за кучу бабла как Extra Cleaning Service 

New York

         Побывал в New York, исполнил давнюю мечту. В общем очень грязный, неуютный город. Навевает абсолютный пессимизм. В каждом месте где мне удается побывать я пытаюсь прочувствовать атмосферу. Атмосфера NY давит, гнетет. Чувство аггресии придавленное законом - вот это NY.  Даже фонари - какие-то тусклые, как будто из совсем нет.  Сейчас я понял откуда берется вот эта атмосфера темных,  едва освещенных улиц - в играх/фильмах. Эту атмосферу пишут с NY. Я живу сейчас на Манхеттене, Таймсквер буквально в 500 метрах. Это не где-то там в захолустьях. Но тут реально темно. Даже такая простая вещь - как фонари. Неужели нельзя нормальные фонари поставить ?? Как в Сингапуре, как Москве, да блин в моем родном Ульяновске с освещением и то на порядок лучше дела обстоят!    

пятница, 16 сентября 2016 г.