Оқиға
AI бағдарламалары мен агенттерін құру
Mar 17, 9 PM - Mar 21, 10 AM
Нақты пайдалану жағдайлары негізінде масштабты ИСК шешімдерін құру үшін стипендиаттармен және сарапшылармен кездесу сериясына қосылыңыз.
Қазір тіркелуБұл браузерге бұдан былай қолдау көрсетілмейді.
Соңғы мүмкіндіктерді, қауіпсіздік жаңартуларын және техникалық қолдауды пайдалану үшін Microsoft Edge браузеріне жаңартыңыз.
Orleans:
Orleans основан на актёрной модели. Модель акторов возникла в начале 1970-х годов и в настоящее время является основным компонентом Orleans. Модель субъекта — это модель программирования, в которой каждый субъект является упрощенным, параллельным, неизменяемым объектом, который инкапсулирует часть состояния и соответствующее поведение. Субъекты взаимодействуют исключительно друг с другом с помощью асинхронных сообщений. Orleans, в частности, изобрел абстракцию Виртуального Актера, в рамках которой актеры существуют постоянно.
Ескерім
Субъекты — это чисто логические сущности, которые всегда существуют практически. Субъект не может быть явно создан или уничтожен, и его виртуальное существование не влияет на сбой сервера, выполняющего его. Так как субъекты всегда существуют, они всегда доступны для решения.
Это новый подход к созданию нового поколения распределенных приложений для эпохи облака. Модель программирования Orleans усложняет сложность, присущую распределенных приложений с высокой степенью параллелизма, без ограничения возможностей или введения ограничений для разработчика.
Дополнительные сведения см. в статье Orleans: виртуальные актёры с помощью Microsoft Research. Виртуальный актёр представлен как зерно Orleans.
Зерно является одним из нескольких Orleans примитивов. С точки зрения модели актора, зёрна — это виртуальные акторы. Основной фундаментальный блок в любом приложении Orleans — это . Зерна — это сущности, состоящие из идентичности, поведения и состояния, определяемых пользователем. Рассмотрим следующее визуальное представление зерна:
Идентификаторы зерен — это определяемые пользователем ключи, которые делают зерна всегда доступными для вызова. Зерна могут вызываться другими зернами или любым количеством внешних клиентов. Каждое зерно — это экземпляр класса, реализующего один или несколько следующих интерфейсов:
Guid
.Int64
.string
.У зерен могут быть переменные или постоянные данные состояния, которые могут храниться в любой системе хранения. Таким образом, акторы неявно разделяют состояния приложения, обеспечивая автоматическую масштабируемость и упрощая восстановление после сбоев. Состояние зерна хранится в памяти во время активности зерна, что приводит к снижению задержки и меньшей нагрузке на хранилища данных.
Создание экземпляров зерна выполняется автоматически по запросу средой выполнения Orleans. Зерна, которые не используются в течение некоторого времени, автоматически удаляются из памяти для освобождения ресурсов. Это возможно благодаря их стабильной идентичности, что позволяет вызывать зерна независимо от того, загружены они в память или нет. Это также обеспечивает прозрачное восстановление после сбоя, так как вызывающий объект не должен знать, на каком сервере в любой момент создается экземпляр grain. Зерна имеют управляемый жизненный цикл: среда выполнения Orleans отвечает за активацию и деактивацию, а также за размещение и нахождение зерен по мере необходимости. Это позволяет разработчику писать код так, как будто все "grains" всегда находятся в оперативной памяти.
Сило является еще одним примером Orleans примитива. Сило размещает один или несколько зерен. Среда выполнения Orleans — это реализация модели программирования для приложений.
Как правило, группа силосов работает как кластер для масштабируемости и отказоустойчивости. При запуске в качестве кластера силосы координируются друг с другом для распределения работы и обнаружения и восстановления после сбоев. Среда выполнения позволяет зернам, размещенным в кластере, взаимодействовать друг с другом, как если бы они находятся в одном процессе. Чтобы визуализировать связь между кластерами, силосами и зернами, рассмотрим следующую схему:
На предыдущей схеме показана связь между кластерами, силосами и зернами. Вы можете иметь любое количество кластеров, каждый кластер имеет один или несколько силосов, и каждый из них имеет один или несколько зерен.
Помимо основной модели программирования, силосы предоставляют зернам набор служб среды выполнения, таких как таймеры, напоминания (персистентные таймеры), сохранение данных, транзакции, потоки данных и многое другое. Дополнительные сведения см. в разделе Что можно сделать с помощью Orleans?.
Веб-приложения и другие внешние клиенты вызывают grains в кластере с помощью клиентской библиотеки, которая автоматически управляет сетевым взаимодействием. Клиенты также могут размещаться совместно в одном процессе с силосами для простоты.
Orleans — это платформа для создания облачных приложений и должна рассматриваться всякий раз, когда вы создаете приложения .NET, которые в конечном итоге должны масштабироваться. Есть, казалось бы, бесконечные способы использования Orleans, но ниже приведены некоторые из наиболее распространенных способов: приложения для игр, банковские приложения, чат приложения, GPS отслеживание, торговля акциями, корзины покупок, приложения голосования и многое другое. Orleans используется Microsoft в Azure, Xbox, Skype, Halo, PlayFab, Gears of War и многих других внутренних службах. Orleans имеет множество функций, которые упрощают использование для различных приложений.
Orleans предоставляет простую модель сохраняемости, которая гарантирует доступность состояния перед обработкой запроса и сохранение ее согласованности. У зерен может быть несколько именованных объектов постоянных данных. Например, для профиля пользователя может существовать один, называемый "профиль", и может существовать другой, называемый "инвентарь", для их инвентаря. Это состояние можно хранить в любой системе хранения.
Во время выполнения грейна состояние хранится в памяти, чтобы запросы на чтение могут выполняться без доступа к хранилищу. При обновлении состояния зерна вызов IStorage.WriteStateAsync гарантирует, что резервное хранилище обновляется для обеспечения надежности и согласованности.
Дополнительные сведения см. в сохраняемости зерна.
Напоминания — это устойчивый механизм планирования для зерен. Их можно использовать для обеспечения завершения некоторых действий в будущем, даже если в настоящее время зерно не активируется. Таймеры являются ненадежным аналогом напоминаний и могут использоваться для событий высокой частоты, которые не требуют надежности.
Более подробную информацию см. в разделе Таймеры и напоминания.
При активации зерна в Orleansсреда выполнения решает, на каком сервере (silo) будет активировано это зерно. Это называется размещением зерна.
Процесс размещения в Orleans полностью настраивается. Разработчики могут выбирать из набора встроенных политик размещения, таких как случайный, предпочитаемый для локального и основанный на нагрузке, или можно настроить собственную логику. Это обеспечивает полную гибкость при выборе того, где создаются зерна. Например, зерна можно разместить на сервере рядом с ресурсами, с которыми они должны работать или с другими зернами, с которыми они взаимодействуют.
Дополнительные сведения см. в разделе Размещение зерна.
Обновление производственных систем таким образом, чтобы безопасно учитывать изменения, может быть сложной задачей, особенно в системах с отслеживанием состояния. Чтобы учесть это, интерфейсы Orleans можно версионировать.
Кластер поддерживает сопоставление, какие имплементации зерна доступны на каких силосах в кластере и их версии. Эта версия информации используется средой выполнения в сочетании с стратегиями размещения для принятия решений о размещении при маршрутизации вызовов к зернам. Кроме того, это решение позволяет безопасно обновлять версии зерна и поддерживает работу разнородных кластеров, где разные силосы могут иметь различные наборы реализаций зерен.
Дополнительные сведения см. в Версионирование Grain.
Бесстатусные рабочие — это особо помеченные зерна, которые не имеют связанного состояния и могут быть активированы в нескольких силосах одновременно. Это позволяет увеличить параллелизм для функций без отслеживания состояния.
Для получения дополнительной информации см. безсостояточные рабочие зерна.
Логика зернового фильтра вызовов часто используется для многих зерен. Orleans поддерживает фильтры для входящих и исходящих вызовов. Фильтры для авторизации, ведения журнала и телеметрии и обработки ошибок считаются общими.
Метаданные и другие сведения можно передать с рядом запросов с помощью контекста запроса . Контекст запроса можно использовать для хранения информации о распределенной трассировке или любых других пользовательских значений.
Помимо простой модели сохраняемости, описанной выше, зерна могут иметь транзакционное состояние. Несколько зерен могут участвовать в ACID транзакций вместе независимо от того, где их состояние в конечном итоге хранится. Транзакции в Orleans распределены и децентрализованы (нет центрального диспетчера транзакций или координатора транзакций) и имеют сериализуемую изоляцию.
Дополнительные сведения о транзакциях см. в транзакции.
Потоки помогают разработчикам обрабатывать ряд элементов данных практически в режиме реального времени. Потоки Orleans управляются ; потоки не нужно создавать или регистрировать перед тем, как зерно или клиент опубликует данные или подпишется на поток. Это позволяет увеличить разделение производителей потоков и потребителей друг от друга и инфраструктуры.
Потоковая обработка надежна: зерна могут хранить контрольные точки (курсоры) и восстанавливаться до хранимой контрольной точки во время активации или в любое последующее время. Потоки поддерживают пакетную доставку сообщений потребителям для повышения эффективности и производительности восстановления.
Потоки поддерживаются службами очередей, такими как Центры событий Azure, Amazon Kinesis и другие.
Произвольное количество потоков может быть мультиплексировано на меньшее количество очередей, а ответственность за обработку этих очередей распределяется равномерно по всему кластеру.
Если вас интересует вводное видео о Orleans, посмотрите следующую видеозапись:
Руководство по . Создание минимального Orleans приложения
.NET кері байланысы
.NET — бастапқы коды ашық жоба. Пікір қалдыру үшін сілтемені таңдаңыз:
Оқиға
AI бағдарламалары мен агенттерін құру
Mar 17, 9 PM - Mar 21, 10 AM
Нақты пайдалану жағдайлары негізінде масштабты ИСК шешімдерін құру үшін стипендиаттармен және сарапшылармен кездесу сериясына қосылыңыз.
Қазір тіркелуОқыту
Модуль
Общие сведения об Orleans - Training
Узнайте, что такое платформа Orleans, какие преимущества она может предоставить и как ее можно интегрировать с приложениями.