Escalado con Event Hubs

Hay dos factores que influyen en el escalado con Event Hubs.

  • Unidades de rendimiento (nivel estándar) o unidades de procesamiento (nivel prémium)
  • Particiones

Unidades de procesamiento

La capacidad de rendimiento de Event Hubs se controla mediante unidades de rendimiento. Las unidades de procesamiento son unidades de capacidad adquiridas previamente. Un único procesamiento le permite:

  • Entrada: hasta 1 MB por segundo o 1000 eventos por segundo, lo que ocurra primero.
  • Salida: hasta 2 MB por segundo o 4096 eventos por segundo.

Si supera la capacidad de las unidades de rendimiento adquiridas, la entrada se limitará y se devolverá una excepción ServerBusyException. La salida no produce excepciones de limitación, pero sigue estando limitada a la capacidad de las unidades de rendimiento adquiridas. Si recibe excepciones de tasa de publicación o espera ver una salida superior, compruebe cuántas unidades de rendimiento adquirió para el espacio de nombres. Puede administrar las unidades de procesamiento en la hoja Escala de los espacios de nombres en Azure Portal. También puede administrar unidades de procesamiento mediante programación con las API de Event Hubs.

Las unidades de procesamiento se adquieren previamente y se facturan por hora. Cuando se adquieren, las unidades de procesamiento se facturan durante un período mínimo de una hora. Se pueden comprar hasta 40 unidades de procesamiento para un espacio de nombres de Event Hubs y compartir entre todos los centros de eventos del espacio de nombres.

La característica de inflado automático de Event Hubs escala verticalmente y de forma automática mediante el aumento del número de unidades de procesamiento para responder a las necesidades de utilización. Al aumentar las unidades de rendimiento, se evitan escenarios de limitación en los que nos encontramos con:

  • Velocidades de entrada de datos que superan las unidades de rendimiento establecidas.
  • Velocidades de solicitud de salida de datos que superan las unidades de rendimiento establecidas.

El servicio Event Hubs aumenta el rendimiento cuando la carga aumenta más allá del umbral mínimo, sin que se produzca ningún problema de las solicitudes con errores de ServerBusy.

Para más información sobre la característica de inflado automático, consulte Escalado automático de las unidades de rendimiento.

Unidades de procesamiento

Event Hubs Premium proporciona un rendimiento superior y un mejor aislamiento en un entorno PaaS multiinquilino administrado. Los recursos de un nivel Premium están aislados en el nivel de CPU y memoria para que cada carga de trabajo de inquilino se ejecute en aislamiento. Este contenedor de recursos recibe el nombre de unidad de procesamiento (PU). Puede comprar 1, 2, 4, 8 o 16 unidades de procesamiento para cada espacio de nombres de Event Hubs Premium.

Lo que se pueda ingerir y transmitir con una unidad de procesamiento depende de varios factores, como los productores, los consumidores, la velocidad a la que se ingiere y procesa, etc.

Por ejemplo, el espacio de nombres de Event Hubs Premium con una unidad de procesamiento y un centro de eventos (100 particiones) puede ofrecer aproximadamente una capacidad básica de entrada de aproximadamente 5 a 10 MB/s y salida de 10 a 20 MB/s para cargas de trabajo de AMQP o Kafka.

Para saber cómo configurar las unidades de procesamiento para un espacio de nombres de nivel prémium, consulte Configuración de unidades de procesamiento.

Nota:

Para más información sobre las cuotas y los límites, consulte Cuotas y límites de Azure Event Hubs.

Particiones

Event Hubs organiza las secuencias de eventos que se envían a un centro de eventos en una o más particiones. A medida que llegan eventos más recientes, se agregan al final de esta secuencia.

Event Hubs

Una partición puede considerarse como un "registro de confirmación". Las particiones almacenan datos de eventos que contienen el cuerpo del evento, un contenedor de propiedades definido por el usuario que describe el evento y metadatos, como su desplazamiento en la partición, su número en la secuencia de la transmisión y la marca de tiempo del servicio en el momento que se aceptó.

Diagram that displays the older to newer sequence of events.

Ventajas de usar particiones

Event Hubs está diseñado para ayudar en el procesamiento de grandes volúmenes de eventos y la creación de particiones ayuda a hacerlo de dos maneras:

  • Aunque Event Hubs sea un servicio PaaS, hay una realidad física subyacente, y el mantenimiento de un registro que conserva el orden de los eventos requiere que estos eventos se mantengan juntos en el almacenamiento subyacente y sus réplicas, y esto crea un límite máximo de rendimiento para este tipo de registro. La creación de particiones permite que se usen varios registros paralelos para el mismo centro de eventos y, por lo tanto, multiplicar la capacidad de rendimiento de E/S sin procesar disponible.
  • Sus propias aplicaciones deben poder mantener el procesamiento del volumen de eventos que se envía a un centro de eventos. Esto puede ser complejo y requiere una capacidad de procesamiento en paralelo importante con escalabilidad horizontal. La capacidad de un único proceso para controlar eventos es limitada, por lo que se necesitan varios procesos. Las particiones son el modo en que la solución alimenta esos procesos y, además, garantiza que cada evento tenga un propietario del proceso claro.

Número de particiones

El número de particiones se especifica en el momento de crear un centro de eventos. Debe tener entre 1 y el número máximo de particiones admitido para cada plan de tarifa. Para ver el límite del número de particiones para cada plan, consulte este artículo.

Se recomienda elegir al menos tantas particiones como espere necesitar durante la carga máxima de la aplicación para ese centro de eventos específico. No se puede cambiar el número de particiones de un centro de eventos después de su creación, excepto en el caso del centro de eventos de un clúster dedicado y el nivel prémium. El número de particiones de un centro de eventos de un clúster de Event Hubs dedicado se puede aumentar tras su creación, pero la distribución de flujos entre las particiones cambiará cuando se realice como la asignación de claves de partición a cambios de las particiones, por lo que es preciso evitar a toda costa ese tipo de cambios si el orden relativo de los es importante en la aplicación.

Establecer el número de particiones en el valor máximo permitido es tentador, pero siempre debe tener en cuenta que los flujos de eventos deben estar estructurados de manera que se puedan aprovechar las ventajas de tener varias particiones. Si necesita conservar el orden absoluto en todos los eventos o solo en un puñado de subsecuencias, es posible que no pueda aprovechar las ventajas de tener muchas particiones. Además, muchas particiones hacen que el procesamiento sea más complejo.

No importa cuántas particiones haya en un centro de eventos en lo que respecta a los precios. Depende del número de unidades de precios (unidades de procesamiento (TU) para el nivel estándar, unidades de procesamiento (PU) para el nivel prémium y unidades de capacidad (CU) para el nivel dedicado) para el espacio de nombres o el clúster dedicado. Por ejemplo, un centro de eventos de nivel estándar con 32 particiones o con 1 partición generan exactamente el mismo costo cuando el espacio de nombres se establece en una capacidad de 1 TU. También puede escalar las TU o PU del espacio de nombres o las CU del clúster dedicado independientemente del número de particiones.

Dado que una partición es un mecanismo de organización de datos que permite publicar y consumir datos de forma paralela, se recomienda equilibrar las unidades de escalado (TU, PU o CU) y las particiones para obtener un escalado óptimo. En general, se recomienda a los usuarios mantener un rendimiento máximo de 1 MB/s por partición y elegir el recuento de particiones para que coincida con el rendimiento máximo que desea controlar. Por ejemplo, si su caso de uso requiere 20 MB/s, se recomienda elegir al menos 20 particiones para obtener el rendimiento óptimo.

Pero si tiene un modelo en el que su aplicación tiene afinidad con una partición determinada, aumentar el número de particiones puede que no suponga ventaja alguna. Para más información, vea Disponibilidad y coherencia.

Asignación de eventos a particiones

Puede usar una clave de partición para asignar datos de eventos entrantes a particiones concretas con fines de organización de los datos. La clave de partición es un valor proporcionado por el remitente que se pasa a un centro de eventos. Se procesa a través de una función hash estática que crea la asignación de la partición. Si no especifica una clave de partición cuando se publica un evento, se usa una asignación de tipo round robin.

El publicador de eventos solo conoce su clave de partición, no la partición en la que se publican los eventos. Este desacoplamiento de la clave y la partición evita al remitente la necesidad de conocer demasiado sobre el procesamiento de bajada. Una identidad única por cada dispositivo o usuario es una buena clave de partición, pero otros atributos como la geografía también pueden usarse para agrupar eventos relacionados en una única partición.

La especificación de una clave de partición permite mantener los eventos relacionados en la misma partición y en el orden exacto en el que han llegado. La clave de partición es una cadena que se deriva del contexto de la aplicación e identifica la interrelación de los eventos. Una secuencia de eventos identificados por una clave de partición es un flujo. Una partición es un almacén de registros multiplexado para muchos de estos flujos.

Nota:

Aunque puede enviar eventos directamente a las particiones, no se recomienda, sobre todo si le da una gran importancia a la alta disponibilidad. Esto degrada la disponibilidad de un centro de eventos en el nivel de partición. Para más información, consulte Disponibilidad y coherencia.

Pasos siguientes

Para más información acerca de Event Hubs, visite los vínculos siguientes: