Szkolenie
Moduł
Wprowadzenie do Orleanu - Training
Dowiedz się, czym jest struktura Orleanu, jakie korzyści może zapewnić i jak zintegrować ją z aplikacjami.
Ta przeglądarka nie jest już obsługiwana.
Przejdź na przeglądarkę Microsoft Edge, aby korzystać z najnowszych funkcji, aktualizacji zabezpieczeń i pomocy technicznej.
Orlean v.1.0.0 dodał obsługę rozszerzeń przesyłania strumieniowego do modelu programowania. Rozszerzenia przesyłania strumieniowego zapewniają zestaw abstrakcji i interfejsów API, które sprawiają, że myślenie o strumieniach i praca z nimi jest prostsze i bardziej niezawodne. Rozszerzenia przesyłania strumieniowego umożliwiają deweloperom pisanie reaktywnych aplikacji działających na sekwencji zdarzeń w sposób ustrukturyzowany. Model rozszerzalności dostawców strumieni sprawia, że model programowania jest zgodny z i przenośnym w wielu istniejących technologiach kolejkowania, takich jak Event Hubs, ServiceBus, Azure Queues i Apache Kafka. Nie ma potrzeby pisania specjalnego kodu ani uruchamiania dedykowanych procesów w celu interakcji z takimi kolejkami.
Jeśli znasz już wszystkie informacje o przetwarzaniu strumienia i znasz technologie, takie jak Event Hubs, Kafka, Azure Stream Analytics, Apache Storm, Przesyłanie strumieniowe platformy Apache Spark i reaktywne rozszerzenia (Rx) na platformie .NET, możesz zadać pytanie, dlaczego warto dbać. Dlaczego potrzebujemy jeszcze innego systemu przetwarzania strumieniowego i sposobu, w jaki aktorzy są związani z Strumienie?"Dlaczego Orlean Strumienie?" ma odpowiedzieć na to pytanie.
Istnieje kilka zasad dotyczących modelu programowania orleańskiego Strumienie:
Aplikacje wchodzą w interakcje ze strumieniami przy użyciu metody Orleans.Streams.IAsyncStream<T>, która implementuje Orleans.Streams.IAsyncObserver<T> interfejsy i Orleans.Streams.IAsyncObservable<T> . Te interfejsy API są podobne do dobrze znanych reaktywnych rozszerzeń (Rx) na platformie .NET.
W typowym przykładzie poniżej urządzenie generuje pewne dane, które są wysyłane jako żądanie HTTP do usługi uruchomionej w chmurze. Klient Orleanu uruchomiony na serwerze frontonu odbiera to wywołanie HTTP i publikuje dane w pasującym strumieniu urządzenia:
public async Task OnHttpCall(DeviceEvent deviceEvent)
{
// Post data directly into the device's stream.
IStreamProvider streamProvider =
GrainClient.GetStreamProvider("MyStreamProvider");
IAsyncStream<DeviceEventData> deviceStream =
streamProvider.GetStream<DeviceEventData>(
deviceEvent.DeviceId, "MyNamespace");
await deviceStream.OnNextAsync(deviceEvent.Data);
}
W innym przykładzie poniżej użytkownik czatu (zaimplementowany jako Orleans Grain) dołącza do pokoju rozmów, dostaje uchwyt do strumienia wiadomości czatu generowanych przez wszystkich innych użytkowników w tym pokoju i subskrybuje go. Zwróć uwagę, że użytkownik czatu nie musi wiedzieć o samym ziarnie pokoju rozmów (może nie być takiego ziarna w naszym systemie) ani o innych użytkownikach w tej grupie, którzy generują wiadomości. Nie trzeba powiedzieć, aby opublikować strumień czatu, użytkownicy nie muszą wiedzieć, kto jest obecnie subskrybowany do strumienia. Pokazuje to, jak użytkownicy czatów mogą być całkowicie oddzielone w czasie i przestrzeni.
public class ChatUser: Grain
{
public async Task JoinChat(Guid chatGroupId)
{
IStreamProvider streamProvider =
base.GetStreamProvider("MyStreamProvider");
IAsyncStream<string> chatStream =
streamProvider.GetStream<string>(chatGroupId, "MyNamespace");
await chatStream.SubscribeAsync(
async (message, token) => Console.WriteLine(message))
}
}
Przykład Szybki start to dobry szybki przegląd ogólnego przepływu pracy korzystania ze strumieni w aplikacji. Po przeczytaniu należy przeczytać interfejsy API programowania Strumienie, aby lepiej zrozumieć pojęcia.
Interfejsy API programowania Strumienie zawiera szczegółowy opis interfejsów API programowania.
Strumienie mogą pochodzić za pośrednictwem kanałów fizycznych różnych kształtów i formularzy i mogą mieć różne semantyki. Orleans Streaming jest przeznaczony do wspierania tej różnorodności za pośrednictwem koncepcji dostawców strumienia, który jest punktem rozszerzalności w systemie. Orlean ma obecnie implementacje dwóch dostawców strumieni: oparty na protokole TCP dostawca prostego strumienia komunikatów i dostawca usługi Azure Queue Stream oparty na kolejce platformy Azure. Więcej szczegółów na temat dostawców usługi Stream można znaleźć w artykule Dostawcy usługi Stream.
Semantyka subskrypcji strumienia:
Orlean Strumienie zagwarantować sekwencyjną spójność dla operacji subskrypcji usługi Stream. W szczególności, gdy użytkownik subskrybuje strumień, po Task
pomyślnym rozwiązaniu operacji reprezentowania subskrypcji użytkownik zobaczy wszystkie zdarzenia wygenerowane po jego zasubskrybowaniu. Ponadto strumienie z możliwością przewijania umożliwiają subskrybowanie dowolnego punktu w czasie w przeszłości przy użyciu polecenia StreamSequenceToken. Aby uzyskać więcej informacji, zobacz Dostawcy strumieni Orleanu.
Gwarancje dostarczania zdarzeń pojedynczego strumienia:
Indywidualne gwarancje dostarczania zdarzeń zależą od poszczególnych dostawców strumienia. Niektóre zapewniają tylko najlepsze wysiłki podczas dostarczania maksymalnie raz (na przykład proste komunikaty Strumienie (SMS)), podczas gdy inne zapewniają co najmniej jednokrotne dostarczanie (np. usługa Azure Queue Strumienie). Istnieje nawet możliwość utworzenia dostawcy przesyłania strumieniowego, który gwarantuje dokładnie jednokrotne dostarczanie (nie mamy jeszcze takiego dostawcy, ale istnieje możliwość utworzenia takiego dostawcy).
Kolejność dostarczania zdarzeń:
Kolejność zdarzeń zależy również od określonego dostawcy strumienia. W SMS strumieniach producent jawnie kontroluje kolejność zdarzeń postrzeganych przez konsumenta, kontrolując sposób ich publikowania. Strumienie kolejki platformy Azure nie gwarantują kolejności FIFO, ponieważ bazowe kolejki platformy Azure nie gwarantują kolejności w przypadkach awarii. Aplikacje mogą również kontrolować kolejność dostarczania strumienia przy użyciu polecenia StreamSequenceToken
.
Implementacja Strumienie Orleanu zawiera ogólne omówienie implementacji wewnętrznej.
Więcej przykładów korzystania z interfejsów API przesyłania strumieniowego w ramach ziarna można znaleźć tutaj. Planujemy utworzyć więcej przykładów w przyszłości.
Szkolenie
Moduł
Wprowadzenie do Orleanu - Training
Dowiedz się, czym jest struktura Orleanu, jakie korzyści może zapewnić i jak zintegrować ją z aplikacjami.