Udostępnij za pośrednictwem


Skalowanie za pomocą usługi Event Hubs

Istnieją dwa czynniki wpływające na skalowanie za pomocą usługi Event Hubs.

  • Jednostki przepływności (warstwa Standardowa) lub jednostki przetwarzania (warstwa Premium)
  • Partycje

Jednostki przepływności

Przepływność centrów zdarzeń jest kontrolowana przez jednostki przepływności. Jednostki przepustowości to wcześniej zakupione jednostki pojemności. Pojedyncza jednostka przepływności umożliwia:

  • Ruch przychodzący: maksymalnie 1 MB na sekundę lub 1000 zdarzeń na sekundę (w zależności od tego, co nastąpi wcześniej).
  • Ruch wychodzący: do 2 MB na sekundę lub 4096 zdarzeń na sekundę.

Poza pojemnością zakupionych jednostek przepływności ruch przychodzący jest ograniczany, a usługa Event Hubs zgłasza wyjątek EventHubsException (z wartością Przyczyna usługi ServiceBusy). Ruch wychodzący nie generuje wyjątków ograniczania przepustowości, ale jest nadal ograniczony do pojemności zakupionych jednostek przepływności. Jeśli wystąpią wyjątki dotyczące stawki publikacji lub oczekujesz większego ruchu wychodzącego, upewnij się, że sprawdziłeś, ile jednostek przepływności zakupiłeś dla przestrzeni nazw. Możesz zarządzać jednostkami przepływności na stronie Skalowanie przestrzeni nazw w portalu Azure. Możesz również zarządzać jednostkami przepływności programowo przy użyciu interfejsu API usługi Event Hubs.

Jednostki przepustowości są kupowane z wyprzedzeniem i rozliczane na godzinę. Po zakupieniu jednostki przepływności są rozliczane za co najmniej jedną godzinę. Można kupić do 40 jednostek przepływności dla przestrzeni nazw Event Hubs, które będą współużytkowane przez wszystkie centra zdarzeń wewnątrz tej przestrzeni nazw. Łączna pojemność ruchu przychodzącego i wychodzącego tych jednostek przepływności jest również współdzielona między wszystkimi partycjami i użytkownikami w każdym centrum zdarzeń, co oznacza, że wielu użytkowników odczytu z tej samej partycji musi współdzielić dostępną przepustowość.

Funkcja automatycznego zwiększania przepływności usługi Event Hubs automatycznie skaluje się przez zwiększenie liczby jednostek przepływności, aby sprostać potrzebom użytkowania. Zwiększanie liczby jednostek przepływności zapobiega scenariuszom ograniczania przepustowości, w których:

  • Współczynniki ruchu przychodzącego danych przekraczają ustawione jednostki przepływności.
  • Współczynniki żądań wychodzących danych przekraczają ustawione jednostki przepływności.

Usługa Event Hubs zwiększa przepływność, gdy obciążenie rośnie ponad minimalny próg, bez niepowodzeń żądań z powodu błędów ServerBusy.

Aby uzyskać więcej informacji na temat funkcji autoinflate, zobacz Automatyczne skalowanie jednostek przepływności.

Jednostki przetwarzania

Usługa Event Hubs Premium zapewnia lepszą wydajność i lepszą izolację w zarządzanym wielodostępnym środowisku PaaS. Zasoby w warstwie Premium są izolowane na poziomie CPU i pamięci, dzięki czemu każde obciążenie tenanta działa w izolacji. Ten kontener zasobów jest nazywany jednostką przetwarzania (PU). Możesz kupić 1, 2, 4, 6, 8, 10, 12 lub 16 jednostek przetwarzania dla każdej przestrzeni nazw usługi Event Hubs Premium.

Na to, ile danych można pozyskiwać i przesyłać strumieniowo za pomocą jednostki przetwarzania, wpływają różne czynniki, takie jak źródła danych, odbiorcy, szybkość wprowadzania i przetwarzania danych oraz wiele innych.

Na przykład przestrzeń nazw usługi Event Hubs Premium z jednym PU i jednym centrum zdarzeń (100 partycji) może oferować podstawową pojemność około 5–10 MB/s dla ruchu przychodzącego i 10–20 MB/s dla ruchu wychodzącego dla obciążeń AMQP lub Kafka.

Aby dowiedzieć się więcej o konfigurowaniu jednostek PU dla przestrzeni nazw warstwy Premium, zobacz Konfigurowanie jednostek przetwarzania.

Uwaga

Aby dowiedzieć się więcej o kwotach i limitach, zobacz Azure Event Hubs — kwoty i limity.

Partycje

Usługa Event Hubs organizuje sekwencje zdarzeń, które są wysyłane do centrum zdarzeń, w jedną lub więcej partycji. Po nadejściu nowszych zdarzeń są one dodawane na końcu tej sekwencji.

Obraz przedstawiający centrum zdarzeń z kilkoma partycjami.

Partycję można traktować jako dziennik zatwierdzeń. Partycje przechowują dane zdarzeń zawierające następujące informacje:

  • Treść zdarzenia
  • Pakiet właściwości zdefiniowany przez użytkownika opisujący zdarzenie
  • Metadane, takie jak przesunięcie w partycji, jego liczba w sekwencji strumienia
  • Sygnatura czasowa po stronie serwera, kiedy została zaakceptowana

Diagram przedstawiający starszą i nowszą sekwencję zdarzeń.

Zalety korzystania z partycji

Usługa Event Hubs została zaprojektowana w celu ułatwienia przetwarzania dużych ilości zdarzeń, a partycjonowanie pomaga w tym na dwa sposoby:

  • Mimo że usługa Event Hubs jest usługą PaaS, poniżej znajduje się rzeczywistość fizyczna. Utrzymywanie dziennika, który zachowuje kolejność zdarzeń, wymaga, aby te zdarzenia były przechowywane razem w magazynie bazowym i jego replikach, co powoduje pułap przepływności dla takiego dziennika. Partycjonowanie umożliwia użycie wielu równoległych logów dla tego samego centrum wydarzeń, co pozwala na zwiększenie dostępnej przepływności danych RAW (we/wy) poprzez zwielokrotnienie jej pojemności.
  • Twoje aplikacje muszą być w stanie nadążyć za przetwarzaniem liczby zdarzeń wysyłanych do centrum zdarzeń. Może to być złożone i wymaga znacznej, skalowanej w poziomie pojemności przetwarzania równoległego. Pojemność pojedynczego procesu do obsługi zdarzeń jest ograniczona, więc potrzebujesz kilku procesów. Partycje są sposobem, w jaki rozwiązanie zasila te procesy, a jednocześnie zapewnia, że każde zdarzenie ma wyraźnie określoną osobę odpowiedzialną za przetwarzanie.

Liczba partycji

Liczba partycji jest określana w momencie tworzenia centrum zdarzeń. Musi zawierać się między jedną a maksymalną dozwoloną liczbą partycji dla każdej warstwy cenowej. Aby uzyskać limit liczby partycji dla każdej warstwy, zobacz ten artykuł.

Zalecamy wybranie co najmniej tylu partycji, ile będzie potrzebnych podczas szczytowego obciążenia aplikacji w tym konkretnym centrum zdarzeń. W przypadku warstw innych niż warstwy premium i dedykowane nie można zmienić liczby partycji dla centrum zdarzeń po jego utworzeniu. W przypadku centrum zdarzeń w warstwie Premium lub dedykowanej można zwiększyć liczbę partycji po jego utworzeniu, ale nie można ich zmniejszyć. Rozkład strumieni między partycjami zmieni się w momencie, gdy zmianie ulegnie mapowanie kluczy partycji do partycji, dlatego należy dołożyć wszelkich starań, aby uniknąć takich zmian, jeśli w aplikacji ma znaczenie względny porządek zdarzeń.

Ustawienie liczby partycji na maksymalną dozwoloną wartość jest kuszące, ale należy pamiętać, że strumienie zdarzeń muszą być ustrukturyzowane tak, aby rzeczywiście można było korzystać z wielu partycji. Jeśli potrzebujesz bezwzględnego zachowania porządku we wszystkich zdarzeniach lub tylko kilku podstreamach, możesz nie być w stanie skorzystać z wielu partycji. Ponadto wiele partycji sprawia, że strona przetwarzania jest bardziej złożona.

Nie ma znaczenia, ile partycji znajduje się w centrum zdarzeń, jeśli chodzi o koszty. Zależy to od liczby jednostek cenowych (jednostek przepływności (TU) dla warstwy Standardowa, jednostek przetwarzania (PU) dla warstwy Premium oraz jednostek pojemności (CU) dla dedykowanej warstwy) dla przestrzeni nazw lub dedykowanego klastra. Na przykład centrum zdarzeń warstwy standardowej z 32 partycjami lub z jedną partycją wiąże się z tym samym kosztem, gdy przestrzeń nazw jest ustawiona na jedną jednostkę przepustowości (TU). Ponadto można skalować jednostki TU lub jednostki PU w przestrzeni nazw lub jednostki CU dedykowanego klastra, niezależnie od liczby partycji.

Partycja jest mechanizmem organizacji danych, który umożliwia równoległe publikowanie i konsumowanie. Chociaż system wspiera przetwarzanie równoległe i skalowanie, całkowita pojemność pozostaje ograniczona przez przydział skalowania w przestrzeni nazwowej. Zalecamy równoważenie jednostek skalowania (jednostek przepływności dla warstwy Standardowa, jednostek przetwarzania dla warstwy Premium lub jednostek pojemności dla warstwy dedykowanej) i partycji w celu uzyskania optymalnej skali. Ogólnie rzecz biorąc, zalecamy maksymalną przepływność wynoszącą 1 MB/s na partycję. W związku z tym ogólną zasadą do obliczenia liczby partycji jest podzielenie maksymalnej oczekiwanej przepływności przez 1 MB/s. Jeśli na przykład przypadek użycia wymaga 20 MB/s, zalecamy wybranie co najmniej 20 partycji w celu uzyskania optymalnej przepływności.

Jeśli jednak masz model, w którym aplikacja ma koligację z określoną partycją, zwiększenie liczby partycji nie jest korzystne. Aby uzyskać więcej informacji, zobacz dostępność i spójność.

Przypisanie zdarzeń do partycji

Klucz partycji służy do mapowania danych zdarzeń przychodzących na określone partycje na potrzeby organizowania danych. Klucz partycji to wartość podawana przez nadawcę przekazywana do centrum zdarzeń. Jest ona przetwarzana za pomocą statycznej funkcji haszującej, która tworzy przypisanie partycji. Jeśli nie określisz klucza partycji podczas publikowania zdarzenia, używany jest przydział według kolejkowania okrężnego.

Wydawca zdarzeń ma informacje tylko o kluczu partycji, a nie o partycji, do której publikowane są zdarzenia. To oddzielenie klucza od partycji powoduje, że nadawca nie musi wiedzieć zbyt dużo o przetwarzaniu podrzędnym. Unikatowa tożsamość urządzenia lub użytkownika stanowi dobry klucz partycji, ale inne atrybuty, takie jak lokalizacja geograficzna, mogą również zostać użyte do grupowania powiązanych zdarzeń w jedną partycję.

Określenie klucza partycji umożliwia zachowanie powiązanych zdarzeń w tej samej partycji i w dokładnej kolejności, w jakiej dotarły. Klucz partycji to ciąg znaków pochodzący z kontekstu aplikacji, który identyfikuje wzajemne powiązania zdarzeń. Sekwencja zdarzeń zidentyfikowanych przez klucz partycji jest strumieniem. Partycja jest multipleksowym przechowywaniem dzienników zdarzeń dla wielu takich strumieni.

Uwaga

Chociaż zdarzenia można wysyłać bezpośrednio do partycji, nie zalecamy tego, zwłaszcza gdy wysoka dostępność jest dla Ciebie ważna. Obniża dostępność centrum zdarzeń do poziomu partycji. Aby uzyskać więcej informacji, zobacz Dostępność i spójność.

Następujące linki pozwalają dowiedzieć się więcej na temat usługi Event Hubs: