SlideShare uma empresa Scribd logo
1 de 66
Ресурсы
• Оф. сайт – http://akka.io
• Документация – http://doc.akka.io/docs/akka/snapshot/
• ScalaDoc – http://doc.akka.io/api/akka/snapshot/
• Введение (30 минут) – Typesafe Activator template “Hello
Akka!”
• Курс (8 часов) – Principles of Reactive Programming (Weeks
5,6,7)
• Реактивный манифест – http://habrahabr.ru/post/195562/
• Книга (не введение) – Effective Akka: Patterns and Best
Practices by Jamie Allen
Модули Akka
akka-actor – Classic Actors, Typed Actors, IO Actor etc.
akka-agent – Agents, integrated with Scala STM
akka-camel – Apache Camel integration
akka-cluster – Cluster membership management, elastic routers.
akka-kernel – Akka microkernel for running a bare-bones mini application server
akka-osgi – base bundle for using Akka in OSGi containers, containing the akka-actor classes
akka-osgi-aries – Aries blueprint for provisioning actor systems
akka-remote – Remote Actors
akka-slf4j – SLF4J Logger (event bus listener)
akka-testkit – Toolkit for testing Actor systems
akka-zeromq – ZeroMQ integration
Примеры
• spray – веб-сервер и фреймворк для написания HTTP/REST
приложений
• xitrum – веб-фреймворк
• Klout – сервис анализ социальных связей
• Amazon
• Blizzard
• Autodesk
• ...
Проблема
Блокирующие вызовы:
• Blocking IO
• Примитивы синхронизации (мьютексы, семафоры, CountDownLatch, …)
• Thread.sleep()
• Future.get()
Итог:
• Простаивание ресурсов
• Дедлоки
• Сильная связанность
компонентов
• Ухудшается
отзывчивость системы
• Теряется возможность
масштабирования
Решение
Решение – акторы, взаимодействующие между
собой асинхронно посредством сообщений (и
только сообщений).
Акторы похожи на людей в комнате, говорящих
друг с другом.
Решение
Решение – акторы, взаимодействующие между
собой асинхронно посредством сообщений (и
только сообщений).
Акторы похожи на людей в комнате, говорящих
друг с другом.
Actor trait
type Receive = PartialFunction[Any, Unit]
trait Actor {
def receive: Receive = ???
...
}
Пример Actor’а
class Time extends Actor {
def receive = {
case "What is the time?" => sender ! "12:43"
}
}
Пример stateful Actor’а
class Counter extends Actor {
var count = 0
def receive = {
case "incr" => count += 1
case ("get", customer: ActorRef) => customer ! count
}
}
Демонстрация
Parent
BankAccount
Демонстрация
Parent
BankAccount
akka://Main/user/app#-1327529947
akka://Main/user/app/acc1#1803679474
Stopping Actors
context.stop(actor)
actor ! PoisonPill
или
В обоих случаях посылается сообщение.
В первом случае все сообщения в очереди выбрасываются.
Во втором – сообщение кладется в конец очереди.
Закрепим знания
• Все акторы инкапсулированы и независимы (больше
инкапсуляции, чем в традиционном ООП). Нету способа
взаимодействия с акторами кроме отправки сообщений.
• Сообщения должны быть иммутабельными.
• Избегать блокировок в акторах. Нужно использовать
асинхронное API для работы с файлами, БД, …
• Отправка сообщений не является надёжной.
• Порядок отправки и принятия сообщений неопределён
(кроме случая, когда актор посылает другому актору подряд
сообщения).
Иерархии акторов
Большая
корпорация
Отдел
маркетинга Бухгалтерия
Отдел
разработки
Проект1
БД UI
Напоминают
иерархию большой
корпорации
Supervision
Большая
корпорация
Отдел
маркетинга Бухгалтерия
Отдел
разработки
Проект1
БД UI
Напоминают
иерархию большой
корпорации
Supervision
Большая
корпорация
Отдел
маркетинга Бухгалтерия
Отдел
разработки
Проект1
БД UI
Напоминают
иерархию большой
корпорации
Supervision
Большая
корпорация
Отдел
маркетинга Бухгалтерия
Отдел
разработки
Проект1
БД UI
Напоминают
иерархию большой
корпорации
Принимает решение
Supervision
class Manager extends Actor {
override val supervisorStrategy = OneForOneStrategy() {
case _: DBException => Restart // reconnect to DB
case _: NullPointerException => Stop
case _: ServiceDownException => Escalate
}
def receive = ???
}
Жизненный цикл Actor’а
• start
• (restart)*
• stop
Жизненный цикл Actor’а
• start
• (restart)*
• stop
context.actorOf(…)
Жизненный цикл Actor’а
• start
• (restart)*
• stop
context.actorOf(…)
new Actor
Жизненный цикл Actor’а
• start
• (restart)*
• stop
context.actorOf(…)
new Actor
preStart
Жизненный цикл Actor’а
• start
• (restart)*
• stop
context.actorOf(…)
new Actor
preStart
Жизненный цикл Actor’а
• start
• (restart)*
• stop
context.actorOf(…)
new Actor
preStart
Restart
Жизненный цикл Actor’а
• start
• (restart)*
• stop
context.actorOf(…)
new Actor
preStart
Restart
preRestart
Жизненный цикл Actor’а
• start
• (restart)*
• stop
context.actorOf(…)
new Actor
preStart
Restart
preRestart
new Actor
Жизненный цикл Actor’а
• start
• (restart)*
• stop
context.actorOf(…)
new Actor
preStart
Restart
preRestart
new Actor
postRestart
Жизненный цикл Actor’а
• start
• (restart)*
• stop
context.actorOf(…)
new Actor
preStart
Restart
preRestart
new Actor
postRestart
stop
Жизненный цикл Actor’а
• start
• (restart)*
• stop
context.actorOf(…)
new Actor
preStart
Restart
preRestart
new Actor
postRestart
stop
Stop
postStop
Жизненный цикл Actor’а
• start
• (restart)*
• stop
context.actorOf(…)
new Actor
preStart
Restart
preRestart
new Actor
postRestart
stop
Stop
postStop
Может произойти *0, ∞) раз
Закрепим знания
• Акторы организуются в иерархии.
• Акторы обязаны обрабатывать ошибки своих дочерних
акторов. Тем самым достигается отказоустойчивость системы.
• Рестарты акторов не наблюдаемы из внешнего мира.
• При рестарте актора рестартуется всё его поддерево.
• Рестарты в листьях дерева иерархии происходят чаще.
• Рискованные задачи желательно делегировать дочерним
акторам, если родительский актор имеет важное состояние.
Поиск акторов
class MyActor extends Actor {
val path = "/user/app/b"
context.actorSelection(path) ! Identify(42)
def receive = {
case ActorIdentity(42, Some(actorRef)) => {
println(s"Actor with $path found: $actorRef")
}
case ActorIdentity(42, None) => {
println(s"Actor with $path not found")
}
}
}
Поиск акторов
context.actorSelection("/user/app/b")
context.actorSelection("child")
context.actorSelection("../sibling")
context.actorSelection("akka.tcp://Main@host:port/user/app/b")
context.actorSelection("/user/app/*")
Поиск по абсолютному пути:
Поиск дочернего актора:
Поиск соседнего актора:
Поиск удалённого актора:
Поиск по wildcard’ам:
Маршрутизация
Router
Routee1 Routee2 Routee3
? ? ?
Round Robin
Router
Routee1 Routee2 Routee3
Round Robin
Router
Routee1 Routee2 Routee3
Round Robin
Router
Routee1 Routee2 Routee3
Round Robin
Router
Routee1 Routee2 Routee3
Round Robin
Router
Routee1 Routee2 Routee3
Round Robin
• Сообщения должны быть равнозначными.
• Воркеры должны быть равнозначными.
Random
Router
Routee1 Routee2 Routee3
Random
Router
Routee1 Routee2 Routee3
Random
Router
Routee1 Routee2 Routee3
Random
Router
Routee1 Routee2 Routee3
Random
Router
Routee1 Routee2 Routee3
Random
• Может вызвать разбалансировку.
• Применимо, когда bottleneck в самом маршрутизаторе.
• Применимо, когда есть несколько маршрутизаторов.
• Воркеры должны быть равнозначными.
• Сообщения должны быть равнозначными.
Smallest mailbox
Router
Routee1 Routee2 Routee3
Smallest mailbox
Router
Routee1 Routee2 Routee3
Smallest mailbox
• Равномерная балансировка.
• Сообщения должны быть равнозначными.
• Неприменимо для удалённых воркеров.
• Относительно высокая цена маршрутизации – нужно каждый
раз считать размер очереди.
Broadcast
Router
Routee1 Routee2 Routee3
Broadcast
Router
Routee1 Routee2 Routee3
Broadcast
Router
Routee1 Routee2 Routee3
Broadcast
• Можно назначать различные задачи.
• Повышается надежность (некоторые воркеры могут упасть
при выполнении задач).
• Требуется в n раз больше ресурсов, где n – количество
воркеров.
ScatterGatherFirstCompletedOf
Router
Routee1 Routee2 Routee3
ScatterGatherFirstCompletedOf
Router
Routee1 Routee2 Routee3
Самый быстрый ответ
(остальные отвергаются)
ScatterGatherFirstCompletedOf
• Применимо, когда нужно получить ответ как можно скорее.
• Требуется в n раз больше ресурсов, где n – количество
воркеров.
Consistent Hash
Router
Routee1 Routee2 Routee3
Consistent Hash
Router
Routee1 Routee2 Routee3
Consistent Hash
Router
Routee1 Routee2 Routee3
Consistent Hash
Router
Routee1 Routee2 Routee3
Consistent Hash
Router
Routee1 Routee2 Routee3
Consistent Hash
• Задачи одного и того же типа отправляются одним и тем же
воркерам.
• Позволяет избежать разделяемого состояния между
воркерами. Например, сообщения, относящиеся к одному и
тому же пользователю, всегда будут обработаны одним и тем
же актором.
• Не гарантирует равномерность нагрузки.
Закрепим знания
• Асинхронная передача сообщений обеспечивает
вертикальное масштабирование: обрабатывая сообщение,
актор не блокирует его, а уступает поток для обработки
следующего сообщения.
• Прозрачность местонахождения акторов (location
transparency) обеспечивает горизонтальное
масштабирование.
Нетронутые темы
• Кластеризация
• Персистентность
• Мониторинг жизненного цикла акторов
• Конечные автоматы (FSM)
• Spray – фреймворк для разработки HTTP/REST приложений
• Тестирование акторов
• Работа с TCP/UDP
• Агенты
• Интеграция с Apache Camel
• ...
Спасибо за
внимание!

Mais conteúdo relacionado

Mais procurados

Алексей Федоров
Алексей ФедоровАлексей Федоров
Алексей ФедоровCodeFest
 
Docker в работе: взгляд на его использование в Badoo через год / Турецкий Ант...
Docker в работе: взгляд на его использование в Badoo через год / Турецкий Ант...Docker в работе: взгляд на его использование в Badoo через год / Турецкий Ант...
Docker в работе: взгляд на его использование в Badoo через год / Турецкий Ант...Ontico
 
Андрей Акиньшин
Андрей АкиньшинАндрей Акиньшин
Андрей АкиньшинCodeFest
 
Reinventing the wheel - why do it and how to feel good about it - Julik Tarkh...
Reinventing the wheel - why do it and how to feel good about it - Julik Tarkh...Reinventing the wheel - why do it and how to feel good about it - Julik Tarkh...
Reinventing the wheel - why do it and how to feel good about it - Julik Tarkh...Ruby Meditation
 
"Модель акторов и параллелизм с использованием Akka" Зубов Максим, Naumen
"Модель акторов и параллелизм с использованием Akka" Зубов Максим, Naumen"Модель акторов и параллелизм с использованием Akka" Зубов Максим, Naumen
"Модель акторов и параллелизм с использованием Akka" Зубов Максим, Naumenit-people
 
Опыт эксплуатации большого проекта на Ruby
Опыт эксплуатации большого проекта на RubyОпыт эксплуатации большого проекта на Ruby
Опыт эксплуатации большого проекта на RubyAlex Chistyakov
 
Top10 доводов против языка Ruby
Top10 доводов против языка RubyTop10 доводов против языка Ruby
Top10 доводов против языка Rubyguest5f907e
 
Zabbix 3.2 - мониторинг качественно нового уровня / Алексей Владышев (Zabbix)
Zabbix 3.2 - мониторинг качественно нового уровня / Алексей Владышев (Zabbix)Zabbix 3.2 - мониторинг качественно нового уровня / Алексей Владышев (Zabbix)
Zabbix 3.2 - мониторинг качественно нового уровня / Алексей Владышев (Zabbix)Ontico
 
Пайплайн машинного обучения на Apache Spark / Павел Клеменков (Rambler&Co)
Пайплайн машинного обучения на Apache Spark / Павел Клеменков (Rambler&Co)Пайплайн машинного обучения на Apache Spark / Павел Клеменков (Rambler&Co)
Пайплайн машинного обучения на Apache Spark / Павел Клеменков (Rambler&Co)Ontico
 
Денис Иванов
Денис ИвановДенис Иванов
Денис ИвановCodeFest
 
Docker & Puppet: как их скрестить и надо ли вам это?
Docker & Puppet: как их скрестить и надо ли вам это?Docker & Puppet: как их скрестить и надо ли вам это?
Docker & Puppet: как их скрестить и надо ли вам это?Anton Turetsky
 
Отладка производительности приложения на Erlang / Максим Лапшин (Erlyvideo)
 Отладка производительности приложения на Erlang / Максим Лапшин (Erlyvideo) Отладка производительности приложения на Erlang / Максим Лапшин (Erlyvideo)
Отладка производительности приложения на Erlang / Максим Лапшин (Erlyvideo)Ontico
 
Алексей Фомкин, Практическое применение Web Workers
Алексей Фомкин, Практическое применение Web WorkersАлексей Фомкин, Практическое применение Web Workers
Алексей Фомкин, Практическое применение Web WorkersAleksey Fomkin
 
"Fault tolerant workflow orchestration on PHP", Anton Tsitou
"Fault tolerant workflow orchestration on PHP", Anton Tsitou"Fault tolerant workflow orchestration on PHP", Anton Tsitou
"Fault tolerant workflow orchestration on PHP", Anton TsitouFwdays
 
How to build solid CI-CD pipeline / Илья Беда (beda.software)
How to build solid CI-CD pipeline / Илья Беда (beda.software)How to build solid CI-CD pipeline / Илья Беда (beda.software)
How to build solid CI-CD pipeline / Илья Беда (beda.software)Ontico
 
Фреймворк Akka и его использование в Яндексе
Фреймворк Akka и его использование в ЯндексеФреймворк Akka и его использование в Яндексе
Фреймворк Akka и его использование в ЯндексеVadim Tsesko
 
Aviasales: миграция поискового движка в docker / Дмитрий Кузьменков (Aviasales)
Aviasales: миграция поискового движка в docker / Дмитрий Кузьменков (Aviasales)Aviasales: миграция поискового движка в docker / Дмитрий Кузьменков (Aviasales)
Aviasales: миграция поискового движка в docker / Дмитрий Кузьменков (Aviasales)Ontico
 
Zabbix 3.4 - простая непростая дружба с сообществом / Алексей Владышев (Zabbix)
Zabbix 3.4 - простая непростая дружба с сообществом / Алексей Владышев (Zabbix)Zabbix 3.4 - простая непростая дружба с сообществом / Алексей Владышев (Zabbix)
Zabbix 3.4 - простая непростая дружба с сообществом / Алексей Владышев (Zabbix)Ontico
 
Переезжаем с Zabbix на Prometheus / Василий Озеров (fevlake)
Переезжаем с Zabbix на Prometheus / Василий Озеров (fevlake)Переезжаем с Zabbix на Prometheus / Василий Озеров (fevlake)
Переезжаем с Zabbix на Prometheus / Василий Озеров (fevlake)Ontico
 
Как и зачем создавать NginX-модуль - теория, практика, профит / Василий Сошни...
Как и зачем создавать NginX-модуль - теория, практика, профит / Василий Сошни...Как и зачем создавать NginX-модуль - теория, практика, профит / Василий Сошни...
Как и зачем создавать NginX-модуль - теория, практика, профит / Василий Сошни...Ontico
 

Mais procurados (20)

Алексей Федоров
Алексей ФедоровАлексей Федоров
Алексей Федоров
 
Docker в работе: взгляд на его использование в Badoo через год / Турецкий Ант...
Docker в работе: взгляд на его использование в Badoo через год / Турецкий Ант...Docker в работе: взгляд на его использование в Badoo через год / Турецкий Ант...
Docker в работе: взгляд на его использование в Badoo через год / Турецкий Ант...
 
Андрей Акиньшин
Андрей АкиньшинАндрей Акиньшин
Андрей Акиньшин
 
Reinventing the wheel - why do it and how to feel good about it - Julik Tarkh...
Reinventing the wheel - why do it and how to feel good about it - Julik Tarkh...Reinventing the wheel - why do it and how to feel good about it - Julik Tarkh...
Reinventing the wheel - why do it and how to feel good about it - Julik Tarkh...
 
"Модель акторов и параллелизм с использованием Akka" Зубов Максим, Naumen
"Модель акторов и параллелизм с использованием Akka" Зубов Максим, Naumen"Модель акторов и параллелизм с использованием Akka" Зубов Максим, Naumen
"Модель акторов и параллелизм с использованием Akka" Зубов Максим, Naumen
 
Опыт эксплуатации большого проекта на Ruby
Опыт эксплуатации большого проекта на RubyОпыт эксплуатации большого проекта на Ruby
Опыт эксплуатации большого проекта на Ruby
 
Top10 доводов против языка Ruby
Top10 доводов против языка RubyTop10 доводов против языка Ruby
Top10 доводов против языка Ruby
 
Zabbix 3.2 - мониторинг качественно нового уровня / Алексей Владышев (Zabbix)
Zabbix 3.2 - мониторинг качественно нового уровня / Алексей Владышев (Zabbix)Zabbix 3.2 - мониторинг качественно нового уровня / Алексей Владышев (Zabbix)
Zabbix 3.2 - мониторинг качественно нового уровня / Алексей Владышев (Zabbix)
 
Пайплайн машинного обучения на Apache Spark / Павел Клеменков (Rambler&Co)
Пайплайн машинного обучения на Apache Spark / Павел Клеменков (Rambler&Co)Пайплайн машинного обучения на Apache Spark / Павел Клеменков (Rambler&Co)
Пайплайн машинного обучения на Apache Spark / Павел Клеменков (Rambler&Co)
 
Денис Иванов
Денис ИвановДенис Иванов
Денис Иванов
 
Docker & Puppet: как их скрестить и надо ли вам это?
Docker & Puppet: как их скрестить и надо ли вам это?Docker & Puppet: как их скрестить и надо ли вам это?
Docker & Puppet: как их скрестить и надо ли вам это?
 
Отладка производительности приложения на Erlang / Максим Лапшин (Erlyvideo)
 Отладка производительности приложения на Erlang / Максим Лапшин (Erlyvideo) Отладка производительности приложения на Erlang / Максим Лапшин (Erlyvideo)
Отладка производительности приложения на Erlang / Максим Лапшин (Erlyvideo)
 
Алексей Фомкин, Практическое применение Web Workers
Алексей Фомкин, Практическое применение Web WorkersАлексей Фомкин, Практическое применение Web Workers
Алексей Фомкин, Практическое применение Web Workers
 
"Fault tolerant workflow orchestration on PHP", Anton Tsitou
"Fault tolerant workflow orchestration on PHP", Anton Tsitou"Fault tolerant workflow orchestration on PHP", Anton Tsitou
"Fault tolerant workflow orchestration on PHP", Anton Tsitou
 
How to build solid CI-CD pipeline / Илья Беда (beda.software)
How to build solid CI-CD pipeline / Илья Беда (beda.software)How to build solid CI-CD pipeline / Илья Беда (beda.software)
How to build solid CI-CD pipeline / Илья Беда (beda.software)
 
Фреймворк Akka и его использование в Яндексе
Фреймворк Akka и его использование в ЯндексеФреймворк Akka и его использование в Яндексе
Фреймворк Akka и его использование в Яндексе
 
Aviasales: миграция поискового движка в docker / Дмитрий Кузьменков (Aviasales)
Aviasales: миграция поискового движка в docker / Дмитрий Кузьменков (Aviasales)Aviasales: миграция поискового движка в docker / Дмитрий Кузьменков (Aviasales)
Aviasales: миграция поискового движка в docker / Дмитрий Кузьменков (Aviasales)
 
Zabbix 3.4 - простая непростая дружба с сообществом / Алексей Владышев (Zabbix)
Zabbix 3.4 - простая непростая дружба с сообществом / Алексей Владышев (Zabbix)Zabbix 3.4 - простая непростая дружба с сообществом / Алексей Владышев (Zabbix)
Zabbix 3.4 - простая непростая дружба с сообществом / Алексей Владышев (Zabbix)
 
Переезжаем с Zabbix на Prometheus / Василий Озеров (fevlake)
Переезжаем с Zabbix на Prometheus / Василий Озеров (fevlake)Переезжаем с Zabbix на Prometheus / Василий Озеров (fevlake)
Переезжаем с Zabbix на Prometheus / Василий Озеров (fevlake)
 
Как и зачем создавать NginX-модуль - теория, практика, профит / Василий Сошни...
Как и зачем создавать NginX-модуль - теория, практика, профит / Василий Сошни...Как и зачем создавать NginX-модуль - теория, практика, профит / Василий Сошни...
Как и зачем создавать NginX-модуль - теория, практика, профит / Василий Сошни...
 

Destaque

Работа с Akka Cluster - Александр Алексеев
Работа с Akka Cluster - Александр АлексеевРабота с Akka Cluster - Александр Алексеев
Работа с Akka Cluster - Александр АлексеевAleksander Alekseev
 
"Посмотрим на Акку-Джаву" Дмитрий Мантула
"Посмотрим на Акку-Джаву" Дмитрий Мантула "Посмотрим на Акку-Джаву" Дмитрий Мантула
"Посмотрим на Акку-Джаву" Дмитрий Мантула Fwdays
 
Введение в Scalaz
Введение в ScalazВведение в Scalaz
Введение в ScalazZheka Kozlov
 
Play Template Engine Based On Scala
Play Template Engine Based On ScalaPlay Template Engine Based On Scala
Play Template Engine Based On ScalaKnoldus Inc.
 
Designing Reactive Systems with Akka
Designing Reactive Systems with AkkaDesigning Reactive Systems with Akka
Designing Reactive Systems with AkkaThomas Lockney
 
HTML5 with Play Scala, CoffeeScript and Jade - Devoxx 2011
HTML5 with Play Scala, CoffeeScript and Jade - Devoxx 2011HTML5 with Play Scala, CoffeeScript and Jade - Devoxx 2011
HTML5 with Play Scala, CoffeeScript and Jade - Devoxx 2011Matt Raible
 
Your First Scala Web Application using Play 2.1
Your First Scala Web Application using Play 2.1Your First Scala Web Application using Play 2.1
Your First Scala Web Application using Play 2.1Matthew Barlocker
 
Никита Цуканов "Параллелизм и распределённые вычисления на акторах с Akka.net"
Никита Цуканов "Параллелизм и распределённые вычисления на акторах с Akka.net"Никита Цуканов "Параллелизм и распределённые вычисления на акторах с Akka.net"
Никита Цуканов "Параллелизм и распределённые вычисления на акторах с Akka.net"Yulia Tsisyk
 
Play framework And Google Cloud Platform GCP.
Play framework And Google Cloud Platform GCP.Play framework And Google Cloud Platform GCP.
Play framework And Google Cloud Platform GCP.Eng Chrispinus Onyancha
 
Voxxed Days Vienna - The Why and How of Reactive Web-Applications on the JVM
Voxxed Days Vienna - The Why and How of Reactive Web-Applications on the JVMVoxxed Days Vienna - The Why and How of Reactive Web-Applications on the JVM
Voxxed Days Vienna - The Why and How of Reactive Web-Applications on the JVMManuel Bernhardt
 
Reactive Web-Applications @ LambdaDays
Reactive Web-Applications @ LambdaDaysReactive Web-Applications @ LambdaDays
Reactive Web-Applications @ LambdaDaysManuel Bernhardt
 
Dependency injection in scala
Dependency injection in scalaDependency injection in scala
Dependency injection in scalaMichal Bigos
 
Язык программирования Scala / Владимир Успенский (TCS Bank)
Язык программирования Scala / Владимир Успенский (TCS Bank)Язык программирования Scala / Владимир Успенский (TCS Bank)
Язык программирования Scala / Владимир Успенский (TCS Bank)Ontico
 
Composable and streamable Play apps
Composable and streamable Play appsComposable and streamable Play apps
Composable and streamable Play appsYevgeniy Brikman
 

Destaque (20)

Работа с Akka Cluster - Александр Алексеев
Работа с Akka Cluster - Александр АлексеевРабота с Akka Cluster - Александр Алексеев
Работа с Akka Cluster - Александр Алексеев
 
"Посмотрим на Акку-Джаву" Дмитрий Мантула
"Посмотрим на Акку-Джаву" Дмитрий Мантула "Посмотрим на Акку-Джаву" Дмитрий Мантула
"Посмотрим на Акку-Джаву" Дмитрий Мантула
 
Введение в Scalaz
Введение в ScalazВведение в Scalaz
Введение в Scalaz
 
Playing with Scala
Playing with ScalaPlaying with Scala
Playing with Scala
 
[Start] Playing
[Start] Playing[Start] Playing
[Start] Playing
 
Play Template Engine Based On Scala
Play Template Engine Based On ScalaPlay Template Engine Based On Scala
Play Template Engine Based On Scala
 
Designing Reactive Systems with Akka
Designing Reactive Systems with AkkaDesigning Reactive Systems with Akka
Designing Reactive Systems with Akka
 
HTML5 with Play Scala, CoffeeScript and Jade - Devoxx 2011
HTML5 with Play Scala, CoffeeScript and Jade - Devoxx 2011HTML5 with Play Scala, CoffeeScript and Jade - Devoxx 2011
HTML5 with Play Scala, CoffeeScript and Jade - Devoxx 2011
 
Your First Scala Web Application using Play 2.1
Your First Scala Web Application using Play 2.1Your First Scala Web Application using Play 2.1
Your First Scala Web Application using Play 2.1
 
Никита Цуканов "Параллелизм и распределённые вычисления на акторах с Akka.net"
Никита Цуканов "Параллелизм и распределённые вычисления на акторах с Akka.net"Никита Цуканов "Параллелизм и распределённые вычисления на акторах с Akka.net"
Никита Цуканов "Параллелизм и распределённые вычисления на акторах с Akka.net"
 
Play framework And Google Cloud Platform GCP.
Play framework And Google Cloud Platform GCP.Play framework And Google Cloud Platform GCP.
Play framework And Google Cloud Platform GCP.
 
Voxxed Days Vienna - The Why and How of Reactive Web-Applications on the JVM
Voxxed Days Vienna - The Why and How of Reactive Web-Applications on the JVMVoxxed Days Vienna - The Why and How of Reactive Web-Applications on the JVM
Voxxed Days Vienna - The Why and How of Reactive Web-Applications on the JVM
 
Reactive Web-Applications @ LambdaDays
Reactive Web-Applications @ LambdaDaysReactive Web-Applications @ LambdaDays
Reactive Web-Applications @ LambdaDays
 
Akka-http
Akka-httpAkka-http
Akka-http
 
Lagom in Practice
Lagom in PracticeLagom in Practice
Lagom in Practice
 
Dependency injection in scala
Dependency injection in scalaDependency injection in scala
Dependency injection in scala
 
Akka http 2
Akka http 2Akka http 2
Akka http 2
 
Язык программирования Scala / Владимир Успенский (TCS Bank)
Язык программирования Scala / Владимир Успенский (TCS Bank)Язык программирования Scala / Владимир Успенский (TCS Bank)
Язык программирования Scala / Владимир Успенский (TCS Bank)
 
Composable and streamable Play apps
Composable and streamable Play appsComposable and streamable Play apps
Composable and streamable Play apps
 
Akka http
Akka httpAkka http
Akka http
 

Semelhante a Введение в Akka

Курсы актерского мастерства
Курсы актерского мастерстваКурсы актерского мастерства
Курсы актерского мастерстваVasil Remeniuk
 
Cocaine: сценарии использования (Дмитрий Унковский, Яндекс)
Cocaine: сценарии использования (Дмитрий Унковский, Яндекс)Cocaine: сценарии использования (Дмитрий Унковский, Яндекс)
Cocaine: сценарии использования (Дмитрий Унковский, Яндекс)GeeksLab Odessa
 
CI/CD-приложений на Tarantool: от пустого репозитория — до продакшна
CI/CD-приложений на Tarantool: от пустого репозитория — до продакшнаCI/CD-приложений на Tarantool: от пустого репозитория — до продакшна
CI/CD-приложений на Tarantool: от пустого репозитория — до продакшнаMail.ru Group
 
Другая виртуализация
Другая виртуализацияДругая виртуализация
Другая виртуализацияYandex
 
Зачем нужна Scala?
Зачем нужна Scala?Зачем нужна Scala?
Зачем нужна Scala?Vasil Remeniuk
 
Жизнь проекта на production советы по эксплуатации / Николай Сивко (okmeter.io)
Жизнь проекта на production советы по эксплуатации / Николай Сивко (okmeter.io)Жизнь проекта на production советы по эксплуатации / Николай Сивко (okmeter.io)
Жизнь проекта на production советы по эксплуатации / Николай Сивко (okmeter.io)Ontico
 
Жизнь проекта на production
Жизнь проекта на productionЖизнь проекта на production
Жизнь проекта на productionNikolay Sivko
 
Java tricks for high-load server programming
Java tricks for high-load server programmingJava tricks for high-load server programming
Java tricks for high-load server programmingAndrei Pangin
 
Александр Коротин. Безопасность систем управления турбинами в электроэнергетике
Александр Коротин. Безопасность систем управления турбинами в электроэнергетикеАлександр Коротин. Безопасность систем управления турбинами в электроэнергетике
Александр Коротин. Безопасность систем управления турбинами в электроэнергетикеKaspersky
 
Excelsior JET в действии
Excelsior JET в действииExcelsior JET в действии
Excelsior JET в действииNikita Lipsky
 
Java Platform Performance BoF
Java Platform Performance BoFJava Platform Performance BoF
Java Platform Performance BoFDmitry Buzdin
 
Про асинхронное сетевое программирование
Про асинхронное сетевое программированиеПро асинхронное сетевое программирование
Про асинхронное сетевое программированиеPython Meetup
 
Отличие Erlang от объектных языков
Отличие Erlang от объектных языковОтличие Erlang от объектных языков
Отличие Erlang от объектных языковMax Lapshin
 
Стажировка 2016-07-14 02 Евгений Тарасенко. JavaScript
Стажировка 2016-07-14 02 Евгений Тарасенко. JavaScriptСтажировка 2016-07-14 02 Евгений Тарасенко. JavaScript
Стажировка 2016-07-14 02 Евгений Тарасенко. JavaScriptSmartTools
 
Behat в PHP с использованием Behat и Mink
Behat в PHP с использованием Behat и MinkBehat в PHP с использованием Behat и Mink
Behat в PHP с использованием Behat и Minktyomo4ka
 
Joker 2016 - Bytecode 101
Joker 2016 - Bytecode 101Joker 2016 - Bytecode 101
Joker 2016 - Bytecode 101Anton Arhipov
 
Асинхронность и сопрограммы
Асинхронность и сопрограммыАсинхронность и сопрограммы
Асинхронность и сопрограммыPlatonov Sergey
 
Илья Евлампиев - Нагрузочное тестирование веб-приложений с помощью The Grinder
Илья Евлампиев - Нагрузочное тестирование веб-приложений с помощью The GrinderИлья Евлампиев - Нагрузочное тестирование веб-приложений с помощью The Grinder
Илья Евлампиев - Нагрузочное тестирование веб-приложений с помощью The GrinderSQALab
 
Асинхронная репликация без цензуры, Олег Царёв (Mail.ru Group)
Асинхронная репликация без цензуры, Олег Царёв (Mail.ru Group)Асинхронная репликация без цензуры, Олег Царёв (Mail.ru Group)
Асинхронная репликация без цензуры, Олег Царёв (Mail.ru Group)Ontico
 

Semelhante a Введение в Akka (20)

Курсы актерского мастерства
Курсы актерского мастерстваКурсы актерского мастерства
Курсы актерского мастерства
 
Cocaine: сценарии использования (Дмитрий Унковский, Яндекс)
Cocaine: сценарии использования (Дмитрий Унковский, Яндекс)Cocaine: сценарии использования (Дмитрий Унковский, Яндекс)
Cocaine: сценарии использования (Дмитрий Унковский, Яндекс)
 
PowerShell
PowerShellPowerShell
PowerShell
 
CI/CD-приложений на Tarantool: от пустого репозитория — до продакшна
CI/CD-приложений на Tarantool: от пустого репозитория — до продакшнаCI/CD-приложений на Tarantool: от пустого репозитория — до продакшна
CI/CD-приложений на Tarantool: от пустого репозитория — до продакшна
 
Другая виртуализация
Другая виртуализацияДругая виртуализация
Другая виртуализация
 
Зачем нужна Scala?
Зачем нужна Scala?Зачем нужна Scala?
Зачем нужна Scala?
 
Жизнь проекта на production советы по эксплуатации / Николай Сивко (okmeter.io)
Жизнь проекта на production советы по эксплуатации / Николай Сивко (okmeter.io)Жизнь проекта на production советы по эксплуатации / Николай Сивко (okmeter.io)
Жизнь проекта на production советы по эксплуатации / Николай Сивко (okmeter.io)
 
Жизнь проекта на production
Жизнь проекта на productionЖизнь проекта на production
Жизнь проекта на production
 
Java tricks for high-load server programming
Java tricks for high-load server programmingJava tricks for high-load server programming
Java tricks for high-load server programming
 
Александр Коротин. Безопасность систем управления турбинами в электроэнергетике
Александр Коротин. Безопасность систем управления турбинами в электроэнергетикеАлександр Коротин. Безопасность систем управления турбинами в электроэнергетике
Александр Коротин. Безопасность систем управления турбинами в электроэнергетике
 
Excelsior JET в действии
Excelsior JET в действииExcelsior JET в действии
Excelsior JET в действии
 
Java Platform Performance BoF
Java Platform Performance BoFJava Platform Performance BoF
Java Platform Performance BoF
 
Про асинхронное сетевое программирование
Про асинхронное сетевое программированиеПро асинхронное сетевое программирование
Про асинхронное сетевое программирование
 
Отличие Erlang от объектных языков
Отличие Erlang от объектных языковОтличие Erlang от объектных языков
Отличие Erlang от объектных языков
 
Стажировка 2016-07-14 02 Евгений Тарасенко. JavaScript
Стажировка 2016-07-14 02 Евгений Тарасенко. JavaScriptСтажировка 2016-07-14 02 Евгений Тарасенко. JavaScript
Стажировка 2016-07-14 02 Евгений Тарасенко. JavaScript
 
Behat в PHP с использованием Behat и Mink
Behat в PHP с использованием Behat и MinkBehat в PHP с использованием Behat и Mink
Behat в PHP с использованием Behat и Mink
 
Joker 2016 - Bytecode 101
Joker 2016 - Bytecode 101Joker 2016 - Bytecode 101
Joker 2016 - Bytecode 101
 
Асинхронность и сопрограммы
Асинхронность и сопрограммыАсинхронность и сопрограммы
Асинхронность и сопрограммы
 
Илья Евлампиев - Нагрузочное тестирование веб-приложений с помощью The Grinder
Илья Евлампиев - Нагрузочное тестирование веб-приложений с помощью The GrinderИлья Евлампиев - Нагрузочное тестирование веб-приложений с помощью The Grinder
Илья Евлампиев - Нагрузочное тестирование веб-приложений с помощью The Grinder
 
Асинхронная репликация без цензуры, Олег Царёв (Mail.ru Group)
Асинхронная репликация без цензуры, Олег Царёв (Mail.ru Group)Асинхронная репликация без цензуры, Олег Царёв (Mail.ru Group)
Асинхронная репликация без цензуры, Олег Царёв (Mail.ru Group)
 

Mais de Zheka Kozlov

Модули в Java
Модули в JavaМодули в Java
Модули в JavaZheka Kozlov
 
Вещи в Java, о которых вы (возможно) не знали
Вещи в Java, о которых вы (возможно) не зналиВещи в Java, о которых вы (возможно) не знали
Вещи в Java, о которых вы (возможно) не зналиZheka Kozlov
 
Java 9 модули
Java 9 модулиJava 9 модули
Java 9 модулиZheka Kozlov
 
Интерпретирование языков с помощью Free-монад
Интерпретирование языков с помощью Free-монадИнтерпретирование языков с помощью Free-монад
Интерпретирование языков с помощью Free-монадZheka Kozlov
 
Сервис MobiBarC
Сервис MobiBarCСервис MobiBarC
Сервис MobiBarCZheka Kozlov
 
Устойчивый к искажениям алгоритм распознавания штрих-кода EAN-13
Устойчивый к искажениям алгоритм распознавания штрих-кода EAN-13Устойчивый к искажениям алгоритм распознавания штрих-кода EAN-13
Устойчивый к искажениям алгоритм распознавания штрих-кода EAN-13Zheka Kozlov
 

Mais de Zheka Kozlov (7)

Модули в Java
Модули в JavaМодули в Java
Модули в Java
 
Вещи в Java, о которых вы (возможно) не знали
Вещи в Java, о которых вы (возможно) не зналиВещи в Java, о которых вы (возможно) не знали
Вещи в Java, о которых вы (возможно) не знали
 
Java 9 модули
Java 9 модулиJava 9 модули
Java 9 модули
 
Интерпретирование языков с помощью Free-монад
Интерпретирование языков с помощью Free-монадИнтерпретирование языков с помощью Free-монад
Интерпретирование языков с помощью Free-монад
 
Xtend
XtendXtend
Xtend
 
Сервис MobiBarC
Сервис MobiBarCСервис MobiBarC
Сервис MobiBarC
 
Устойчивый к искажениям алгоритм распознавания штрих-кода EAN-13
Устойчивый к искажениям алгоритм распознавания штрих-кода EAN-13Устойчивый к искажениям алгоритм распознавания штрих-кода EAN-13
Устойчивый к искажениям алгоритм распознавания штрих-кода EAN-13
 

Введение в Akka