Funcionalidades e terminologia nos Hubs de Eventos do AzureFeatures and terminology in Azure Event Hubs

O Azure Event Hubs é um serviço de processamento de eventos escalável que ingere e processa grandes volumes de eventos e dados, com baixa latência e elevada fiabilidade.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. Veja o que é o Event Hubs para uma visão geral de alto nível.See What is Event Hubs? for a high-level overview.

Este artigo baseia-se na informação no artigo geral,e fornece detalhes técnicos e de implementação sobre componentes e funcionalidades do Event Hubs.This article builds on the information in the overview article, and provides technical and implementation details about Event Hubs components and features.

Dica

O suporte protocolar para clientes Apache Kafka (versões >=1.0) fornece pontos finais de rede que permitem que aplicações construídas para usar Apache Kafka com qualquer cliente utilizem Os Centros de Eventos.The protocol support for Apache Kafka clients (versions >=1.0) provides network endpoints that enable applications built to use Apache Kafka with any client to use Event Hubs. A maioria das aplicações kafka existentes pode simplesmente ser reconfigurada para apontar para um espaço de nome do Event Hub em vez de um servidor de botas de cluster Kafka.Most existing Kafka applications can simply be reconfigured to point to an Event Hub namespace instead of a Kafka cluster bootstrap server.

Do ponto de vista do custo, esforço operacional e fiabilidade, o Azure Event Hubs é uma ótima alternativa para implantar e operar os seus próprios clusters Kafka e Zookeeper e para ofertas kafka-as-a-service não nativas de Azure.From the perspective of cost, operational effort, and reliability, Azure Event Hubs is a great alternative to deploying and operating your own Kafka and Zookeeper clusters and to Kafka-as-a-Service offerings not native to Azure.

Além de obter a mesma funcionalidade central do corretor Apache Kafka, você também tem acesso a funcionalidades do Azure Event Hub, como lotamento automático e arquivamento através do Event Hubs Capture,escala automática e equilíbrio, recuperação automática de desastres, suporte de zona de disponibilidade neutro em termos de custos, integração de rede flexível e segura, e suporte multi-protocolo, incluindo o protocolo AMQP-over-WebSockets.In addition to getting the same core functionality as of the Apache Kafka broker, you also get access to Azure Event Hub features like automatic batching and archiving via Event Hubs Capture, automatic scaling and balancing, disaster recovery, cost-neutral availability zone support, flexible and secure network integration, and multi-protocol support including the firewall-friendly AMQP-over-WebSockets protocol.

Espaço de NomesNamespace

Um espaço de nomes de Event Hubs fornece pontos finais integrados de rede DNS e uma gama de funcionalidades de controlo de acesso e integração de rede, tais como filtragem IP, ponto final de serviço de rede virtual,e Private Link e é o recipiente de gestão para uma das múltiplas instâncias do Event Hub (ou tópicos, em linguagem Kafka).An Event Hubs namespace provides DNS integrated network endpoints and a range of access control and network integration management features such as IP filtering, virtual network service endpoint, and Private Link and is the management container for one of multiple Event Hub instances (or topics, in Kafka parlance).

Publicadores de eventosEvent publishers

Qualquer entidade que envie dados para um Event Hub é uma editora de eventos (usada sinónimo com o produtor de eventos).Any entity that sends data to an Event Hub is an event publisher (synonymously used with event producer). Os editores de eventos podem publicar eventos usando HTTPS ou AMQP 1.0 ou o protocolo Kafka.Event publishers can publish events using HTTPS or AMQP 1.0 or the Kafka protocol. Os editores de eventos usam a autorização baseada no Azure Ative Directory com tokens JWT emitidos pela OAuth2 ou um token de acesso partilhado específico do Event Hub (SAS) a obter acesso à publicação.Event publishers use Azure Active Directory based authorization with OAuth2-issued JWT tokens or an Event Hub-specific Shared Access Signature (SAS) token gain publishing access.

Publicar um eventoPublishing an event

Pode publicar um evento via AMQP 1.0, o protocolo Kafka ou HTTPS.You can publish an event via AMQP 1.0, the Kafka protocol, or HTTPS. O serviço Event Hubs fornece bibliotecas de clientes REST API e .NET, Java, Python, JavaScripte Go para a publicação de eventos num centro de eventos.The Event Hubs service provides REST API and .NET, Java, Python, JavaScript, and Go client libraries for publishing events to an event hub. Para outros tempos de execução e plataformas, pode utilizar qualquer cliente AMQP 1.0, como o Apache Qpid.For other runtimes and platforms, you can use any AMQP 1.0 client, such as Apache Qpid.

A opção para utilizar AMQP ou HTTPS é específica do cenário de utilização.The choice to use AMQP or HTTPS is specific to the usage scenario. O AMQP requer o estabelecimento de um socket bidirecional persistente, para além da segurança de nível do transporte (TLS) ou SSL/TLS.AMQP requires the establishment of a persistent bidirectional socket in addition to transport level security (TLS) or SSL/TLS. A AMQP tem custos de rede mais elevados ao rubricar a sessão, no entanto HTTPS requer despesa adicional de TLS para cada pedido.AMQP has higher network costs when initializing the session, however HTTPS requires additional TLS overhead for every request. A AMQP tem um desempenho significativamente mais elevado para editores frequentes e pode obter latências muito mais baixas quando usada com código de publicação assíncrona.AMQP has significantly higher performance for frequent publishers and can achieve much lower latencies when used with asynchronous publishing code.

Pode publicar eventos individualmente ou em lotados.You can publish events individually or batched. Uma única publicação tem um limite de 1 MB, independentemente de se trate de um único evento ou de um lote.A single publication has a limit of 1 MB, regardless of whether it is a single event or a batch. Os eventos de publicação maiores do que este limiar serão rejeitados.Publishing events larger than this threshold will be rejected.

A produção de Centros de Eventos é dimensionada utilizando divisórias e alocações de unidades de produção (ver abaixo).Event Hubs throughput is scaled by using partitions and throughput-unit allocations (see below). É uma boa prática para os editores não conhecerem o modelo específico de partição escolhido para um Event Hub e especificar apenas uma chave de partição que é usada para atribuir consistentemente eventos relacionados à mesma partição.It is a best practice for publishers to remain unaware of the specific partitioning model chosen for an Event Hub and to only specify a partition key that is used to consistently assign related events to the same partition.

Chaves de partição

O Event Hubs garante que todos os eventos que partilham um valor chave de partição são armazenados e entregues por ordem de chegada.Event Hubs ensures that all events sharing a partition key value are stored together and delivered in order of arrival. Se as chaves de partição forem utilizadas com as políticas do publicador, a identidade do publicador e o valor da chave de partição devem coincidir.If partition keys are used with publisher policies, then the identity of the publisher and the value of the partition key must match. Caso contrário, ocorrerá um erro.Otherwise, an error occurs.

Retenção de EventosEvent Retention

Os eventos publicados são removidos de um Centro de Eventos com base numa política de retenção baseada em tempo configurável.Published events are removed from an Event Hub based on a configurable, timed-based retention policy. Eis alguns pontos importantes:Here are a few important points:

  • O valor predefinido e o período de retenção mais curto possível é de 1 dia (24 horas).The default value and shortest possible retention period is 1 day (24 hours).
  • Para o Event Hubs Standard, o período máximo de retenção é de 7 dias.For Event Hubs Standard, the maximum retention period is 7 days.
  • Para centros de eventos Dedicados, o período máximo de retenção é de 90 dias.For Event Hubs Dedicated, the maximum retention period is 90 days.
  • Se alterar o período de retenção, aplica-se a todas as mensagens, incluindo mensagens que já se encontram no centro de eventos.If you change the retention period, it applies to all messages including messages that are already in the event hub.

O Event Hubs retém eventos para um tempo de retenção configurado que se aplica em todas as divisórias.Event Hubs retains events for a configured retention time that applies across all partitions. Os eventos são automaticamente removidos quando o período de retenção foi atingido.Events are automatically removed when the retention period has been reached. Se especificar um período de retenção de um dia, o evento ficará indisponível exatamente 24 horas após a sua aceitação.If you specify a retention period of one day, the event will become unavailable exactly 24 hours after it has been accepted. Não é possível eliminar explicitamente os acontecimentos.You cannot explicitly delete events.

Se precisar de arquivar eventos para além do período de retenção permitido, pode armazená-los automaticamente no Azure Storage ou no Azure Data Lake, ligando a funcionalidade de Captura de Centros de Eventos, e se precisar de pesquisar ou analisar esses arquivos profundos, pode facilmente importá-los para a Azure Synapse ou outras lojas e plataformas de análise similares.If you need to archive events beyond the allowed retention period, you can have them automatically stored in Azure Storage or Azure Data Lake by turning on the Event Hubs Capture feature, and if you need to search or analyze such deep archives, you can easily import them into Azure Synapse or other similar stores and analytics platforms.

A razão para o limite do Event Hubs na retenção de dados com base no tempo é evitar que grandes volumes de dados históricos dos clientes sejam presos numa loja profunda que é apenas indexada por um timetamp e só permite o acesso sequencial.The reason for Event Hubs' limit on data retention based on time is to prevent large volumes of historic customer data getting trapped in a deep store that is only indexed by a timestamp and only allows for sequential access. A filosofia arquitetónica aqui é que os dados históricos precisam de uma indexação mais rica e de um acesso mais direto do que a interface de eventos em tempo real que os Event Hubs ou Kafka fornecem.The architectural philosophy here is that historic data needs richer indexing and more direct access than the real-time eventing interface that Event Hubs or Kafka provide. Os motores de fluxo de eventos não são adequados para desempenhar o papel de lagos de dados ou arquivos de longo prazo para o fornecimento de eventos.Event stream engines are not well suited to play the role of data lakes or long-term archives for event sourcing.

Nota

O Event Hubs é um motor de fluxo de eventos em tempo real e não foi concebido para ser utilizado em vez de uma base de dados e/ou como uma loja permanente para streams de eventos infinitamente realizados.Event Hubs is a real-time event stream engine and is not designed to be used instead of a database and/or as a permanent store for infinitely held event streams.

Quanto mais profunda for a história de um fluxo de eventos, mais necessitará de índices auxiliares para encontrar uma determinada fatia histórica de um determinado fluxo.The deeper the history of an event stream gets, the more you will need auxiliary indexes to find a particular historical slice of a given stream. A inspeção das cargas e indexação de eventos não está dentro do âmbito de características dos Centros de Eventos (ou Apache Kafka).Inspection of event payloads and indexing are not within the feature scope of Event Hubs (or Apache Kafka). Bases de dados e lojas de análise especializadas e motores como a Azure Data Lake Store, Azure Data Lake Analytics e Azure Synapse são, portanto, muito mais adequadas para armazenar eventos históricos.Databases and specialized analytics stores and engines such as Azure Data Lake Store, Azure Data Lake Analytics and Azure Synapse are therefore far better suited for storing historic events.

O Event Hubs Capture integra-se diretamente com o Azure Blob Storage e o Azure Data Lake Storage e, através dessa integração, também permite eventos fluídos diretamente para a Azure Synapse.Event Hubs Capture integrates directly with Azure Blob Storage and Azure Data Lake Storage and, through that integration, also enables flowing events directly into Azure Synapse.

Se pretender utilizar o padrão de Sourcing de Eventos para a sua aplicação, deverá alinhar a sua estratégia de instantâneo com os limites de retenção dos Centros de Eventos.If you want to use the Event Sourcing pattern for your application, you should align your snapshot strategy with the retention limits of Event Hubs. Não pretenda reconstruir visões materializadas de eventos brutos a partir do início dos tempos.Do not aim to rebuild materialized views from raw events starting at the beginning of time. Certamente que se arrependeria de tal estratégia uma vez que a sua aplicação está em produção por um tempo e é bem utilizada, e o seu construtor de projeção tem de passar por anos de eventos de mudança enquanto tenta acompanhar as mudanças mais recentes e contínuas.You would surely come to regret such a strategy once your application is in production for a while and is well used, and your projection builder has to churn through years of change events while trying to catch up to the latest and ongoing changes.

Política do publicadorPublisher policy

Os Event Hubs permitem um controlo granular sobre os publicadores de eventos através de políticas do publicador.Event Hubs enables granular control over event publishers through publisher policies. As políticas do publicador são funcionalidades de tempo de execução concebidas para facilitar um elevado número de publicadores de eventos independentes.Publisher policies are run-time features designed to facilitate large numbers of independent event publishers. Com as políticas do publicador, cada publicador utiliza o seu próprio identificador exclusivo quando publica eventos num hub de eventos, utilizando o mecanismo seguinte: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>

Não precisa de criar os nomes dos publicadores com antecedência, mas devem corresponder ao token SAS utilizado ao publicar um evento, para garantir identidades do publicador independentes.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. Ao utilizar as políticas do publicador, o valor PartitionKey é definido para o nome do publicador.When using publisher policies, the PartitionKey value is set to the publisher name. Para que funcionem corretamente, estes valores têm de corresponder.To work properly, these values must match.

RecolhaCapture

O Event Hubs Capture permite-lhe capturar automaticamente os dados de streaming nos Centros de Eventos e guardá-los para a sua escolha de uma conta de armazenamento Blob ou de uma conta Azure Data Lake Service.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. Pode ativar a Captura a partir do portal Azure e especificar um tamanho e janela de tempo mínimos para realizar a captura.You can enable Capture from the Azure portal, and specify a minimum size and time window to perform the capture. Utilizando a Captura de Centros de Eventos, especifica a sua própria conta e contentor Azure Blob, ou conta Azure Data Lake Service, uma das quais é usada para armazenar os dados capturados.Using Event Hubs Capture, you specify your own Azure Blob Storage account and container, or Azure Data Lake Service account, one of which is used to store the captured data. Os dados capturados estão escritos no formato Apache Avro.Captured data is written in the Apache Avro format.

PartiçõesPartitions

O Event Hubs organiza sequências de eventos enviados para um centro de eventos em uma ou mais divisórias.Event Hubs organizes sequences of events sent to an event hub into one or more partitions. À medida que os eventos mais recentes chegam, são adicionados ao fim desta sequência.As newer events arrive, they're added to the end of this sequence.

Hubs de Eventos

Uma partição pode ser considerada como um "log compromete-se".A partition can be thought of as a "commit log". As partições contêm dados de eventos que contêm corpo do evento, um saco de propriedade definido pelo utilizador que descreve o evento, metadados como o seu offset na partição, o seu número na sequência de fluxo e o horário de serviço no qual foi aceite.Partitions hold event data that contains body of the event, a user-defined property bag describing the event, metadata such as its offset in the partition, its number in the stream sequence, and service-side timestamp at which it was accepted.

Diagrama que mostra a mais antiga a mais recente sequência de eventos.

Vantagens da utilização de divisóriasAdvantages of using partitions

O Event Hubs é projetado para ajudar no processamento de grandes volumes de eventos, e a partilha ajuda com isso de duas maneiras:Event Hubs is designed to help with processing of large volumes of events, and partitioning helps with that in two ways:

  • Embora o Event Hubs seja um serviço PaaS, há uma realidade física por baixo, e manter um registo que preserva a ordem dos eventos requer que estes eventos sejam mantidos juntos no armazenamento subjacente e nas suas réplicas e isso resulta num teto de produção para tal registo.Even though Event Hubs is a PaaS service, there's a physical reality underneath, and maintaining a log that preserves the order of events requires that these events are being kept together in the underlying storage and its replicas and that results in a throughput ceiling for such a log. A partição permite que vários troncos paralelos sejam usados para o mesmo centro de eventos e, portanto, multiplicando a capacidade de produção bruta disponível.Partitioning allows for multiple parallel logs to be used for the same event hub and therefore multiplying the available raw IO throughput capacity.
  • As suas próprias aplicações devem ser capazes de acompanhar o processamento do volume de eventos que estão a ser enviados para um centro de eventos.Your own applications must be able to keep up with processing the volume of events that are being sent into an event hub. Pode ser complexo e requer uma capacidade de processamento paralela substancial, escalonada e paralela.It may be complex and requires substantial, scaled-out, parallel processing capacity. A capacidade de um único processo para lidar com eventos é limitada, por isso precisa de vários processos.The capacity of a single process to handle events is limited, so you need several processes. As divisórias são como a sua solução alimenta esses processos e ainda garante que cada evento tem um claro proprietário de processamento.Partitions are how your solution feeds those processes and yet ensures that each event has a clear processing owner.

Número de divisóriasNumber of partitions

O número de divisórias é especificado na criação e deve estar entre 1 e 32 no Event Hubs Standard.The number of partitions is specified at creation and must be between 1 and 32 in Event Hubs Standard. A contagem de divisórias pode ser de até 2000 divisórias por Unidade de Capacidade em Centros de Eventos Dedicados.The partition count can be up to 2000 partitions per Capacity Unit in Event Hubs Dedicated.

Recomendamos que escolha pelo menos tantas divisões quanto espera necessitar em unidades de produção sustentadas (TU) durante a carga máxima da sua aplicação para esse Centro de Eventos em particular.We recommend that you choose at least as many partitions as you expect to require in sustained throughput units (TU) during the peak load of your application for that particular Event Hub. Deve calcular com uma única partição com uma capacidade de produção de 1 TU (1 MByte in, 2 MByte out).You should calculate with a single partition having a throughput capacity of 1 TU (1 MByte in, 2 MByte out). Pode escalar as TUs no seu espaço de nome ou nas unidades de capacidade do seu cluster independentemente da contagem de divisórias.You can scale the TUs on your namespace or the capacity units of your cluster independent of the partition count. Um Centro de Eventos com 32 divisórias ou um Centro de Eventos com 1 partição incorrem exatamente no mesmo custo quando o espaço de nome está definido para 1 capacidade TU.An Event Hub with 32 partitions or an Event Hub with 1 partition incur the exact same cost when the namespace is set to 1 TU capacity.

A contagem de divisórias para um centro de eventos num cluster dedicado de Clusters de Eventos pode ser aumentada após a criação do centro de eventos, mas a distribuição de fluxos através de divisórias mudará quando for feita como o mapeamento das chaves de partição para as divisórias muda, por isso deve esforçar-se para evitar tais alterações se a ordem relativa dos eventos for importante na sua aplicação.The partition count for an event hub in a dedicated Event Hubs cluster can be increased after the event hub has been created, but the distribution of streams across partitions will change when it's done as the mapping of partition keys to partitions changes, so you should try hard to avoid such changes if the relative order of events matters in your application.

Definir o número de divisórias ao valor máximo permitido é tentador, mas tenha sempre em mente que os fluxos do seu evento precisam de ser estruturados de modo a que possa realmente tirar partido de múltiplas divisórias.Setting the number of partitions to the maximum permitted value is tempting, but always keep in mind that your event streams need to be structured such that you can indeed take advantage of multiple partitions. Se você precisa de preservação absoluta da ordem em todos os eventos ou apenas um punhado de substreams, você pode não ser capaz de aproveitar muitas divisórias.If you need absolute order preservation across all events or only a handful of substreams, you may not be able to take advantage of many partitions. Além disso, muitas divisórias tornam o lado do processamento mais complexo.Also, many partitions make the processing side more complex.

Mapeamento de eventos para divisóriasMapping of events to partitions

Pode utilizar uma chave de partição para mapear dados de eventos recebidos em partições específicas para a finalidade de organização de dados.You can use a partition key to map incoming event data into specific partitions for the purpose of data organization. A chave de partição é um valor fornecido pelo remetente transmitido para um hub de eventos.The partition key is a sender-supplied value passed into an event hub. É processada através de uma função hash estática que cria a atribuição de partições.It is processed through a static hashing function, which creates the partition assignment. Se não especificar uma chave de partição ao publicar um evento, é utilizada uma atribuição round robin.If you don't specify a partition key when publishing an event, a round-robin assignment is used.

O publicador de eventos apenas tem conhecimento da respetiva chave de partição, não da partição onde os eventos são publicados.The event publisher is only aware of its partition key, not the partition to which the events are published. Este desacoplamento da chave e da partição faz com que o remetente não tenha necessidade de saber muito sobre o processamento a jusante.This decoupling of key and partition insulates the sender from needing to know too much about the downstream processing. Uma identidade por dispositivo ou utilizador exclusivo faz com que uma chave de partição seja segura, mas outros atributos como a geografia também podem ser utilizados para agrupar os eventos relacionados numa única partição.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.

Especificar uma chave de partição permite manter os eventos relacionados juntos na mesma partição e na ordem exata em que foram enviados.Specifying a partition key enables keeping related events together in the same partition and in the exact order in which they were sent. A chave de partição é uma corda que deriva do seu contexto de aplicação e identifica a inter-relação dos eventos.The partition key is some string that is derived from your application context and identifies the interrelationship of the events. Uma sequência de eventos identificados por uma chave de partição é um fluxo.A sequence of events identified by a partition key is a stream. Uma divisória é uma loja de troncos multiplexed para muitos desses fluxos.A partition is a multiplexed log store for many such streams.

Nota

Embora possa enviar eventos diretamente para divisórias, não o recomendamos, especialmente quando a alta disponibilidade é importante para si.While you can send events directly to partitions, we don't recommend it, especially when high availability is important to you. Diminui a disponibilidade de um centro de eventos para o nível de partição.It downgrades the availability of an event hub to partition-level. Para mais informações, consulte Disponibilidade e Consistência.For more information, see Availability and Consistency.

Tokens SASSAS tokens

Os Hubs de Eventos utilizam Assinaturas de Acesso Partilhado, que estão disponíveis no espaço de nomes e ao nível do hub de eventos.Event Hubs uses Shared Access Signatures, which are available at the namespace and event hub level. Um token SAS é gerado a partir de uma chave SAS e é um hash SHA de um URL, codificado num formato específico.A SAS token is generated from a SAS key and is an SHA hash of a URL, encoded in a specific format. Através do nome da chave (política) e do token, o Event Hubs pode regenerar o hash e, assim, autenticar o remetente.Using the name of the key (policy) and the token, Event Hubs can regenerate the hash and thus authenticate the sender. Normalmente, os tokens SAS de publicadores de eventos são criados apenas com privilégios de envio num hub de eventos específico.Normally, SAS tokens for event publishers are created with only send privileges on a specific event hub. Este mecanismo de URLs do token SAS é a base para a identificação do publicador apresentada na política do publicador.This SAS token URL mechanism is the basis for publisher identification introduced in the publisher policy. Para obter mais informações sobre como trabalhar com SAS, consulte Autenticação da Assinatura de Acesso Partilhado com o Service Bus.For more information about working with SAS, see Shared Access Signature Authentication with Service Bus.

Consumidores de eventosEvent consumers

Qualquer entidade que leia os dados de eventos de um hub de eventos é um consumidor de eventos.Any entity that reads event data from an event hub is an event consumer. Todos os consumidores de Hubs de Eventos ligam-se através da sessão AMQP 1.0 e os eventos são entregues durante a sessão à medida que ficam disponíveis.All Event Hubs consumers connect via the AMQP 1.0 session and events are delivered through the session as they become available. O cliente não necessita de consultar a disponibilidade dos dados.The client does not need to poll for data availability.

Grupos de consumidoresConsumer groups

O mecanismo de publicação/subscrição de Hubs de Eventos é ativado através de grupos de consumidores.The publish/subscribe mechanism of Event Hubs is enabled through consumer groups. Um grupo de consumidores é uma vista (estado, posição ou desvio) de um hub de eventos completo.A consumer group is a view (state, position, or offset) of an entire event hub. Os grupos de consumidores ativam várias aplicações de consumo e cada uma tem uma vista separada do fluxo de eventos e lê o fluxo de forma independente ao seu próprio ritmo e com os seus próprios desvios.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.

Na arquitetura de processamento de transmissão, cada aplicação a jusante equaciona um grupo de consumidores.In a stream processing architecture, each downstream application equates to a consumer group. Se pretender escrever dados de eventos para armazenamento de longa duração, essa aplicação de escrita de armazenamento é um grupo de consumidores.If you want to write event data to long-term storage, then that storage writer application is a consumer group. O processamento de eventos complexos pode ser efetuado por outro grupo de consumidores, em separado.Complex event processing can then be performed by another, separate consumer group. Só pode aceder a partições através de um grupo de consumidores.You can only access partitions through a consumer group. Há sempre um grupo de consumidores predefinido num hub de eventos e pode criar até 20 grupos de consumidores para um hub de eventos de camada Standard.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.

Pode haver, no máximo, 5 leitores simultâneos numa partição por grupo de consumidores; no entanto, recomenda-se que exista apenas um recetor ativo numa partição por grupo de consumidores.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. Dentro de uma única divisória, cada leitor recebe todas as mensagens.Within a single partition, each reader receives all of the messages. Se tiver vários leitores na mesma partição, então processa mensagens duplicadas.If you have multiple readers on the same partition, then you process duplicate messages. Tens de lidar com isto no teu código, o que pode não ser trivial.You need to handle this in your code, which may not be trivial. No entanto, é uma abordagem válida em alguns cenários.However, it's a valid approach in some scenarios.

Alguns clientes oferecidos pelos Azure SDKs são agentes de consumo inteligentes que gerem automaticamente os detalhes de garantir que cada partição tem um único leitor e que todas as divisórias para um centro de eventos estão sendo lidas.Some clients offered by the Azure SDKs are intelligent consumer agents that automatically manage the details of ensuring that each partition has a single reader and that all partitions for an event hub are being read from. Isto permite que o seu código se concentre no processamento dos eventos que estão a ser lidos a partir do centro de eventos para que possa ignorar muitos dos detalhes das divisórias.This allows your code to focus on processing the events being read from the event hub so it can ignore many of the details of the partitions. Para obter mais informações, consulte Connect to a partition.For more information, see Connect to a partition.

Os exemplos que se seguem mostram a convenção URI do grupo de consumidores:The following examples show 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>

A imagem seguinte mostra a arquitetura do processamento de fluxos dos Hubs de Eventos:The following figure shows the Event Hubs stream processing architecture:

Arquitetura de Centros de Eventos

Desvios de fluxoStream offsets

Um desvio é a posição de um evento numa partição.An offset is the position of an event within a partition. Pode considerar um desvio igual a um cursor do lado do cliente.You can think of an offset as a client-side cursor. O desvio é uma numeração de bytes do evento.The offset is a byte numbering of the event. Este desvio permite que um consumidor de eventos (leitor) especifique um ponto no fluxo de eventos a partir do qual pretende começar a ler eventos.This offset enables an event consumer (reader) to specify a point in the event stream from which they want to begin reading events. Pode especificar o desvio como um carimbo de data/hora ou como um valor de desvio.You can specify the offset as a timestamp or as an offset value. Os consumidores são responsáveis por armazenarem os seus próprios valores de desvio fora do serviço dos Event Hubs.Consumers are responsible for storing their own offset values outside of the Event Hubs service. Dentro de uma partição, cada evento inclui um desvio.Within a partition, each event includes an offset.

Compensação de partição

Pontos de verificaçãoCheckpointing

O ponto de verificação é um processo pelo qual os leitores marcam ou confirmam a respetiva posição dentro de uma sequência de eventos da partição.Checkpointing is a process by which readers mark or commit their position within a partition event sequence. O ponto de verificação é da responsabilidade do consumidor e ocorre numa base por partição dentro de um grupo de consumidores.Checkpointing is the responsibility of the consumer and occurs on a per-partition basis within a consumer group. Esta responsabilidade significa que para cada grupo de consumidores, cada leitor da partição tem de manter um controlo da respetiva posição atual no fluxo de eventos e pode informar o serviço quando considera o fluxo de dados completo.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 um leitor for desligado de uma partição, quando voltar a ser ligado, começa a leitura no ponto de verificação que foi previamente submetido pelo último leitor dessa partição nesse grupo de consumidores.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 o leitor se conecta, passa a offset para o centro do evento para especificar o local onde começar a ler.When the reader connects, it passes the offset to the event hub to specify the location at which to start reading. Desta forma, pode utilizar o ponto de verificação para marcar os eventos como “concluídos” pelas aplicações a jusante e para fornecer resiliência se ocorrer uma ativação pós-falha entre os leitores em execução em computadores diferentes.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. É possível devolver dados mais antigos ao especificar um desvio inferior a partir deste processo de ponto de verificação.It is possible to return to older data by specifying a lower offset from this checkpointing process. Através deste mecanismo, o ponto de verificação ativa a resiliência pós-falha e a repetição do fluxo de eventos.Through this mechanism, checkpointing enables both failover resiliency and event stream replay.

Importante

As compensações são fornecidas pelo serviço Event Hubs.Offsets are provided by the Event Hubs service. É da responsabilidade do consumidor fazer um controlo à medida que os acontecimentos são processados.It is the responsibility of the consumer to checkpoint as events are processed.

Nota

Se estiver a utilizar o Azure Blob Storage como loja de checkpoint num ambiente que suporta uma versão diferente do Storage Blob SDK do que os normalmente disponíveis no Azure, terá de utilizar código para alterar a versão API do serviço de armazenamento para a versão específica suportada por esse ambiente.If you are using Azure Blob Storage as the checkpoint store in an environment that supports a different version of Storage Blob SDK than those typically available on Azure, you'll need to use code to change the Storage service API version to the specific version supported by that environment. Por exemplo, se estiver a executar Os Centros de Eventos numa versão Azure Stack Hub 2002, a versão mais alta disponível para o serviço de Armazenamento é a versão 2017-11-09.For example, if you are running Event Hubs on an Azure Stack Hub version 2002, the highest available version for the Storage service is version 2017-11-09. Neste caso, é necessário utilizar o código para direcionar a versão API do serviço de armazenamento para 2017-11-09.In this case, you need to use code to target the Storage service API version to 2017-11-09. Para um exemplo sobre como direcionar uma versão específica da API de armazenamento, consulte estas amostras no GitHub:For an example on how to target a specific Storage API version, see these samples on GitHub:

Tarefas comuns do consumidorCommon consumer tasks

Todos os consumidores de Centros de Eventos conectam-se através de uma sessão AMQP 1.0, um canal de comunicação bidirecional consciente do estado.All Event Hubs consumers connect via an AMQP 1.0 session, a state-aware bidirectional communication channel. Cada partição tem uma sessão do AMQP 1.0 que facilita o transporte de eventos segregados pela partição.Each partition has an AMQP 1.0 session that facilitates the transport of events segregated by partition.

Ligar a uma partiçãoConnect to a partition

Ao ligar-se às divisórias, é prática comum usar um mecanismo de locação para coordenar as ligações dos leitores a divisórias específicas.When connecting to partitions, it's common practice to use a leasing mechanism to coordinate reader connections to specific partitions. Desta forma, é possível que cada divisória de um grupo de consumidores tenha apenas um leitor ativo.This way, it's possible for every partition in a consumer group to have only one active reader. A verificação, o leasing e a gestão dos leitores são simplificados utilizando os clientes dentro dos SDKs do Event Hubs, que funcionam como agentes de consumo inteligentes.Checkpointing, leasing, and managing readers are simplified by using the clients within the Event Hubs SDKs, which act as intelligent consumer agents. Esses avisos são:These are:

Ler eventosRead events

Depois de abrir uma sessão AMQP 1.0 e uma ligação para uma partição específica, os eventos são entregues para o cliente AMQP 1.0 pelo serviço de Event Hubs.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. Este mecanismo de entrega permite um maior débito e uma latência inferior do que os mecanismos baseados na solicitação como HTTP GET.This delivery mechanism enables higher throughput and lower latency than pull-based mechanisms such as HTTP GET. Como os eventos são enviados para o cliente, cada instância de dados de eventos contém metadados importantes, como o número de sequência e desvio que são utilizados para facilitar o ponto de verificação numa sequência de eventos.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.

Dados do evento:Event data:

  • DesvioOffset
  • Número de sequênciaSequence number
  • CorpoBody
  • Propriedades do utilizadorUser properties
  • Propriedades do sistemaSystem properties

É da sua responsabilidade gerir o desvio.It is your responsibility to manage the offset.

Passos seguintesNext steps

Para obter mais informações sobre os Hubs de Eventos, visite as seguintes ligações:For more information about Event Hubs, visit the following links: