Рубрика «высокая производительность» - 29

Полнофункциональный I-O реактор на голом Си - 1

Введение

I/O реактор (однопоточный цикл событий) — это паттерн для написания высоконагруженного ПО, используемый во многих популярных решениях:

В данной статье мы рассмотрим подноготную I/O реактора и принцип его работы, напишем реализацию на меньше, чем 200 строк кода и заставим простой HTTP сервер обрабатывать свыше 40 миллионов запросов/мин.

Читать полностью »

JDBC-пулы и эффективная работа с файлами: Java-митап 3 декабря в Петербурге - 1

Приглашаем вас на Java митап о перфомансе, который пройдет 3 декабря в питерском офисе Wrike. Поговорим о низкоуровневых, но важных для разработчиков любого уровня вещах, которым порой не хватает места на java-конференциях.

Читать полностью »

image

29-30 октября в Санкт-Петербурге прошла конференция DevOops. В этой статье я поделюсь впечатлениями и инсайтами, а также краткими заметками о прослушанных докладах. Небольшой disclaimer: поскольку я разработчик, то некоторые мысли и комментарии могут быть с уклоном в Dev, нежели в Ops, но я постараюсь быть как можно объективнее.

DevOops входит в число мероприятий, которые проводит JUG Ru Group. И нужно признать, организация и уровень докладов были на уровне. Конференция длилась два дня, в три потока. Помимо этого, были дискуссионные зоны для общения со спикерами, мастер-классы, а также lightning talks — более лёгкие и короткие доклады, в том числе для тех, кто ранее не выступал и хочет попробовать себя в качестве спикера.

Тематическая канва DevOops 2019 — cloud native. Бо́льшая часть докладов была прямо или косвенно посвящена облакам. Тема давно уже не новая, однако есть множество неочевидных сложностей, которые возникают в процессе использования облачных технологий. И многие пришли специально, чтобы найти ответы. Это было особенно заметно на QA-сессиях после докладов. Спикерам задавали практические вопросы, которые действительно волнуют людей. Почти на каждый вопрос следовали реплики других участников «У нас такая же проблема!» и начиналась оживлённая дискуссия.
Читать полностью »

В Яндекс.Такси придерживаются микросервисной архитектуры. С ростом количества микросервисов мы заметили, что разработчики много времени тратят на 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>()};
}

А вот почему это крайне эффективно и быстро — мы расскажем под катом.
Читать полностью »

В эфире главное событие для разработчиков высоконагруженных систем. По хорошей традиции 7 и 8 ноября мы собираемся, чтобы делиться опытом в построении веб-сервисов, позволяющих одновременно помогать десяткам, сотням тысяч пользователей решать свои задачи. Если в этот раз мы с вами не увидимся в СКОЛКОВО, подключайтесь к открытой трансляции Главного зала конференции.

Открытая трансляция первого дня конференции HighLoad++

7 ноября трансляция докладов начинается в 9:45, в 18:00 они закончатся, и начнется церемония вручения Премии HighLoad++.

Открытая трансляция второго дня конференции HighLoad++

8 ноября первый доклад в Главном зале и трансляция начинается в 11:00.

Открытая трансляция Главного зала HighLoad++ 2019 - 1

Под катом расписание и информация о докладах.
Читать полностью »

Передать нужный код для каждого браузера – непростая задача.
В этой статье рассмотрим несколько вариантов, как эту задачу можно решить.

Современная загрузка скриптов - 1

Передача современного кода современным браузером может очень сильно повысить производительность. Ваши JavaScript-пакеты смогут содержать более компактный или оптимизированный современный синтаксис и поддерживать старые браузеры.

Среди инструментов для разработчиков доминирует паттерн module/nomodule декларативной загрузки современного или legacy-кода, который предоставляет браузерам источники и позволяет решать, какие из них использовать:

<script type="module" src="/modern.js"></script>  
<script nomodule src="/legacy.js"></script> 

К сожалению, не всё так просто. Показанный выше подход на основе HTML инициирует перезагрузку скриптов в Edge и Safari. Читать полностью »

ок.tech на HighLoad++ 2019 - 1

Highload++ очень близко! 7-8 ноября в Сколково в тринадцатый раз соберутся более 3000 разработчиков высоконагруженных систем. Мероприятие направлено на обмен знаниями о технологиях, позволяющих одновременно обслуживать многие тысячи и миллионы пользователей.
Программа охватывает такие аспекты веб-разработок, как архитектуры крупных проектов, базы данных и системы хранения, системное администрирование, нагрузочное тестирование, эксплуатация крупных проектов и другие направления, связанные с высоконагруженными системами.
Мы принимаем активное участие в Highload++ 2019 и сегодня расскажем, какие доклады приготовили наши сотрудники для участников конференции.
Читать полностью »

Как реализуется отказоустойчивая веб-архитектура в платформе Mail.ru Cloud Solutions - 1

Привет! Я Артем Карамышев, руководитель команды системного администрирования Mail.Ru Cloud Solutions (MCS). За последний год у нас было много запусков новых продуктов. Мы хотели добиться, чтобы API-сервисы легко масштабировались, были отказоустойчивыми и готовыми к быстрому росту пользовательской нагрузки. Наша платформа реализована на OpenStack, и я хочу рассказать, какие проблемы отказоустойчивости компонентов нам пришлось закрыть, чтобы получить отказоустойчивую систему. Я думаю, это будет любопытно тем, кто тоже развивает продукты на OpenStack.

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

Видеоверсию этой истории, первоисточником которой стал доклад на конференции Uptime day 4, организованной ITSumma, можно посмотреть на YouTube-канале Uptime Community.
Читать полностью »

Обзор GeForce NOW в России: плюсы, минусы и перспективы - 1

В октябре этого года облачный игровой сервис GeForce Now начал работу в России. Собственно, он был доступен и раньше, но для регистрации нужно было получить ключ, который доставался далеко не каждому игроку. Теперь можно зарегистрироваться и играть. Об этом сервисе я уже писала раньше, теперь давайте узнаем о нем немного больше, плюс сравним с двумя другими облачными игровыми сервисами, которые доступны в РФ — Loudplay и PlayKey.

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

Логирование — важная часть любого приложения. Любая система логирования проходит три основных шага эволюции. Первый — вывод на консоль, второй — запись логов в файл и появление фреймворка для структурированного логирования, и третий — распределенное логирование или сбор логов различных сервисов в единый центр.

Если логирование хорошо организовано, то позволяет понимать, что, когда и как идет не так, как задумано, и передавать нужную информацию людям, которым предстоит эти ошибки исправлять. Для системы, в которой каждую секунду отправляется 100 тысяч сообщений в 10 дата-центрах на 190 стран, а 350 инженеров каждый день что-то деплоят, система логирования особенно важна.

Распределенное логирование и трассировка для микросервисов - 1

Иван Летенко — тимлид и разработчик в Infobip. Чтобы решить проблему централизованной обработки и трассировки логов в микросервисной архитектуре при таких огромных нагрузках, в компании пробовали различные комбинации стека ELK, Graylog, Neo4j и MongoDB. В итоге, спустя много грабель, написали свой лог-сервис на Elasticsearch, а как БД для дополнительной информации взяли PostgreSQL.

Под катом подробно, с примерами и графиками: архитектура и эволюция системы, грабли, логирование и трассировка, метрики и мониторинг, практика работы с кластерами Elasticsearch и их администрирования в условиях ограниченных ресурсов.
Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js