Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Azure Queue Storage almacena mensajes para el procesamiento asincrónico. Este artículo describe estrategias de partición, modelos de aislamiento y características de Queue Storage para soluciones de varios inquilinos. Proporciona instrucciones que pueden ayudarle a distribuir la carga de mensajes, aislar los mensajes de los tenants y administrar el acceso, el cifrado y el uso.
Estrategias de partición
Queue Storage no expone una clave de partición ni una subcola dentro de una cola. La cola es el límite más pequeño que puede usar para distribuir la carga de mensajes y la cuenta de almacenamiento es el siguiente límite. Una cola compartida no proporciona un rendimiento específico para cada inquilino ni aislamiento del rendimiento.
Para los mensajes que son 1 KiB, una sola cola tiene un rendimiento de destino de hasta 2000 mensajes por segundo y una cuenta de almacenamiento tiene una tasa de solicitud máxima de 20 000 mensajes por segundo. El tamaño del mensaje y los patrones de acceso afectan al rendimiento que logra la carga de trabajo. Los mensajes de cola pueden ser de hasta 64 KiB. Para mensajes más grandes o características avanzadas del broker, considere la posibilidad de usar Azure Service Bus.
Si la carga de trabajo puede superar el objetivo por cola, distribuya mensajes entre varias colas. En función de sus requisitos de enrutamiento y operativos, puede particionar las colas por inquilino, grupo de inquilinos o nivel de servicio, carga de trabajo funcional, marca de implementación o región. Un inquilino con un volumen elevado que comparta una cola con otros inquilinos puede consumir una parte desproporcionada del rendimiento de la cola y provocar una limitación del ancho de banda para otros inquilinos.
Varias colas de la misma cuenta de almacenamiento siguen compartiendo la capacidad de la cuenta y la configuración de nivel de cuenta. Si la carga de trabajo agregada puede superar el objetivo de la cuenta de almacenamiento, o si un inquilino necesita una configuración regional o de escalabilidad independiente, distribuya las colas entre varias cuentas de almacenamiento. Supervise la limitación de rendimiento, utilice reintentos con retroceso exponencial y compruebe su carga de trabajo con respecto a los objetivos de escalabilidad de Queue Storage documentados. Para conocer las opciones de acceso de los inquilinos y de aislamiento de datos, consulte Modelos de aislamiento.
Modelos de aislamiento
Después de determinar cómo distribuir la carga de mensajes, determine el nivel de aislamiento de tenant que se va a aplicar. El almacenamiento de colas admite colas compartidas, colas para cada inquilino y cuentas de almacenamiento para cada inquilino. La siguiente tabla resume las diferencias entre los principales modelos de aislamiento de inquilinos para el almacenamiento de colas.
| Consideration | Colas compartidas | Colas para cada inquilino | Cuentas de almacenamiento para cada inquilino |
|---|---|---|---|
| Aislamiento de datos | Baja. La aplicación impone el aislamiento. | Bajo medio | Alto |
| Aislamiento de rendimiento | Bajo | Baja. La mayoría de las cuotas y los límites se aplican a toda la cuenta de almacenamiento. | Alto |
| Complejidad de la implementación | Bajo | Medium | Alto |
| Complejidad operativa | Bajo | Medium | Alto |
| Escenario de ejemplo | Una solución multiinquilino grande tiene un nivel de aplicación compartido. | Se emiten URL de firma de acceso compartido (SAS) con ámbito de inquilino. | Cada cliente tiene su propio sello de implementación. |
Note
Tenga en cuenta las cuotas y los límites al seleccionar un modelo de aislamiento. Estos límites incluyen límites de servicio de Azure, objetivos de escalabilidad de Queue Storage y objetivos de escalabilidad para el proveedor de recursos de Storage.
Colas compartidas
Si comparte una cola, todos los tenants comparten su objetivo de rendimiento. Un cliente con mucha actividad puede provocar una limitación de ancho de banda para otros clientes. Para obtener estrategias para distribuir la carga de mensajes, consulte Estrategias de creación de particiones.
Las colas no proporcionan particiones ni subcolas, por lo que se podrían entremezclar los datos de todos los inquilinos. La aplicación debe identificar el tenant para cada mensaje y garantizar el aislamiento durante el procesamiento. No concedas a los clientes acceso directo a una cola compartida si no deben acceder a los mensajes de otros clientes.
Colas para cada inquilino
Puede crear colas individuales para cada inquilino dentro de una sola cuenta de almacenamiento. No hay límite para el número de colas que puede crear dentro de una cuenta de almacenamiento.
Las colas específicas para cada cliente proporcionan un límite de enrutamiento y control de acceso, pero no ofrecen aislamiento del rendimiento. Todas las colas de la cuenta comparten los objetivos de rendimiento y capacidad de la cuenta de almacenamiento.
En este escenario, puede usar el control de acceso de Queue Storage, incluido SAS, para administrar el acceso a los datos de cada arrendatario.
Al crear dinámicamente colas para cada inquilino, tenga en cuenta cómo consume la capa de aplicación los mensajes de la cola de cada inquilino. Para escenarios avanzados, considere la posibilidad de usar Azure Service Bus, que admite características como sesiones, reenvío automático de mensajes y temas y suscripciones.
Cuentas de almacenamiento para cada inquilino
El nivel de aislamiento más seguro usa una cuenta de almacenamiento dedicada para cada inquilino. Este modelo garantiza el aislamiento total de las claves de cuenta de almacenamiento, que puedes rotar de forma independiente. También permite escalar la solución más allá de los límites y cuotas de cada cuenta de almacenamiento. Considere este modelo para los tenants que han soportado volúmenes elevados de mensajes o requieren objetivos de rendimiento o configuración regional independientes. Pero también debe tener en cuenta el número máximo de cuentas de almacenamiento permitidas dentro de una sola suscripción de Azure.
Características de Queue Storage que admiten varios inquilinos
Las siguientes características de Queue Storage pueden ayudarle a implementar y operar el modelo de aislamiento elegido.
Firmas de acceso compartido
Cuando use Queue Storage desde una aplicación cliente, considere si enrutar las solicitudes a través del nivel de aplicación o permitir que los clientes se conecten directamente a una cola. El acceso directo del cliente puede reducir la carga en tus aplicaciones de back-end y el número de saltos de red.
Una firma de acceso compartido (SAS) le permite proporcionar a las aplicaciones cliente un acceso limitado a una cola. Puede restringir las operaciones que un cliente puede realizar y el período de tiempo durante el que se permite el acceso. Por ejemplo, puede emitir una SAS que permita a un inquilino añadir mensajes a su propia cola sin permitirle leer ni eliminar mensajes.
Use el patrón de clave de acceso limitado para emitir tokens SAS restringidos y con ámbito desde la capa de aplicación. Autentique el cliente mediante el sistema de autenticación de la aplicación, determine a qué cola del tenant puede acceder y emita un token solo para las operaciones necesarias.
Las directivas de acceso almacenadas le permiten definir una única directiva que se usará al emitir varios tokens de SAS de servicio. Las directivas de acceso almacenadas no se aplican a los tokens de SAS de delegación de usuarios ni a los tokens de SAS de cuenta.
SAS de delegación de usuarios
Una SAS de servicio o una SAS de cuenta se firma con una de las claves de la cuenta de almacenamiento. Una SAS de delegación de usuarios está protegida con credenciales de Microsoft Entra en su lugar. La capa de aplicación solicita una clave de delegación de usuarios mediante su propia identidad administrada y, a continuación, firma tokens de ámbito limitado por tiempo para cada tenant. No distribuyes ni almacenas claves de cuenta. Microsoft recomienda usar una SAS de delegación de usuarios en lugar de una SAS de clave de cuenta cuando su diseño lo admita.
Utilice duraciones de tokens breves y planee cómo revocar el acceso si un token se ve comprometido. Para correlacionar los registros de aplicación con los registros de Queue Storage, establezca un identificador de solicitud de cliente (x-ms-client-request-id) en las solicitudes de almacenamiento y logúrelo junto con el identificador de inquilino.
Control de acceso basado en identidades
Queue Storage proporciona control de acceso basado en identidades a través de Microsoft Entra ID. Utilice identidades administradas y control de acceso basado en roles de Azure para autorizar a la aplicación a acceder a las colas sin almacenar claves de cuenta. Limite el acceso a la cola de cada inquilino cuando estos requieran acceso directo. La autorización en el nivel de cola no aísla los mensajes de los inquilinos individuales dentro de una cola compartida.
Encryption
Queue Storage cifra los datos en reposo con claves administradas por Microsoft de forma predeterminada. Para usar claves administradas por el cliente, configure la cuenta de almacenamiento para usar una clave de cifrado con ámbito de cuenta para las colas al crear la cuenta. No puede cambiar este ámbito de clave de cifrado después de la creación de la cuenta.
Si los inquilinos necesitan claves independientes administradas por el cliente, utilice cuentas de almacenamiento independientes. Los ámbitos de cifrado de Blob Storage y las claves proporcionadas por el cliente en solicitudes individuales no se aplican a Queue Storage. Planifique la rotación y la revocación de claves en función del ciclo de vida del inquilino.
Monitoring
En una solución multiinquilino, considere si necesita medir el consumo de cada inquilino. Defina las métricas específicas que desea supervisar, como el número de mensajes u operaciones de cada inquilino. También puede usar la asignación de costos para realizar un seguimiento del costo del uso de cada inquilino y habilitar el cobro por uso en varias suscripciones.
Queue Storage proporciona funcionalidades de supervisión integradas. Cuando los inquilinos compartan una cola, incluye los identificadores de inquilino en la telemetría de tu aplicación para poder atribuir el procesamiento de mensajes y el uso al inquilino correcto.
Supervise las tasas de solicitud y las respuestas HTTP 500 y 503 para detectar colas o cuentas que se aproximan a los objetivos de escalabilidad. Correlaciona esta telemetría con los identificadores de inquilino para poder identificar a los inquilinos cuyo uso afecta a la capacidad compartida.
Puede recopilar registros de solicitudes y, a continuación, agregarlos y analizarlos junto con la telemetría de la aplicación. En soluciones que crean grandes volúmenes de solicitudes, considere si la ventaja justifica el costo de capturar y procesar esos registros.
Contributors
Microsoft mantiene este artículo. Los siguientes colaboradores escribieron este artículo.
Autor principal:
John Downs | Ingeniero Principal de Software, Azure Patterns & Practices
Otros colaboradores:
- Dr. Christian Geuer-Pollmann | Ingeniero principal de clientes, FastTrack para Azure
- Patrick Horn | Gerente senior de ingeniería de clientes, FastTrack para Azure
- Ben Hummerstone | Ingeniero principal de clientes, FastTrack para Azure
- Vic Perdana | Arquitecto de soluciones en la nube, ISV de Azure
- Daniel Scott-Raynsford | Arquitecto de soluciones asociadas, datos e inteligencia artificial
- Arsen Vladimirskiy | Ingeniero de clientes principal, FastTrack for Azure
Para ver los perfiles no públicos de LinkedIn, inicie sesión en LinkedIn.