Panoramica delle funzionalità di Hub eventiEvent Hubs features overview

Hub eventi di Azure è una servizio di elaborazione degli eventi scalabile che inserisce ed elabora grandi volumi di eventi e dati, con bassa latenza e affidabilità elevata.Azure Event Hubs is a scalable event processing service that ingests and processes large volumes of events and data, with low latency and high reliability. Vedere Che cos'è Hub eventi? per una panoramica generale del servizio.See What is Event Hubs? for a high-level overview of the service.

Questo articolo si basa sulle informazioni presenti nella panoramica e contiene dettagli tecnici e informazioni sull'implementazione relativi ai componenti e alle funzionalità di Hub eventi.This article builds on the information in the overview article, and provides technical and implementation details about Event Hubs components and features.

Publisher di eventiEvent publishers

Qualsiasi entità che invia dati a un hub eventi è un produttore di eventi o autore di eventi.Any entity that sends data to an event hub is an event producer, or event publisher. Gli autori di eventi possono pubblicare eventi usando HTTPS o AMQP 1.0.Event publishers can publish events using HTTPS or AMQP 1.0. Gli autori di eventi usano un token di firma di accesso condiviso per identificarsi con un hub eventi e possono avere un'identità univoca oppure usare un token di firma di accesso condiviso comune.Event publishers use a Shared Access Signature (SAS) token to identify themselves to an event hub, and can have a unique identity, or use a common SAS token.

Pubblicazione di un eventoPublishing an event

È possibile pubblicare un evento tramite AMQP 1.0 o HTTPS.You can publish an event via AMQP 1.0 or HTTPS. Hub eventi offre classi e librerie client per la pubblicazione di eventi in un hub eventi dai client .NET.Event Hubs provides client libraries and classes for publishing events to an event hub from .NET clients. Per altre piattaforme e runtime, è possibile utilizzare qualsiasi client AMQP 1.0, ad esempio Apache Qpid.For other runtimes and platforms, you can use any AMQP 1.0 client, such as Apache Qpid. È possibile pubblicare eventi singolarmente o in batch.You can publish events individually, or batched. Una singola pubblicazione (istanza dei dati dell'evento) ha un limite di 256 KB, indipendentemente dal fatto che si tratti di un singolo evento o di un batch.A single publication (event data instance) has a limit of 256 KB, regardless of whether it is a single event or a batch. La pubblicazione di eventi di dimensioni superiori alla soglia determina un errore.Publishing events larger than this threshold results in an error. È consigliabile che gli autori non rilevino le partizioni all'interno dell'hub eventi e specifichino solo una chiave di partizione (illustrata nella sezione successiva) o la propria identità tramite il token di firma di accesso condiviso.It is a best practice for publishers to be unaware of partitions within the event hub and to only specify a partition key (introduced in the next section), or their identity via their SAS token.

La scelta di utilizzare AMQP o HTTPS dipende dallo scenario di utilizzo.The choice to use AMQP or HTTPS is specific to the usage scenario. AMQP richiede di stabilire un socket bidirezionale persistente oltre alla sicurezza a livello di trasporto (TLS) o SSL/TLS.AMQP requires the establishment of a persistent bidirectional socket in addition to transport level security (TLS) or SSL/TLS. AMQP comporta costi di rete superiori in fase di inizializzazione della sessione, ma HTTPS richiede un costo generale SSL aggiuntivo per ogni richiesta.AMQP has higher network costs when initializing the session, however HTTPS requires additional SSL overhead for every request. AMQP offre prestazioni più elevate per i server di pubblicazione più attivi.AMQP has higher performance for frequent publishers.

Hub eventi

Hub eventi garantisce che tutti gli eventi che condividono un valore di chiave di partizione vengano recapitati in ordine e alla stessa partizione.Event Hubs ensures that all events sharing a partition key value are delivered in order, and to the same partition. Se si usano chiavi di partizione con i criteri di autore, l'identità dell’autore e il valore della chiave di partizione devono corrispondere.If partition keys are used with publisher policies, then the identity of the publisher and the value of the partition key must match. In caso contrario, si verifica un errore.Otherwise, an error occurs.

Criteri di autorePublisher policy

Hub eventi consente un controllo granulare degli autori di eventi tramite criteri di autore.Event Hubs enables granular control over event publishers through publisher policies. I criteri di autore sono funzionalità di runtime progettate per consentire un numero elevato di autori di eventi indipendenti.Publisher policies are run-time features designed to facilitate large numbers of independent event publishers. Con i criteri di autore, ogni autore usa il proprio identificatore univoco durante la pubblicazione di eventi in un hub eventi, con il meccanismo seguente:With publisher policies, each publisher uses its own unique identifier when publishing events to an event hub, using the following mechanism:

//[my namespace].servicebus.windows.net/[event hub name]/publishers/[my publisher name]

Non è necessario creare nomi di autore prima di procedere, ma devono corrispondere al token SAS utilizzato quando si pubblica un evento, al fine di garantire le identità di autore indipendenti.You don't have to create publisher names ahead of time, but they must match the SAS token used when publishing an event, in order to ensure independent publisher identities. Quando si utilizzano criteri di autore, il valore PartitionKey è impostato sul nome dell’autore.When using publisher policies, the PartitionKey value is set to the publisher name. Per il corretto funzionamento, questi valori devono corrispondere.To work properly, these values must match.

AcquisizioneCapture

Acquisizione di Hub eventi consente di acquisire automaticamente i dati in streaming in Hub eventi e salvarli, a propria scelta, in un account di archiviazione BLOB o un account del servizio Azure Data Lake.Event Hubs Capture enables you to automatically capture the streaming data in Event Hubs and save it to your choice of either a Blob storage account, or an Azure Data Lake Service account. È possibile abilitare la funzione di acquisizione dal portale di Azure e specificare una dimensione minima e l'intervallo di tempo per eseguire l'acquisizione.You can enable Capture from the Azure portal, and specify a minimum size and time window to perform the capture. Acquisizione di Hub eventi consente di specificare un account di Archiviazione BLOB di Azure e un contenitore oppure un account del servizio Azure Data Lake da usare per archiviare i dati acquisiti.Using Event Hubs Capture, you specify your own Azure Blob Storage account and container, or Azure Data Lake Service account, which is used to store the captured data. I dati acquisiti vengono scritti nel formato di Apache Avro.Captured data is written in the Apache Avro format.

PartitionsPartitions

Hub eventi fornisce lo streaming di messaggi tramite un modello consumer partizionato in cui ogni consumer legge solo un sottoinsieme specifico, o partizione, del flusso di messaggi.Event Hubs provides message streaming through a partitioned consumer pattern in which each consumer only reads a specific subset, or partition, of the message stream. Questo modello consente la scalabilità orizzontale per l'elaborazione di eventi e fornisce altre funzionalità incentrate sul flusso non disponibili in code e argomenti.This pattern enables horizontal scale for event processing and provides other stream-focused features that are unavailable in queues and topics.

Una partizione è una sequenza ordinata di eventi contenuta in un hub eventi.A partition is an ordered sequence of events that is held in an event hub. Man mano che arrivano, i nuovi eventi vengono aggiunti alla fine di questa sequenza.As newer events arrive, they are added to the end of this sequence. Una partizione può essere considerata come "registro commit".A partition can be thought of as a "commit log."

Hub eventi

Hub eventi mantiene i dati per un periodo di conservazione configurato che viene applicato a tutte le partizioni nell'hub eventi.Event Hubs retains data for a configured retention time that applies across all partitions in the event hub. Gli eventi scadono su base temporale; non è possibile eliminarli in modo esplicito.Events expire on a time basis; you cannot explicitly delete them. Poiché le partizioni sono indipendenti e contengono una sequenza specifica di dati, presentano spesso velocità di crescita diverse.Because partitions are independent and contain their own sequence of data, they often grow at different rates.

Hub eventi

Il numero di partizioni viene specificato in fase di creazione e deve essere compreso tra 2 e 32.The number of partitions is specified at creation and must be between 2 and 32. Il numero di partizioni non può essere modificato. È quindi consigliabile valutare le dimensioni a lungo termine in fase di impostazione del numero di partizioni.The partition count is not changeable, so you should consider long-term scale when setting partition count. Le partizioni sono un meccanismo di organizzazione dei dati correlato al parallelismo downstream necessario per utilizzare le applicazioni.Partitions are a data organization mechanism that relates to the downstream parallelism required in consuming applications. Il numero di partizioni in un hub eventi è direttamente correlato al numero di lettori simultanei previsti.The number of partitions in an event hub directly relates to the number of concurrent readers you expect to have. Per impostare un numero di partizioni superiore a 32, contattare il team di Hub eventi.You can increase the number of partitions beyond 32 by contacting the Event Hubs team.

Anche se le partizioni sono identificabili e consentono l'invio diretto, questa operazione non è consigliata per una partizione.While partitions are identifiable and can be sent to directly, sending directly to a partition is not recommended. È invece possibile usare i costrutti più generici introdotti nelle sezioni Autore di eventi e Capacità.Instead, you can use higher level constructs introduced in the Event publisher and Capacity sections.

Nelle partizioni viene inserita una sequenza di dati evento, che include il corpo dell'evento, un contenitore delle proprietà definito dall'utente e metadati quali il rispettivo offset nella partizione e il rispettivo numero nella sequenza di flusso.Partitions are filled with a sequence of event data which contains the body of the event, a user-defined property bag, and metadata such as its offset in the partition and its number in the stream sequence.

Per altre informazioni sulle partizioni e il necessario equilibrio tra disponibilità e affidabilità, vedere la Guida alla programmazione di Hub eventi e l'articolo Disponibilità e coerenza nell'Hub eventi.For more information about partitions and the trade-off between availability and reliability, see the Event Hubs programming guide and the Availability and consistency in Event Hubs article.

Chiave di partizionePartition key

È possibile usare una chiave di partizione per mappare i dati dell'evento in ingresso in partizioni specifiche ai fini dell'organizzazione dei dati.You can use a partition key to map incoming event data into specific partitions for the purpose of data organization. La chiave di partizione è un valore fornito dal mittente che viene passato a un hub eventi.The partition key is a sender-supplied value passed into an event hub. Viene elaborato tramite una funzione di hashing statica, che crea l'assegnazione di partizione.It is processed through a static hashing function, which creates the partition assignment. Se non si specifica una chiave di partizione quando si pubblica un evento, viene usata un'assegnazione round robin.If you don't specify a partition key when publishing an event, a round-robin assignment is used.

L'autore di eventi è a conoscenza solo della chiave di partizione, non la partizione in cui gli eventi vengono pubblicati.The event publisher is only aware of its partition key, not the partition to which the events are published. Questa separazione tra chiave e partizione evita che il mittente debba conoscere troppe informazioni sull'elaborazione downstream.This decoupling of key and partition insulates the sender from needing to know too much about the downstream processing. Un’identità univoca per dispositivo o utente crea una chiave di partizione efficace, ma è possibile utilizzare anche altri attributi, ad esempio l’area geografica, per raggruppare gli eventi correlati in un'unica partizione.A per-device or user unique identity makes a good partition key, but other attributes such as geography can also be used to group related events into a single partition.

Token di firma di accesso condivisoSAS tokens

Hub eventi usa firme di accesso condiviso, disponibili a livello di spazio dei nomi e di hub eventi.Event Hubs uses Shared Access Signatures, which are available at the namespace and event hub level. Un token SAS viene generato da una chiave SAS ed è un hash SHA di un URL, codificato in un formato specifico.A SAS token is generated from a SAS key and is an SHA hash of a URL, encoded in a specific format. Usando il nome della chiave (criterio) e il token, Hub eventi può rigenerare l'hash e quindi autenticare il mittente.Using the name of the key (policy) and the token, Event Hubs can regenerate the hash and thus authenticate the sender. In genere, i token di firma di accesso condiviso per gli autori di eventi vengono creati con privilegi solo di invio per un hub eventi specifico.Normally, SAS tokens for event publishers are created with only send privileges on a specific event hub. Questo meccanismo di URL token SAS costituisce la base per l'identificazione dell’autore introdotta nei criteri di autore.This SAS token URL mechanism is the basis for publisher identification introduced in the publisher policy. Per altre informazioni sull'uso di SAS, vedere Autenticazione della firma di accesso condiviso con il bus di servizio.For more information about working with SAS, see Shared Access Signature Authentication with Service Bus.

Consumer di eventiEvent consumers

Qualsiasi entità che legge i dati dell'evento da un hub eventi è un consumer eventi.Any entity that reads event data from an event hub is an event consumer. Tutti i consumer di Hub eventi si connettono tramite la sessione AMQP 1.0 e gli eventi vengono recapitati tramite la sessione appena disponibili.All Event Hubs consumers connect via the AMQP 1.0 session and events are delivered through the session as they become available. Il client non deve eseguire il polling per la disponibilità dei dati.The client does not need to poll for data availability.

Gruppi di utentiConsumer groups

Il meccanismo di pubblicazione/sottoscrizione degli Hub eventi è abilitato tramite i gruppi di consumer.The publish/subscribe mechanism of Event Hubs is enabled through consumer groups. Un gruppo di consumer è una vista (stato, posizione o offset) di un intero hub eventi.A consumer group is a view (state, position, or offset) of an entire event hub. I gruppi di consumer consentono a più applicazioni costose di avere una visualizzazione separata del flusso di eventi e di leggere il flusso in modo indipendente in base alle proprie esigenze e con i propri gli offset.Consumer groups enable multiple consuming applications to each have a separate view of the event stream, and to read the stream independently at their own pace and with their own offsets.

In un’architettura di elaborazione flusso, ogni applicazione a valle equivale a un gruppo di consumer.In a stream processing architecture, each downstream application equates to a consumer group. Se si desidera scrivere i dati dell’evento nell’archiviazione a lungo termine, tale applicazione writer di archiviazione è un gruppo di consumer.If you want to write event data to long-term storage, then that storage writer application is a consumer group. L'elaborazione di eventi complessi può essere quindi eseguita da un altro gruppo di consumer separato.Complex event processing can then be performed by another, separate consumer group. È possibile accedere alla partizioni solo tramite un gruppo di consumer.You can only access partitions through a consumer group. In una partizione per un gruppo di consumer ci possono essere al massimo cinque lettori simultanei; è tuttavia consigliabile che in una partizione per un gruppo di consumer ci sia solo un ricevitore attivo.There can be at most 5 concurrent readers on a partition per consumer group; however it is recommended that there is only one active receiver on a partition per consumer group. In un hub eventi è sempre presente un gruppo di consumer predefinito e per un hub eventi di livello Standard è possibile creare fino a 20 gruppi di consumer.There is always a default consumer group in an event hub, and you can create up to 20 consumer groups for a Standard tier event hub.

Di seguito sono riportati esempi della convenzione dell'URI del gruppo di consumer:The following are examples of the consumer group URI convention:

//[my namespace].servicebus.windows.net/[event hub name]/[Consumer Group #1]
//[my namespace].servicebus.windows.net/[event hub name]/[Consumer Group #2]

La figura seguente illustra l'architettura di elaborazione del flusso di Hub eventi:The following figure shows the Event Hubs stream processing architecture:

Hub eventi

Offset di flussoStream offsets

Un offset è la posizione di un evento all'interno di una partizione.An offset is the position of an event within a partition. Un offset può essere considerato come un cursore sul lato client.You can think of an offset as a client-side cursor. L'offset è la numerazione di byte dell'evento.The offset is a byte numbering of the event. Questo offset consente a un consumer di eventi (lettore) di specificare un punto nel flusso di eventi da cui iniziare la lettura degli eventi.This offset enables an event consumer (reader) to specify a point in the event stream from which they want to begin reading events. È possibile specificare l'offset come un timestamp o un valore di offset.You can specify the offset as a timestamp or as an offset value. I consumer sono responsabili di archiviare i propri valori di offset all'esterno del servizio Hub eventi.Consumers are responsible for storing their own offset values outside of the Event Hubs service. All'interno di una partizione, ogni evento include un offset.Within a partition, each event includes an offset.

Hub eventi

CheckpointCheckpointing

Checkpoint è un processo mediante il quale i lettori contrassegnano o eseguono il commit della propria posizione all'interno di una sequenza di eventi di partizione.Checkpointing is a process by which readers mark or commit their position within a partition event sequence. Il checkpoint è responsabilità del consumer e si verifica per partizione all'interno di un gruppo di consumer.Checkpointing is the responsibility of the consumer and occurs on a per-partition basis within a consumer group. Questa responsabilità significa che per ogni gruppo di consumer, ogni lettore di partizione deve tenere traccia della posizione corrente nel flusso di eventi e può informare il servizio quando considera completo il flusso di dati.This responsibility means that for each consumer group, each partition reader must keep track of its current position in the event stream, and can inform the service when it considers the data stream complete.

Se un lettore si disconnette da una partizione, quando riconnette inizia a leggere in corrispondenza del checkpoint inviato in precedenza dall’ulitimo lettore di tale partizione in tale gruppo di consumer.If a reader disconnects from a partition, when it reconnects it begins reading at the checkpoint that was previously submitted by the last reader of that partition in that consumer group. Quando il lettore si connette, passa l'offset all'hub eventi per specificare la posizione da cui iniziare la lettura.When the reader connects, it passes this offset to the event hub to specify the location at which to start reading. In questo modo è possibile usare la funzionalità di checkpoint sia per contrassegnare gli eventi come "completi" dalle applicazioni a valle sia per fornire la resilienza in caso di failover tra i lettori in esecuzione in computer diversi.In this way, you can use checkpointing to both mark events as "complete" by downstream applications, and to provide resiliency if a failover between readers running on different machines occurs. È possibile tornare a dati precedenti specificando un offset inferiore da questo processo di checkpoint.It is possible to return to older data by specifying a lower offset from this checkpointing process. Tramite questo meccanismo il checkpoint consente sia la resilienza del failover che la riproduzione del flusso di eventi.Through this mechanism, checkpointing enables both failover resiliency and event stream replay.

Attività comuni del consumerCommon consumer tasks

Tutti i consumer di Hub eventi si connettono tramite una sessione AMQP 1.0 e un canale di comunicazione bidirezionale in grado di riconoscere lo stato.All Event Hubs consumers connect via an AMQP 1.0 session, a state-aware bidirectional communication channel. Ogni partizione ha una sessione AMQP 1.0 che facilita il trasporto di eventi separati dalla partizione.Each partition has an AMQP 1.0 session that facilitates the transport of events segregated by partition.

Connettersi a una partizioneConnect to a partition

Quando ci si connette direttamente a partizioni, viene in genere usato un meccanismo di leasing per coordinare le connessioni di lettura per partizioni specifiche.When connecting to partitions, it is common practice to use a leasing mechanism to coordinate reader connections to specific partitions. In questo modo è possibile per ogni partizione in un gruppo di consumer avere un solo lettore attivo.This way, it is possible for every partition in a consumer group to have only one active reader. Il checkpoint, il leasing e la gestione dei lettori vengono semplificati tramite la classe EventProcessorHost per i client .NET.Checkpointing, leasing, and managing readers are simplified by using the EventProcessorHost class for .NET clients. L'host processore di eventi è un agente consumer intelligente.The Event Processor Host is an intelligent consumer agent.

Leggere gli eventiRead events

Dopo l'apertura di una sessione AMQP 1.0 e del collegamento per una partizione specifica, gli eventi vengono recapitati al client AMQP 1.0 dal servizio Hub eventi.After an AMQP 1.0 session and link is opened for a specific partition, events are delivered to the AMQP 1.0 client by the Event Hubs service. Questo meccanismo di recapito permette una velocità effettiva più elevata e una latenza più bassa rispetto ai meccanismi basati su pull, ad esempio HTTP GET.This delivery mechanism enables higher throughput and lower latency than pull-based mechanisms such as HTTP GET. Quando gli eventi vengono inviati al client, ogni istanza dei dati dell'evento contiene metadati importanti, ad esempio l’offset e il numero di sequenza utilizzati per facilitare il checkpoint sulla in sequenza di eventi.As events are sent to the client, each event data instance contains important metadata such as the offset and sequence number that are used to facilitate checkpointing on the event sequence.

Dati evento:Event data:

  • OffsetOffset
  • Numero di sequenzaSequence number
  • CorpoBody
  • Proprietà utenteUser properties
  • Proprietà di sistemaSystem properties

L'utente è responsabile della gestione dell'offset.It is your responsibility to manage the offset.

CapacitàCapacity

Hub eventi è un'architettura parallela a scalabilità elevata ed è necessario valutare alcuni fattori chiave durante il ridimensionamento.Event Hubs has a highly scalable parallel architecture and there are several key factors to consider when sizing and scaling.

Unità elaborateThroughput units

La capacità di velocità effettiva di Hub eventi è controllata dalle unità elaborate.The throughput capacity of Event Hubs is controlled by throughput units. Le unità elaborate sono unità di capacità pre-acquistate.Throughput units are pre-purchased units of capacity. Una singola unità elaborata include la capacità seguente:A single throughput unit includes the following capacity:

  • Ingresso: fino a 1 MB al secondo o 1000 eventi al secondo, qualunque valore venga raggiunto per primo.Ingress: Up to 1 MB per second or 1000 events per second (whichever comes first)
  • Uscita: fino a 2 MB al secondoEgress: Up to 2 MB per second

Oltre la capacità delle unità elaborate acquistate, i dati in ingresso vengono limitati e viene restituito un valore ServerBusyException.Beyond the capacity of the purchased throughput units, ingress is throttled and a ServerBusyException is returned. I dati in uscita non producono eccezioni di limitazione, ma sono ancora limitati alla capacità delle unità elaborate acquistate.Egress does not produce throttling exceptions, but is still limited to the capacity of the purchased throughput units. Se si ricevono eccezioni di velocità di pubblicazione o sono previste uscite maggiori, controllare il numero di unità elaborate acquistate per lo spazio dei nomi.If you receive publishing rate exceptions or are expecting to see higher egress, be sure to check how many throughput units you have purchased for the namespace. È possibile gestire le unità elaborate nel pannello Ridimensionamento dello spazio dei nomi nel portale di Azure.You can manage throughput units on the Scale blade of the namespaces in the Azure portal. È anche possibile gestire le unità elaborate a livello di programmazione usando le API degli hub eventi.You can also manage throughput units programmatically using the Event Hubs APIs.

Le unità elaborate vengo o fatturate su base oraria e sono pre-acquistate.Throughput units are billed per hour and are pre-purchased. Una volta acquistate, le unità elaborate vengono fatturate per un minimo di un'ora.Once purchased, throughput units are billed for a minimum of one hour. È possibile acquistare fino a 20 unità elaborate per uno spazio dei nomi di Hub eventi, che vengono condivise in tutti gli Hub eventi nello spazio dei nomi.Up to 20 throughput units can be purchased for an Event Hubs namespace and are shared across all Event Hubs in the namespace.

È possibile acquistare altre unità elaborate in blocchi di 20, fino a un massimo di 100 unità elaborate, contattando il Supporto tecnico di Azure.More throughput units can be purchased in blocks of 20, up to 100 throughput units, by contacting Azure support. Inoltre, è possibile acquistare blocchi di 100 unità elaborate.Beyond that, you can also purchase blocks of 100 throughput units.

È consigliabile bilanciare unità elaborate e partizioni per ottenere una scalabilità ottimale.We recommend that you balance throughput units and partitions to achieve optimal scale. Una singola partizione ha una scala massima di una unità elaborata.A single partition has a maximum scale of one throughput unit. Il numero di unità elaborate deve essere minore o uguale al numero di partizioni in un hub eventi.The number of throughput units should be less than or equal to the number of partitions in an event hub.

Per informazioni dettagliate sui prezzi di Hub eventi, vedere Prezzi di Hub eventi .For detailed Event Hubs pricing information, see Event Hubs pricing.

Passaggi successiviNext steps

Per altre informazioni su Hub eventi, vedere i collegamenti seguenti:For more information about Event Hubs, visit the following links: