Orleans

Jan 16, 2017 22:32

Дошли руки до https://github.com/dotnet/orleans. Вкратце - я в восторге. Код получается намного проще, чем с Akka.NET, и, соответственно, понятней для всех членов команды. Большим плюсом идет адекватно работающая типизация (в акке с этим проблемы, а использование динамики в языке, который в основном типизирован статически, не очень удобно ( Read more... )

программирование

Leave a comment

maksenov January 18 2017, 13:11:33 UTC
Ну вот смотрите, у нас ситуация похожая:

Есть RabbitMQ, к нему цепляется пачка сервисов, которые обмениваются между собой сообщениями. Сейчас администрирование кластера (для нас это скромные 5 машин в датацетре, достаточно высоких правда + несколько эндпоинтов, с которыми идет работа по HTTP - система распределена географически: корпоративный центр и промысел, соединяется по спутнику) вручную, через самописный консольный клиент.

Мы берем Orleans для облегчения коммуникации и упрощения API сервисов, фактически, объединяя мелкие сервисы в большие, которые будут запущены параллельно на нескольких узлах. Горячего обновления при этом не подразумевается - в SCADA заказчика есть суточный буфер, из которого данные за время простоя докачиваются.

Выглядит в итоге это следующим образом: есть 3 машины с silo-сервисами, которые содержат только управляемый код, 2 - с silo-сервисами, которые работают с COM+ API сторонних производителей. Клиент (веб-сервер, проксирующий вызовы к бэкенду) видит все ноды, активирует грейны на соответствующих узлах (по факту, Orleans в гетерогенной среде сам выбирает из возможных Silo где активировать). Обновление производится полным остановом системы на обслуживание, т.к. SLA это допускает + работа ведется параллельно в нескольких часовых поясах.

То есть у нас не безостановочная работа, но это допустимо по контракту. Если нужен hot-code-reload - таки лучше Erlang или Akka на худой конец.

Информация о рантайме Orleans хранится в каком-то глобальном хранилище, мы используем MS SQL Server (любим и умеем в SQL :)

По теме я рекомендую почитать:
https://dotnet.github.io/orleans/Documentation/Runtime-Implementation-Details/Cluster-Management.html
https://dotnet.github.io/orleans/Documentation/Multi-Cluster/Overview.html
https://www.microsoft.com/en-us/research/wp-content/uploads/2016/02/Orleans20Best20Practices.pdf

Reply


Leave a comment

Up