Dynamiczne dodawanie partycji do centrum zdarzeń (temat platformy Apache Kafka)

Usługa Event Hubs udostępnia funkcję transmisji strumieniowej komunikatów za pośrednictwem partycjonowanego wzorca odbiorców, w ramach którego każdy odbiorca odczytuje tylko konkretny podzbiór (partycję) strumienia komunikatów. Ten wzorzec umożliwia skalowanie w poziomie przetwarzania zdarzeń oraz udostępnia inne funkcje dotyczące strumienia, które są niedostępne w przypadku kolejek i tematów. Partycja to uporządkowana sekwencja zdarzeń przechowywana w centrum zdarzeń. Po nadejściu nowszych zdarzeń są one dodawane na końcu tej sekwencji. Aby uzyskać więcej informacji o partycjach w ogóle, zobacz Partitions (Partycje)

Liczbę partycji można określić podczas tworzenia centrum zdarzeń. W niektórych scenariuszach może być konieczne dodanie partycji po utworzeniu centrum zdarzeń. W tym artykule opisano sposób dynamicznego dodawania partycji do istniejącego centrum zdarzeń.

Ważne

Dynamiczne dodatki partycji są dostępne tylko w warstwach Premium i dedykowanych usługi Event Hubs.

Uwaga

W przypadku klientów platformy Apache Kafka centrum zdarzeń mapuje się na temat platformy Kafka. Aby uzyskać więcej mapowań między usługami Azure Event Hubs i Apache Kafka, zobacz Mapowanie koncepcyjne platformy Kafka i usługi Event Hubs

Aktualizowanie liczby partycji

W tej sekcji pokazano, jak zaktualizować liczbę partycji centrum zdarzeń na różne sposoby (program PowerShell, interfejs wiersza polecenia itd.).

PowerShell

Użyj polecenia Set-AzEventHub programu PowerShell, aby zaktualizować partycje w centrum zdarzeń.

Set-AzEventHub -ResourceGroupName MyResourceGroupName -Namespace MyNamespaceName -Name MyEventHubName -partitionCount 12

Interfejs wiersza polecenia

Użyj polecenia interfejsu az eventhubs eventhub update wiersza polecenia, aby zaktualizować partycje w centrum zdarzeń.

az eventhubs eventhub update --resource-group MyResourceGroupName --namespace-name MyNamespaceName --name MyEventHubName --partition-count 12

Szablon usługi Resource Manager

Zaktualizuj wartość partitionCount właściwości w szablonie usługi Resource Manager i ponownie wdróż szablon, aby zaktualizować zasób.

    {
        "apiVersion": "2017-04-01",
        "type": "Microsoft.EventHub/namespaces/eventhubs",
        "name": "[concat(parameters('namespaceName'), '/', parameters('eventHubName'))]",
        "location": "[parameters('location')]",
        "dependsOn": [
            "[resourceId('Microsoft.EventHub/namespaces', parameters('namespaceName'))]"
        ],
        "properties": {
            "messageRetentionInDays": 7,
            "partitionCount": 12
        }
    }

Apache Kafka

Użyj interfejsu API (na przykład za pośrednictwem narzędzia interfejsu AlterTopics wiersza polecenia platformy kafka-topics), aby zwiększyć liczbę partycji. Aby uzyskać szczegółowe informacje, zobacz Modyfikowanie tematów platformy Kafka.

Klienci usługi Event Hubs

Przyjrzyjmy się, jak zachowują się klienci usługi Event Hubs, gdy liczba partycji jest aktualizowana w centrum zdarzeń.

Po dodaniu partycji do istniejącego centrum parzystego klient centrum zdarzeń otrzymuje element MessagingException z usługi informujący klientów, że metadane jednostki (jednostka jest centrum zdarzeń, a metadane są informacjami o partycji) zostały zmienione. Klienci będą automatycznie ponownie otwierać łącza protokołu AMQP, co spowoduje odebranie zmienionych informacji o metadanych. Klienci działają normalnie.

Klienci nadawcy/producenta

Usługa Event Hubs udostępnia trzy opcje nadawcy:

  • Nadawca partycji — w tym scenariuszu klienci wysyłają zdarzenia bezpośrednio do partycji. Mimo że partycje są możliwe do zidentyfikowania i zdarzenia mogą być wysyłane bezpośrednio do nich, nie zalecamy tego wzorca. Dodawanie partycji nie ma wpływu na ten scenariusz. Zalecamy ponowne uruchomienie aplikacji, aby mogły wykrywać nowo dodane partycje.
  • Nadawca klucza partycji — w tym scenariuszu klienci wysyłają zdarzenia z kluczem, tak aby wszystkie zdarzenia należące do tego klucza trafiały do tej samej partycji. W takim przypadku usługa skrótuje klucz i kieruje je do odpowiedniej partycji. Aktualizacja liczby partycji może powodować problemy z brakiem kolejności z powodu zmiany skrótu. Dlatego jeśli chcesz uporządkować, upewnij się, że aplikacja korzysta ze wszystkich zdarzeń z istniejących partycji przed zwiększeniem liczby partycji.
  • Nadawca okrężny (wartość domyślna) — w tym scenariuszu usługa Event Hubs zaokrągla zdarzenia między partycjami, a także używa algorytmu równoważenia obciążenia. Usługa Event Hubs uwzględnia zmiany liczby partycji i będzie wysyłać do nowych partycji w ciągu kilku sekund od zmiany liczby partycji.

Klienci odbiorcy/odbiorcy

Usługa Event Hubs udostępnia odbiorniki bezpośrednie i łatwą bibliotekę odbiorców o nazwie Procesor zdarzeń.

  • Odbiorniki bezpośrednie — odbiorniki bezpośrednie nasłuchują określonych partycji. Nie ma to wpływu na ich zachowanie w czasie wykonywania, gdy partycje są skalowane w poziomie dla centrum zdarzeń. Aplikacja korzystająca z bezpośrednich odbiorników musi dbać o pobieranie nowych partycji i odpowiednio przypisywanie odbiorników.

  • Host procesora zdarzeń — ten klient nie odświeża automatycznie metadanych jednostki. W związku z tym nie będzie on pobierany w przypadku zwiększenia liczby partycji. Ponowne utworzenie wystąpienia procesora zdarzeń spowoduje pobranie metadanych jednostki, co z kolei spowoduje utworzenie nowych obiektów blob dla nowo dodanych partycji. Nie będzie to miało wpływu na istniejące obiekty blob. Ponowne uruchomienie wszystkich wystąpień procesora zdarzeń jest zalecane, aby upewnić się, że wszystkie wystąpienia są świadome nowo dodanych partycji, a równoważenie obciążenia jest obsługiwane poprawnie wśród użytkowników.

    Jeśli używasz starej wersji zestawu .NET SDK (WindowsAzure.ServiceBus), host procesora zdarzeń usuwa istniejący punkt kontrolny po ponownym uruchomieniu, jeśli liczba partycji w punkcie kontrolnym nie jest zgodna z liczbą partycji pobraną z usługi. To zachowanie może mieć wpływ na aplikację.

    30 września 2026 r. wycofamy biblioteki zestawu SDK usługi Azure Service Bus WindowsAzure.ServiceBus, Microsoft.Azure.ServiceBus i com.microsoft.azure.servicebus, które nie są zgodne z wytycznymi dotyczącymi zestawu Azure SDK. Zakończymy również obsługę protokołu SBMP, więc nie będzie można już używać tego protokołu po 30 września 2026 r. Przeprowadź migrację do najnowszych bibliotek zestawu Azure SDK, które oferują krytyczne aktualizacje zabezpieczeń i ulepszone możliwości przed tą datą.

    Mimo że starsze biblioteki mogą być nadal używane poza 30 września 2026 r., nie będą już otrzymywać oficjalnej pomocy technicznej i aktualizacji od firmy Microsoft. Aby uzyskać więcej informacji, zobacz ogłoszenie o wycofaniu pomocy technicznej.

Klienci platformy Apache Kafka

W tej sekcji opisano, jak klienci platformy Apache Kafka korzystający z punktu końcowego platformy Kafka usługi Azure Event Hubs zachowują się po zaktualizowaniu liczby partycji dla centrum zdarzeń.

Klienci platformy Kafka korzystający z usługi Event Hubs z protokołem Apache Kafka zachowują się inaczej niż klienci centrum zdarzeń korzystający z protokołu AMQP. Klienci platformy Kafka aktualizują swoje metadane co metadata.max.age.ms milisekundy. Tę wartość należy określić w konfiguracjach klienta. Biblioteki librdkafka używają również tej samej konfiguracji. Aktualizacje metadanych informują klientów o zmianach usługi, w tym wzrost liczby partycji. Aby uzyskać listę konfiguracji, zobacz Apache Kafka configurations for Event Hubs (Konfiguracje platformy Apache Kafka dla usługi Event Hubs).

Klienci nadawcy/producenta

Producenci zawsze określają, że żądania wysyłania zawierają lokalizację docelową partycji dla każdego zestawu utworzonych rekordów. Dlatego wszystkie tworzenie partycjonowania odbywa się po stronie klienta z widokiem producenta metadanych brokera. Po dodaniu nowych partycji do widoku metadanych producenta będą one dostępne dla żądań producenta.

Klienci odbiorcy/odbiorcy

Gdy członek grupy odbiorców wykonuje odświeżanie metadanych i pobiera nowo utworzone partycje, ten element członkowski inicjuje ponowne równoważenie grupy. Następnie metadane konsumentów zostaną odświeżone dla wszystkich członków grupy, a nowe partycje zostaną przypisane przez przydzielonego lidera ponownego równoważenia.

Zalecenia

  • Jeśli używasz klucza partycji z aplikacjami producenta i zależysz od tworzenia skrótów kluczy w celu zapewnienia kolejności w partycji, dynamiczne dodawanie partycji nie jest zalecane.

    Ważne

    Podczas gdy istniejące dane zachowują kolejność, skróty partycji zostaną przerwane w przypadku komunikatów skróconych po zmianie liczby partycji z powodu dodania partycji.

  • Dodanie partycji do istniejącego tematu lub wystąpienia centrum zdarzeń jest zalecane w następujących przypadkach:

    • W przypadku korzystania z domyślnej metody wysyłania zdarzeń
    • Przykład domyślnych strategii partycjonowania platformy Kafka — strategia sticky Assignor

Następne kroki

Aby uzyskać więcej informacji na temat partycji, zobacz Partitions (Partycje).