Perspektywa platformy Azure Well-Architected Framework w usłudze Azure Event Hubs
Azure Event Hubs to skalowalna usługa przetwarzania zdarzeń, która pozyskiwa i przetwarza duże ilości zdarzeń i danych z małym opóźnieniem i wysoką niezawodnością. Może odbierać i przetwarzać miliony zdarzeń na sekundę. Dane wysyłane do centrum zdarzeń można przekształcać i przechowywać przy użyciu dowolnego dostawcy analizy w czasie rzeczywistym lub kart wsadowych i magazynowych.
Aby uzyskać więcej informacji na temat korzystania z usługi Event Hubs, zapoznaj się z dokumentacją usługi Azure Event Hubs, aby dowiedzieć się, jak używać usługi Event Hubs do pozyskiwania milionów zdarzeń na sekundę z połączonych urządzeń i aplikacji.
Aby zrozumieć sposoby korzystania z usługi Event Hubs, ułatwiają osiągnięcie doskonałości operacyjnej i niezawodności obciążenia, zapoznaj się z następującymi artykułami:
- Monitorowanie usługi Azure Event Hubs
- Strumieniowe przesyłanie danych usługi Azure Diagnostics przy użyciu usługi Event Hubs
- Skalowanie za pomocą usługi Event Hubs
Poniższe sekcje dotyczą usługi Azure Event Hubs z perspektywy dobrze zaprojektowanej struktury:
- Uwagi dotyczące projektowania
- Lista kontrolna konfiguracji
- Zalecane opcje konfiguracji
- Artefakty źródłowe
Uwagi dotyczące projektowania
Usługa Azure Event Hubs zapewnia umowę SLA czasu pracy. Aby uzyskać więcej informacji, zapoznaj się z umową SLA dotyczącą usługi Event Hubs.
Lista kontrolna
Czy skonfigurowano usługę Azure Event Hubs z myślą o doskonałości operacyjnej?
- Utwórz odpowiednio zasady SendOnly i ListenOnly dla wydawcy zdarzeń i odbiorcy.
- Jeśli używasz zestawu SDK do wysyłania zdarzeń do usługi Event Hubs, upewnij się, że wyjątki zgłaszane przez zasady
EventHubsException
ponawiania (lubOperationCancelledException
) są prawidłowo przechwytywane. - W scenariuszach o wysokiej przepływności użyj zdarzeń wsadowych.
- Każdy użytkownik może odczytywać zdarzenia z jednej do maksymalnej liczby partycji obsługiwanych przez jednostkę SKU usługi Event Hubs
- Podczas tworzenia nowych aplikacji użyj (
EventProcessorClient
.NET i Java) lubEventHubConsumerClient
(Python i JavaScript) jako zestawu SDK klienta. - W ramach strategii dostępności i odzyskiwania po awarii w całym rozwiązaniu rozważ włączenie opcji odzyskiwania po awarii geograficznej usługi Event Hubs.
- Jeśli rozwiązanie ma dużą liczbę niezależnych wydawców zdarzeń, rozważ użycie wydawców zdarzeń do szczegółowej kontroli dostępu.
- Nie publikuj zdarzeń w określonej partycji.
- W przypadku częstego publikowania zdarzeń należy użyć protokołu AMQP, jeśli jest to możliwe.
- Liczba partycji odzwierciedla stopień równoległości podrzędnej, którą można osiągnąć.
- Upewnij się, że każda aplikacja używająca używa oddzielnej grupy odbiorców, a tylko jeden aktywny odbiornik na grupę odbiorców.
- W przypadku korzystania z funkcji Przechwytywanie należy dokładnie rozważyć konfigurację przedziału czasu i rozmiaru pliku, szczególnie w przypadku woluminów o małych zdarzeniach.
Zalecenia dotyczące konfiguracji
Podczas konfigurowania usługi Azure Event Hubs należy wziąć pod uwagę następujące zalecenia:
Zalecenie | opis |
---|---|
Jeśli używasz zestawu SDK do wysyłania zdarzeń do usługi Event Hubs, upewnij się, że wyjątki zgłaszane przez zasadyEventHubsException ponawiania (lub OperationCancelledException ) są prawidłowo przechwytywane. |
W przypadku korzystania z programu HTTPS upewnij się, że zaimplementowano prawidłowy wzorzec ponawiania prób. |
W scenariuszach o wysokiej przepływności użyj zdarzeń wsadowych. | Usługa dostarczy tablicę json z wieloma zdarzeniami do subskrybentów, zamiast tablicy z jednym zdarzeniem. Aplikacja zużywana musi przetwarzać te tablice. |
Każdy użytkownik może odczytywać zdarzenia z jednej do maksymalnej liczby partycji obsługiwanych przez jednostkę SKU usługi Event Hubs. | Aby osiągnąć maksymalną skalę po stronie aplikacji zużywanej, każdy odbiorca powinien odczytywać dane z jednej partycji. |
Podczas tworzenia nowych aplikacji użyj ( EventProcessorClient .NET i Java) lub EventHubConsumerClient (Python i JavaScript) jako zestawu SDK klienta. |
EventProcessorHost został przestarzały. |
W ramach strategii dostępności i odzyskiwania po awarii w całym rozwiązaniu rozważ włączenie opcji odzyskiwania po awarii geograficznej usługi Event Hubs. | Ta opcja umożliwia utworzenie pomocniczej przestrzeni nazw w innym regionie. W dowolnym momencie tylko aktywna przestrzeń nazw odbiera komunikaty. Komunikaty i zdarzenia nie są replikowane do regionu pomocniczego. Cel czasu odzyskiwania dla regionalnego trybu failover wynosi do 30 minut. Upewnij się, że cel czasu odzyskiwania jest zgodny z wymaganiami klienta i pasuje do szerszej strategii dostępności. Jeśli wymagany jest wyższy cel czasu odzyskiwania, rozważ zaimplementowanie wzorca trybu failover po stronie klienta. |
Jeśli rozwiązanie ma dużą liczbę niezależnych wydawców zdarzeń, rozważ użycie wydawców zdarzeń do szczegółowej kontroli dostępu. | Wydawcy zdarzeń automatycznie ustawiają klucz partycji na nazwę wydawcy, dlatego ta funkcja powinna być używana tylko wtedy, gdy zdarzenia pochodzą z wszystkich wydawców równomiernie. |
Nie publikuj zdarzeń w określonej partycji. | Jeśli zdarzenia porządkowania są niezbędne, zaimplementuj kolejność podrzędną lub zamiast tego użyj innej usługi obsługi komunikatów. |
W przypadku częstego publikowania zdarzeń należy użyć protokołu AMQP, jeśli jest to możliwe. | Protokół AMQP ma wyższe koszty sieci podczas inicjowania sesji, ale HTTPS wymaga narzutu protokołu TLS dla każdego żądania. Protokół AMQP charakteryzują się wyższą wydajnością dla częstych wydawców. |
Liczba partycji odzwierciedla stopień równoległości podrzędnej, którą można osiągnąć. | Aby uzyskać maksymalną przepływność, użyj maksymalnej liczby partycji obsługiwanych przez jednostkę SKU podczas tworzenia centrum zdarzeń. Zwiększenie liczby partycji umożliwia skalowanie współbieżnych jednostek przetwarzania w celu dopasowania ich do partycji, zapewniając optymalną dostępność wysyłania i odbierania. |
W przypadku korzystania z funkcji Przechwytywanie należy dokładnie rozważyć konfigurację przedziału czasu i rozmiaru pliku, szczególnie w przypadku woluminów o małych zdarzeniach. | Usługa Data Lake Gen2 będzie pobierać opłaty za minimalny rozmiar transakcji. Jeśli ustawisz przedział czasu tak niski, że plik nie osiągnął minimalnego rozmiaru, poniesiesz dodatkowy koszt. |
Artefakty źródłowe
Aby znaleźć przestrzenie nazw usługi Event Hubs z podstawową jednostkę SKU, użyj następującego zapytania:
Resources
| where type == 'microsoft.eventhub/namespaces'
| where sku.name == 'Basic'
| project resourceGroup, name, sku.name