Orleans Преимущества

Основными преимуществами Orleans являются:

  • Производительность разработчика даже для неэкспертных программистов.
  • Прозрачная масштабируемость по умолчанию без особых усилий от программиста.

Производительность разработки

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

Знакомая объектно-ориентированной парадигма программирования (OOP)

Зерна — это классы .NET, реализующие объявленные интерфейсы зерна .NET с асинхронными методами. Зерна, как представляется программист, как удаленные объекты, методы которых можно вызывать напрямую. Это обеспечивает программисту знакомую парадигму OOP, превратив вызовы методов в сообщения, перенаправляя их в правильные конечные точки, вызывая методы целевого зерна, а также делая сбои и угловые случаи прозрачно.

Однопоточное выполнение зерна

Среда выполнения гарантирует, что зерно никогда не выполняется в нескольких потоках одновременно. В сочетании с изоляцией от других зерен программист никогда не сталкивается с параллелизмом на уровне зерна, и никогда не требуется использовать блокировки или другие механизмы синхронизации для управления доступом к общим данным. Эта функция только делает разработку распределенных приложений, доступных для программистов, не являющихся экспертами.

Прозрачная активация

Среда выполнения активирует зерно только в том случае, если для него требуется обработать сообщение. Это четко отделяет понятие создания ссылки на зерно, которое видно и контролируется кодом приложения, и физической активацией зерна в памяти, которая является прозрачной для приложения. Это похоже на виртуальную память в том, что она решает, когда "выходить страницы" (деактивировать) или "страница в" (активировать) зерно; Приложение имеет непрерывный доступ к полному "пространству памяти" логически созданных зерен, независимо от того, находятся ли они в физической памяти в любой момент времени.

Прозрачная активация обеспечивает динамическую, адаптивную балансировку нагрузки с помощью размещения и переноса зерна в пул аппаратных ресурсов. Эта функция является значительным улучшением традиционной модели субъектов, в которой время существования субъекта управляется приложением.

Прозрачность расположения

Ссылка на зерно (прокси-объект), которую программист использует для вызова методов зерна или передачи другим компонентам, содержит только логическое удостоверение зерна. Перевод логического удостоверения зерна в его физическое расположение и соответствующая маршрутизация сообщений выполняется прозрачно средой Orleans выполнения.

Код приложения взаимодействует с зернами, оставаясь неумышленным в их физическом расположении, которое может измениться с течением времени из-за сбоев или управления ресурсами или из-за деактивации зерна во время его вызова.

Прозрачная интеграция с постоянным хранилищем

Orleans позволяет декларативное сопоставление состояния зерна в памяти с постоянным хранилищем. Он синхронизирует обновления, прозрачно гарантируя, что вызывающие абоненты получают результаты только после успешного обновления постоянного состояния. Расширение и(или) настройка набора существующих поставщиков сохраняемого хранилища доступна просто.

Автоматическое распространение ошибок

Среда выполнения автоматически распространяет необработанные ошибки вверх по цепочке вызовов с семантикой асинхронной и распределенной попытки и перехвата. В результате ошибки не теряются в приложении. Это позволяет программисту помещать логику обработки ошибок в соответствующие места без мухательной работы по распространению ошибок вручную на каждом уровне.

Прозрачное масштабируемость по умолчанию

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

Ниже приведены некоторые ключевые факторы, которые обеспечивают масштабируемость и производительность:

Неявное детализация секционирования состояния приложения

Используя зерна в качестве непосредственно адресных сущностей, программист неявно разбивает общее состояние приложения. Orleans В то время как модель программирования не предписывает, насколько большое или небольшое зерно должно быть, в большинстве случаев имеет смысл иметь относительно большое количество зерен - миллионы или более - с каждым из которых представляется естественная сущность приложения, например учетная запись пользователя или заказ на покупку.

При наличии отдельных адресов и их физического расположения, абстрагированного средой выполнения, Orleans имеет огромную гибкость в балансировке нагрузки и работе с горячими точками прозрачно и универсально без каких-либо мыслей от разработчика приложений.

Адаптивное управление ресурсами

Зерна не предполагают локализацию других зерен, так как они взаимодействуют с ними. Из-за прозрачности расположения среда выполнения может управлять и настраивать распределение доступных аппаратных ресурсов динамически. Среда выполнения делает это путем принятия точных решений о размещении и миграции зерна в вычислительном кластере в реакции на загрузку и шаблоны связи без сбоя входящих запросов. Создавая несколько реплика определенного зерна, среда выполнения может увеличить пропускную способность зерна без внесения изменений в код приложения.

Мультиплексированная связь

Orleans Логическая конечная точка имеет логическую конечную точку, и обмен сообщениями между ними мультиплексируется по фиксированному набору физических подключений (сокетов TCP). Это позволяет среде выполнения размещать миллионы адресных сущностей с низкой нагрузкой на ОС на зерно. Кроме того, активация и деактивация зерна не повлечет за собой затраты на регистрацию или отмену регистрации физической конечной точки, например TCP-порта или URL-адреса HTTP или даже закрытия TCP-подключения.

Эффективное планирование

Среда выполнения планирует выполнение большого количества однопоточных наборов с помощью пула потоков .NET, оптимизированного для производительности. При использовании кода зерна, написанного в неблокировке, стиле на основе продолжения (требование Orleans модели программирования), код приложения выполняется очень эффективно в многопоточных многопоточных способах без каких-либо спорных действий. Это позволяет системе достичь высокой пропускной способности и выполняться при очень высоком использовании ЦП (до 90%+) с большой стабильностью.

Тот факт, что рост числа зерен в системе и увеличение нагрузки не приводит к дополнительным потокам или другим примитивам ОС, помогает масштабируемости отдельных узлов и всей системы.

Явный асинхронный

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