• Архитектура отказоустойчивого планировщика задач. Доклад Яндекса

      В Яндексе десятки тысяч машин, которые постоянно нагружены под завязку разными вычислительными задачами. Бо́льшая часть этих вычислений относится к так называемой batch-нагрузке — как правило, оформленной в виде операций в парадигме MapReduce. Мы используем собственную систему YT, которая предоставляет распределённый storage и интерфейс запуска распределённых вычислений с произвольным пользовательским кодом. В докладе я рассказал о задачах, возникающих при попытке написать софт, который будет что-то планировать на кластерах из большого количества машин.

      — Давайте первым делом обсудим, чем вообще занимаются вычислительные кластеры Яндекса.
      Читать дальше →
      • +11
      • 3.6k
      • 2
    • MVCC-7. Автоочистка

        Напомню, что мы начали с вопросов, связанных с изоляцией, сделали отступление про организацию данных на низком уровне, подробно поговорили о версиях строк и о том, как из версий получаются снимки данных.

        Затем мы рассмотрели внутристраничную очистку (и HOT-обновления), обычную очистку, ну а сегодня посмотрим на автоматическую очистку.

        Автоочистка (autovacuum)


        Мы уже говорили о том, что обычная очистка в нормальных условиях (когда никто не удерживает надолго горизонт транзакций) должна справляться со своей работой. Вопрос в том, как часто ее вызывать.

        Если очищать изменяющуюся таблицу слишком редко, она вырастет в размерах больше, чем хотелось бы. Кроме того, для очередной очистки может потребоваться несколько проходов по индексам, если изменений накопилось слишком много.

        Если очищать таблицу слишком часто, то вместо полезной работы сервер будет постоянно заниматься обслуживанием — тоже нехорошо.

        Заметим, что запуск обычной очистки по расписанию никак не решает проблему, потому что нагрузка может изменяться со временем. Если таблица стала обновляться активней, то и очищать ее надо чаще.

        Автоматическая очистка — как раз тот самый механизм, который позволяет запускать очистку в зависимости от активности изменений в таблицах.
        Читать дальше →
      • Просто и на C++. Основы Userver — фреймворка для написания асинхронных микросервисов

          В Яндекс.Такси придерживаются микросервисной архитектуры. С ростом количества микросервисов мы заметили, что разработчики много времени тратят на boilerplate и типичные проблемы, при этом решения не всегда получаются оптимальные.

          Мы решили сделать свой фреймворк, с C++17 и корутинами. Вот так теперь выглядит типичный код микросервиса:

          Response View::Handle(Request&& request, const Dependencies& dependencies) {
            auto cluster = dependencies.pg->GetCluster();
            auto trx = cluster->Begin(storages::postgres::ClusterHostType::kMaster);
          
            const char* statement = "SELECT ok, baz FROM some WHERE id = $1 LIMIT 1";
            auto row = psql::Execute(trx, statement, request.id)[0];
            if (!row["ok"].As<bool>()) {
              LOG_DEBUG() << request.id << " is not OK of " << GetSomeInfoFromDb();
              return Response400();
            }
          
            psql::Execute(trx, queries::kUpdateRules, request.foo, request.bar);
            trx.Commit();
          
            return Response200{row["baz"].As<std::string>()};
          }
          

          А вот почему это крайне эффективно и быстро — мы расскажем под катом.
          Читать дальше →
        • Gonkey — инструмент тестирования микросервисов

          • Tutorial

          Gonkey тестирует наши микросервисы в Lamoda, и мы подумали, что он может протестировать и ваши, поэтому выложили его в open source. Если функциональность ваших сервисов реализована преимущественно через API, и используется JSON для обмена данными, то почти наверняка Gonkey подойдет и вам.


          image


          Ниже я расскажу о нем подробнее и покажу на конкретных примерах, как его использовать.

          Читать дальше →
        • TCP против UDP или будущее сетевых протоколов

            Перед каждым сервисом, генерирующим хотя бы 1 Мбит/сек трафика в интернете возникает вопрос: «Как? по TCP или по UDP?» В прикладных областях, в том числе и платформах доставки уже сложились предпочтения и традиции принятия подобных решений.

            По идее, если бы, к примеру, однажды один ленивый разработчик не попробовал развернуть свой ML на Python (потому что только его и знал), мир скорее всего никогда не проникся бы такой любовью к презренному «супер-джава-кодерами» языку. А сегодня слабости этого языка в прошлом контексте применения безоговорочно обеспечивают ему первенство в развертывании и запуске многочисленных майнерских А/Б.

            Сравнивать можно многое: ARM с Intel, iOS и Android, а Mortal Kombat с Injustice. И нарваться на космический холивар, поэтому вернемся к теме доставки огромных объемов разноформатного контента.

            Десять лет назад все были абсолютно уверены, UDP — это что-то про негарантированную доставку. Если нужен надежный протокол — это TCP. И вопреки традициям в этой статье мы будем сравнивать такие, кажущиеся несравнимыми вещи, как TCP и UDP.


            Осторожно, под катом 99 иллюстраций и схем и все важные.
            Читать дальше →
          • Тюним память и сетевой стек в Linux: история перевода высоконагруженных серверов на свежий дистрибутив

              image

              До недавнего времени в Одноклассниках в качестве основного Linux-дистрибутива использовался частично обновлённый OpenSuSE 10.2. Однако, поддерживать его становилось всё труднее, поэтому с прошлого года мы перешли к активной миграции на CentOS 7. На подготовительном этапе перехода для CentOS были отработаны все внутренние процедуры, подготовлены конфиги и политики настройки (мы используем CFEngine). Поэтому сейчас во многих случаях миграция с одного дистрибутива на другой заключается в установке ОС через kickstart и развёртывании приложения с помощью системы деплоя нашей разработки — всё остальное осуществляется без участия человека. Так происходит во многих случаях, хотя и не во всех.

              Но с самыми большими проблемами мы столкнулись при миграции серверов раздачи видео. На их решение у нас ушло полгода.
              Читать дальше →
            • Как мы делали БелАЗ. Часть 1 – Железо



                Наверное, все знают, что большие карьерные самосвалы имеют электромеханическую трансмиссию (уже с 1968 года): ДВС вращает генератор, энергия от которого приводит в движение тяговые электродвигатели в задних колесах самосвала. В интернете можно найти много обзорных статей и «тест драйвов» этих машин, но многие технические подробности обычно опускаются. Эта серия статей будет написана с изнаночной стороны, от имени разработчиков электрической трансмиссии: как мы это разрабатывали, на каких контроллерах, на каких двигателях, как отлаживали и запускали машину. Также мы готовы ответить на интересующие вопросы в комментариях. Интересно? Добро пожаловать под кат.
                Читать дальше →
              • GitHub превращается… превращается GitHub… в элегантный Windows 95

                • Tutorial


                В Твиттере какое-то время назад запостили шутку в честь приобретения Майкрософтом ГитХаба — страницу сайта, перестилизованную в стиле Windows 98. Я решил, что шутка слишком хороша, чтобы оставаться шуткой.

                Давайте перекрасим GitHub!
              • Поиск по большим документам в ElasticSearch


                  Продолжаем цикл статей о том, как мы постигали ES в процессе создания Ambar. Первая статья цикла была о Хайлайтинге больших текстовых полей в ElasticSearch.


                  В этой статье мы расскажем о том как заставить ES работать быстро с документами более 100 Мб. Поиск в таких документах при подходе "в лоб" занимает десятки секунд. У нас получилось уменьшить это время до 6 мс.


                  Заинтересовавшихся просим под кат.

                  Читать дальше →
                • Когнитивные стимуляторы и другая психофарма: можно ли стать умнее

                    Привет, %username%!

                    Я бы хотел поговорить о разного рода фармакологических способах улучшить память, мышление, внимание и прочие качества, необходимые для успешной профессиональной и иной деятельности.

                    В этом посте я постараюсь дать информацию о некоторых интересных препаратах. Часть из них доступна, часть доступна только по рецепту, а часть — практически запрещена. Но, думаю, некоторые сведения из психофармакологии, представленные в этом посте, найдут своего читателя.

                    Spoiler: NZT ещё не изобрели, но синтезировали некоторое количество потенциально интересных штук.
                    Читать дальше →
                  • Как вычисляют сумасшедших: патопсихологическая диагностика

                      Update 07.04.19: У статьи появилось продолжение с критическим разбором используемых методик, рекомендую ознакомиться с ним.

                      Привет, Geektimes! Этот пост я пишу в соавторстве с Лобановым Виталием (hdablin) по следам его публикации «Когнитивные стимуляторы и другая психофарма: можно ли стать умнее», посвящённой фармакологическим аспектам проблемы «разгона» мышления. В нём я хочу рассказать о патопсихологии, о том, как проверяют людей на адекватность в психиатрической больнице, о том, какими бывают нарушения мышления, как их выявляют, о том, где проходит разница между гиком и психически больным человеком, о том, можно ли диагностировать у себя психическое заболевание самостоятельно, и о многом другом, имеющем отношение к теме.

                      Немного о себе: меня зовут Кристина, я медицинский психолог (именно медицинский, окончивший медицинский же университет по специальности «Клиническая психология», это важно), три года проработала в психиатрической больнице, сейчас ушла в частную практику, но осталась в психиатрии как в индустрии. Имею специализацию в нейропсихологии. За время работы мне приходилось сталкиваться с самыми разными категориями пациентов — шизофрениками, БАРщиками, депрессивными, органиками; часть из них обращалась добровольно, часть была госпитализирована в остром состоянии, часть вообще была «принудчиками» (это люди, совершившие преступление, но направленные судом не в тюрьму, а к нам в психушку на принудительное лечение).

                      tl;dr: В статье рассказано о том, как, зачем и почему проводится диагностика нарушений работы психики.
                      Читать дальше →
                    • Веб-приложение на C++, или укрощение демона FastCGI

                      В настоящее время, благодаря таким инструментам как NodeJS, создание веб-приложения — сущий пустяк. Скачал бинарник, сваял js в 5 строчек кода и можно хвастаться. А если подключить express и добавить ещё 5 строчек, то получим полноценное веб-приложение с роутингом, шаблонами, сессиями и другими прелестями. Так просто, что даже скучно. И стало мне интересно: как обстоят дела у моего старого знакомого С++, с которым уже 5 лет не виделся. В своё время прельстил меня ActionScript и прочий JavaScript, а о добром друге, который не раз выручал, совсем позабыл. В свете недавних статей о Configurable Omnipotent Custom Applications Integrated Network Engine (сокращено Cocaine), попался мне на глаза проект под названием Fastcgi Daemon, на основе которого функционирует HTTP-интерфейс Cocaine. И так, знакомьтесь
                      Читать дальше →
                    • Готовим к публикации пост с формулами

                        В последнее время на хабре появилось много постов с математическими формулами. Например, нельзя не вспомнить серию статей maisvendoo о теоретической механике.


                        В связи с этим стал актуальным вопрос о выборе удобного инструмента для создания и подготовки таких постов. SeptiM предложил скрипт, преобразующий маркдаун-разметку + латех в html-код. Я решил развить идею и упростить инструмент, и сделал для этих же целей онлайн-редактор с поддержкой латеха и маркдауна:


                        Скриншот редактора


                        Читать дальше →
                      • Байесовская нейронная сеть — потому что а почему бы и нет, черт возьми (часть 1)

                          То, о чем я попытаюсь сейчас рассказать, выглядит как настоящая магия.

                          Если вы что-то знали о нейронных сетях до этого — забудьте это и не вспоминайте, как страшный сон.
                          Если вы не знали ничего — вам же легче, полпути уже пройдено.
                          Если вы на «ты» с байесовской статистикой, читали вот эту и вот эту статьи из Deepmind — не обращайте внимания на предыдущие две строчки и разрешите потом записаться к вам на консультацию по одному богословскому вопросу.

                          Итак, магия:


                          Слева — обычная и всем знакомая нейронная сеть, у которой каждая связь между парой нейронов задана каким-то числом (весом). Справа — нейронная сеть, веса которой представлены не числами, а демоническими облаками вероятности, колеблющимися всякий раз, когда дьявол играет в кости со вселенной. Именно ее мы в итоге и хотим получить. И если вы, как и я, озадаченно трясете головой и спрашиваете «а нафига все это нужно» — добро пожаловать под кат.

                          Читать дальше →
                        • Вот он, мутирующий алгоритм. Или чего не может «Lisp»

                            Полагаю, вам будет интересно взглянуть на настоящий мутирующий алгоритм, который только то и умеет делать, что мутировать. Всего пара функций написанных на проклятом языке «Автор».
                            В этой статье я:
                            • — приведу алгоритм,
                            • — расскажу, как его интерпретирует «Автор»,
                            • — покажу, во что он превращается,
                            • — немного расскажу про автоматическое самообучение и ИИ,
                            • — посмеюсь над собой.

                            Читать дальше →
                          • Когда данных действительно много: Vowpal Wabbit

                              Привет, хабр!



                              В предыдущих двух постах (раз, два) мы расмотрели основные алгоритмы и техники, применяющиеся участниками соревнований Kaggle. Сегодня хотелось бы пойти дальше и поговорить про то, с какими трудностями встречаются исследователи при разработке алгоритмов в случае, когда данных очень много и обучаться приходится на выборках, которые не помещаются в память. Сразу стоит отметить, что это происходит довольно часто, даже на самом Kaggle (в данной задаче обучающая выборка имеет обьем в несколько гигабайт и новичку может быть просто не понятно, что с этим делать). Ниже мы рассмотрим алгоритмы машинного обучения и инструменты, справляющиеся с данной проблемой.
                              Читать дальше →
                            • Параллельные алгоритмы для обработки BigData: подводные камни и непростые решения

                                Эта публикация написана по материалам выступления AlexSerbul на осенней конференции BigData Conference.

                                Большие данные — тема модная и востребованная. Но многих по-прежнему отпугивает избыток теоретических рассуждений и некоторый недостаток практических рекомендаций. В этом посте я хочу отчасти заполнить этот пробел и рассказать об использовании параллельных алгоритмов для обработки больших данных на примере кластеризации товарного каталога из 10 млн позиций.
                                Читать дальше →
                              • Российские светодиодные лампы Лисма

                                  Саранский электроламповый завод начал производство светодиодных ламп по одной из самых современных технологий — filament (светодиодные нити).



                                  Ко мне попали пять ламп из разных партий с мощностью 6 и 8 Вт. Они должны заменять лампы накаливания 60 и 75 Вт.
                                  Читать дальше →
                                • 350+ полезных ресурсов, книг и инструментов для работы с Docker

                                  • Translation
                                  Мы уже ни раз приводили полезные руководства и подборки источников для разработчиков. На этот раз мы решили продолжить тему контейнеров, которую мы затрагивали ранее, и рассказать о подборке тематических ресурсов на GitHub.

                                  Читать дальше →
                                  • +28
                                  • 88.6k
                                  • 8