Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Orleans потоковая передача — это функция Orleans платформы, которая позволяет разработчикам создавать реактивные приложения, которые работают на последовательности событий структурированным образом. Orleans потоковая передача предоставляет набор абстракций и API, которые позволяют думать о потоках и работать с ними проще и надежнее. Поток — это логическая сущность, которая всегда существует и никогда не испытывает сбоя. Потоки идентифицируются по их StreamId. Потоки позволяют отделить создание данных от обработки как во времени, так и в пространстве. Потоки работают равномерно между зернами и Orleans клиентами и могут быть совместимы с и переносимыми в широком спектре существующих технологий очередей, таких как Центры событий, ServiceBus, Очереди Azure и Apache Kafka. Orleans потоковая передача также поддерживает динамические привязки потоков, прозрачное управление жизненным циклом потребления потоков и расширяемые поставщики потоков.
Orleans Версия 1.0.0.0 добавила поддержку расширений потоковой передачи в модель программирования. Модули потоковой передачи предоставляют набор абстракций и API, которые делают мышление и работу с потоками проще и надежнее. Расширения потоковой передачи позволяют разработчикам создавать реактивные приложения, которые работают на последовательности событий структурированным образом. Модель расширяемости поставщиков потоков обеспечивает совместимость модели программирования с широким спектром существующих технологий очереди, таких как Центры событий, ServiceBus, Очереди Azure и Apache Kafka. Нет необходимости писать специальный код или запускать выделенные процессы для взаимодействия с такими очередями.
Почему я должен заботиться?
Если вы уже знаете все о потоковой обработке и знакомы с такими технологиями, как Центры событий, Kafka, Azure Stream Analytics, Apache Storm, Apache Spark Streaming и реактивные расширения (Rx) в .NET, вы можете спросить, почему вы должны заботиться. Почему нам нужна еще одна система обработки потоков и как субъекты связаны с Потоками?"Почему Orleans Потоки?" предназначен для ответа на этот вопрос.
Модель программирования
Существует несколько принципов, лежащих в основе Orleans модели программирования потоков:
- Orleans потоки являются виртуальными. То есть поток всегда существует. Он не создается явно или уничтожается, и никогда не выйдет из строя.
- Потоки определяются идентификаторами потоков, которые являются только логическими именами , состоящими из идентификаторов GUID и строк.
- Orleans Потоки позволяют отделить создание данных от его обработки как во времени, так и в пространстве. Это означает, что производитель потока и потребитель потока могут находиться на разных серверах или в разных часовых поясах и выдержать сбои.
- Orleans потоки являются легковесными и динамическими. Orleans Среда выполнения потоковой передачи предназначена для обработки большого количества потоков, которые приходят и идут с высокой скоростью.
- Orleans Привязки потоков являются динамическими. Orleans Среда выполнения потоковой передачи предназначена для обработки случаев, когда зерна подключаются и отключают от потоков с высокой скоростью.
- Orleans Среда выполнения потоковой передачи данных прозрачно управляет жизненным циклом потребления данных потоков. После того как приложение подпишется на поток, оно будет получать события этого потока, даже в случае сбоев.
- Orleans потоки работают равномерно между зернами и Orleans клиентами.
Пример быстрого запуска
Пример быстрого запуска — это хороший краткий обзор общего рабочего процесса использования потоков в приложении. После его чтения необходимо прочитать API программирования потоков , чтобы получить более глубокое представление о понятиях.
Поставщики потоков
Потоки могут поступать через физические каналы различных фигур и форм и могут иметь разные семантики. Orleans Стриминг предназначен для поддержки этого разнообразия через концепцию поставщиков потоков, которая является точкой расширяемости в системе.
Orleans предоставляет несколько реализаций поставщика потоков:
Orleans В настоящее время включает несколько реализаций поставщика:
- Простое сообщение (SMS), которое использует прямые вызовы сущностей и не имеет резервной системы хранения,
- Очереди Azure, которые используют очереди службы хранилища Azure для хранения сообщений и
- Azure EventHubs, использующий Azure EventHubs
Дополнительные сведения см. в разделе "Поставщики потоков".
Семантика потока
Семантика подписки на поток:
Orleans Потоки гарантируют последовательную согласованность для операций подписки Stream. В частности, когда потребитель подписывается на поток, после Task успешного разрешения операции подписки потребитель увидит все события, созданные после его подписки. Кроме того, перематываемые потоки позволяют подписываться с любой произвольной точки времени в прошлом с помощью StreamSequenceToken. Дополнительные сведения см. в разделе Orleans "Поставщики потоков".
Гарантии доставки событий отдельных потоков:
Гарантии доставки отдельных событий зависят от отдельных поставщиков потоков. Некоторые из них обеспечивают только наиболее разовую доставку (например, простые потоки сообщений (SMS) в версиях Orleans до 7.0, после чего называется широковещательный канал), а другие предоставляют по крайней мере один раз доставку (например, Потоки очередей Azure). Возможно даже создать провайдера потоковой передачи, который гарантирует точно однократную доставку.
Порядок доставки событий:
Порядок событий также зависит от конкретного поставщика потоков. В потоках SMS производитель явно управляет порядком событий, видимых потребителем, контролируя способ их публикации. Потоки очередей Azure не гарантируют порядок FIFO, так как базовые очереди Azure не гарантируют порядок в случаях сбоя. Приложения также могут управлять порядком доставки потоков с помощью StreamSequenceToken.
Реализация потоков
Реализация Orleans Streams предоставляет общий обзор внутренней реализации.
Примеры кода
Вы можете найти дополнительные примеры использования потоковых API в гране в файле SampleStreamingGrain.cs.