Подтвердить что ты не робот

Как Акка используется в Play?

Воспроизвести домашнюю страницу:

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

Я хотел бы точно знать, как и где Akka используется в Play, и каковы последствия того, что Play build поверх Akka.

4b9b3361

Ответ 1

В Play 2.0 Play делегировал все запросы, чтобы пройти через актера. Это в значительной степени зависело от API будущего Akka и других частей.

В Play 2.1, с переходом API будущего Akka в Scala 2.10, Play началось в зависимости от того, что прямо не было на Akka. Он получает все контексты исполнения от Akka и обеспечивает интеграцию с Akka, но это касается его объема.

В Play 2.3 мы добавляем новые функции для интеграции Akka, особенно в WebSockets.

В Play 2.4 Play будет перенесен на новый akka-http (ранее известный как спрей), после чего игра будет построена на Akka, как вы можете получить.

Каковы последствия? Akka представляет собой парадигму программирования, которая упрощает работу с concurrency. Он также обеспечивает отличные абстракции для распределенного программирования - самое сложное в распределенном программировании - это проблемы с отказами (которые происходят все время) соответственно. Большинство инструментов пытаются решить эту проблему, пытаясь скрыть от вас неудачи, но, к сожалению, скрытие чего-то не заставляет его уйти и на самом деле действительно усложняет ситуацию, потому что, когда вы пытаетесь решить конкретные типы сбоев, тот факт, что они скрыты от вас мешает. Акка толкает неудачи в вашем лице, так что, когда вы кодируете, вы вынуждены думать о том, как ваше приложение будет реагировать на сбои. Следовательно, вы вынуждены разрабатывать/кодировать свое приложение таким образом, чтобы оно терпимо к отказам. Он также предоставляет вам инструменты для решения этих проблем в иерархическом порядке, позволяя вам указать, на каком уровне вы хотите справиться с тем, какой тип сбоя и как следует реагировать на отказ (умереть, повторить до n раз и т.д.),.

Итак, как это помогает Играть? Лучший вопрос в том, как он помогает пользователю Play? Akka помогает мне реализовать Play сам, но можно реализовать его без Akka (на самом деле Netty делает большую часть тяжелой работы сейчас, что изменится в Play 2.4). Важно то, что Play плавно интегрируется с Akka, упрощает обработку HTTP-запросов с актерами, устраняет сбои и т.д., И это помогает воспроизводить пользователей, поскольку позволяет им создавать свое приложение таким образом, чтобы оно было масштабируемым и гибким.

ОБНОВЛЕНИЕ: Выше было написано 3 года назад, с тех пор многое изменилось. Play 2.4 действительно обеспечивал экспериментальную поддержку akka-http, но Play по умолчанию использует Netty.

В Play 2.5 мы отказались от итерационного API и переключились на потоки Akka. Это означало, что теперь все асинхронные IO проходили через потоки Akka. Вскоре (не уверен, что это будет Play 2.6 или новее) Play сыграет щелчок переключателя, чтобы сделать akka-http стандартной поддержкой резервного копирования сервера (хотя еще не WS-клиента).

UPDATE 2: Play 2.6 теперь делает akka-http базовой версией HTTP-сервера по умолчанию (Netty по-прежнему доступен как опция).