Мастер-класс: высокие нагрузки и надежность

На мой мастер-класс про высокие нагрузки и надежность 24-26 мая осталось совсем мало мест! Выкладываю еще два небольших отрывка курса.

Выбор языка программирования, фреймворка, на котором будет написан backend - дело непростое, необходимо взвесить большое количество факторов и принять правильное решение. Одним из таких факторов является сетевая архитектура backendа. Здесь тесно переплетаются два вопроса: организация сетевого ввода-вывода и многозадачная обработка запросов. Backend по сути представляет из себя "сложный прокси-сервер", который принимает HTTP-запросы, выполняет запросы к базе данных, другим хранилищам и сервисам, связывая их бизнес логикой, и формирует ответ. Это означает, что вопрос обработки соединений, переключение между обработкой конкурентных соединений играет важную роль в общей производительности приложения. Особенно ярко эти факторы проявляются при обслуживании долгих запросов (Websocket, long-polling, ...). Каждый язык программирования и фреймворк предоставляет (или не предоставляет) выбор механизмов многозадачности и сетевого ввода-вывода, мы поговорим подробно о Javascript, PHP, Java, Python, Ruby, Go и Erlang.

Один из "кирпичиков" в построении архитектуры сервиса - это очереди. Они могут использоваться как для выполнения асинхронных задач (например, отправка push-нотификации или конвертация видео), так и для связи между сервисам или сбора логов системы. Сегодня доступен широкий выбор различных решений: от простых очередей задач до распределенных отказоустойчивых систем со сложной логикой. Очереди могут иметь разную логику работы: publish-subscribe, когда одно сообщение из очереди получают все подписчики, и producer-consumer, когда одно сообщение доставляется ровно одному подписчику. Очереди могут упростить взаимодействие внутри системы, позволить независимо останавливать компоненты, упростить масштабирование, однако сам сервер очередей может стать узким местом или потенциальной точкой отказа. Можно ли с помощью сервера очередей организовать взаимодействие сервисов? Какой сервер очередей выбрать? Мы постараемся ответить на эти и другие вопросы во время мастер-класса. Приходите!

Комментарии

Comments powered by Disqus
Contents © 2015 Andrey - Powered by Nikola