View
190
Download
3
Category
Preview:
Citation preview
Параллелизм с использованием акторов
Корниенко АлександрC#, erlang developer
Global Fleet Management
Немного истории
- модель акторов(К. Хьюит, П. Бишоп и Р. Штайгер)
- операционную семантику для модели акторов(Ирен Грейф)
- аксиоматические законы для систем акторов(Г. Бейкер и К. Хьюитт)
- основы семантики акторов(Уильям Клингер)
Фундаментальные концепции акторов
Актор является вычислительной сущностью, которая в ответ на полученное
сообщение может одновременно:
- отправить конечное число сообщений другим акторам;
Фундаментальные концепции актеров
Актор является вычислительной сущностью, которая в ответ на полученное
сообщение может одновременно:
- отправить конечное число сообщений другим акторам;
- создать конечное число новых акторов;
Фундаментальные концепции актеров
Актор является вычислительной сущностью, которая в ответ на полученное
сообщение может одновременно:
- отправить конечное число сообщений другим акторам;
- создать конечное число новых акторов;
- выбрать тип поведения, которое будет использоваться для следующего
сообщения в свой адрес
Message passing - основа взаимодействия акторов
Свойства модели акторов
- изолированность компонентов системы
Actor Actor
message
message
StateState
Свойства модели акторов
- асинхронное исполнение
Actor1 Actor2
Async message
Async message
MailBoxMailBox
Свойства модели акторов
- отсутствие shared memory
- отсутствие блокировки
- отстутвие необходимости синхронизации
- отсутствие “гонок” Server 1
Actor
Server 2
Actor
Address space
Address space
Свойства модели акторов
- отказоустойчивость Процесс-наблюдатель
PIDPIDPIDPID
Свойства модели акторов
- масштабираемость
Сервер
Актор Актор
Сервер Сервер
Актор Актор
Listener
Erlang и модель актеров
КлиентыАктеры клиентов (Worker)
cast() Очередь сообщений
Writer
Очередь сообщений
cast()
udp
Supervisor поведение
Listener Актеры клиентов (Worker)
cast()Очередь
сообщений
Writer
Очередь сообщений
cast()
Supervisor
- виртуальные актеры(grain) обчные объекты
- асинхронные сообщения
- позволяет строить распределенную систему обработки данных
- сервера на уровне фреймворка общаются между собой
- используют разнообразные хранилища для внутренних состояний grain
- + все самое лучшее из Erlang
.Net Orleans
Silo
Распределенная система
Client
Grainmessages Grain1
Silo
GrainGrain2
Shared storage
Silo
Добавление нового Silo это просто!
Client
messages
New Silo
Silo
Storage
Silo
Создание нового Grain
Client
Grain message
Silo
Storage
- Новый грейн активируется только когда приходит новое сообщение
+Grain
Silo
Управление простаивающими Grain
Silo
Storage
- простаивающие Grain удаляются
-Idle grain
Silo
Load balancing
Client
New grain message
1 Grain
Silo
Grain2 Grain
Shared storage
- Произвольное создание grain на одном из серверов
Silo
Load balancing
Client
New grain message
+ Grain
Silo
Grain2 Grain
Shared storage
- создание grain на основании загрузки(CPU, memory, actors)
CPU, memory
10 grainsLoad 2%
2 grainsLoad 30%
Silo
Отказоустойчивость
Client
messages
Silo
Silo
Storage
Grain 1 Grain 2
Grain 1, 2,3
-кластер жив пока работает хотя бы 1 Silo
Вопросы?
Ресурсы
http://dotnet.github.io/
https://www.erlang.org/
Recommended