Долгое время разработка производительных, масштабируемых, надежных и экономически эффективных распределенных систем, была прерогативой узкого круга специалистов. Переезд в «облако», сам по себе, проблему не решил. Обещанная провайдерами дешевая линейная масштабируемость, по-прежнему, недостижимая мечта для всех, сидящих «на игле» реляционных баз данных и монолитных архитектур.
С выходом Microsoft Orleans, разработчики, наконец-то, получили максимально простую и удобную платформу для создания масштабируемых и отказоустойчивых распределенных систем, предназначенных для запуска в «облаке» или в приватном дата-центре.
В докладе будут рассмотрены основные концепции и прецеденты использования платформы, такие как: Internet Of Things (IoT), распределенная обработка потоков данных, масштабирование РСУБД и любых других ограниченных ресурсов, отказоустойчивая координация длительно выполняющихся бизнес-процессов.
"Walk in a distributed systems park with Orleans" Евгений Бобров
1. Walk in a distributed systems park
with Orleans
Yevhen Bobrov
yevhen
YouScan.io@
2. Orleans is …
… runtime and programming model for
building distributed systems based on
actor model
3. Built by eXtreme Computing Group
at Microsoft Research
Has been used internally (during last few years)
Open-sourced in 2015
(available on GitHub and Nuget)
49. Akka / Erlang
10.0.0.1
10.0.0.2
var game = activate(“game”, “tcp://10.0.0.1”)
game.invoke(“foo()”)
var user = activate(“user”, “tcp://10.0.0.2”)
user.invoke(“bar()”)
63. Location Transparency
var game = activate(“game”, “tcp://10.0.0.1”)
game.invoke(“foo()”)
Akka / Erlang
Orleans
var game = activate(“game”) “tcp://10.0.0.1”)
game.invoke(“foo()”)
64. Perpetual Existence
var game = activate(“game”, “tcp://10.0.0.1”)
game.invoke(“foo()”)
Akka / Erlang
Orleans
var game = activate(“game”, “tcp://10.0.0.1”)
game.invoke(“foo()”)
68. Threads ~= Cores
Core 1
Core 2
Core N
Mechanical sympathy
Scheduler
(turns)
Thread 1
Thread N
69. Non-blocking IO
Promises (TPL, Task, Combinators)
Multiplexed TCP
Millions of actors with low OS overhead
Automatic backpressure by design
Synchronous, request-response messaging