porta microsoft management example azure azure-servicebus-queues azure-storage-queues

microsoft - porta azure



Elegir entre.NET Service Bus Queues vs Azure Queue Service (5)

Colas de almacenamiento frente a bus de servicio

Aquí hay un desglose de algunas de las diferentes consideraciones que tuve al pensar en esta pregunta.

Disponibilidad

Desde la interrupción del almacenamiento en noviembre pasado, Azure prometió que nunca implementarían el código en todas las regiones de una vez más: lo incorporaron al sistema para hacerlo imposible. https://azure.microsoft.com/en-us/blog/final-root-cause-analysis-and-improvement-areas-nov-18-azure-storage-service-interruption/

Esto es lo que dice msdn sobre la disponibilidad:

Si ya está usando Blobs o Tablas de almacenamiento de Azure y comienza a usar colas, tiene garantizada una disponibilidad del 99.9%. Si usa Blobs o Tables con colas de Service Bus, tendrá una menor disponibilidad.

Azure Queues está diseñado para admitir el desacoplamiento de los componentes de la aplicación para aumentar la escalabilidad y la tolerancia ante fallas.

Desarrollo

Personalmente, me siento cómodo con las API de almacenamiento y ya tengo la necesidad de su almacenamiento de blobs en otras áreas de la mayoría de las aplicaciones. Las colas de almacenamiento usan el mismo SDK que los blobs de almacenamiento. Azure Queues proporciona un modelo de programación uniforme y uniforme en colas, tablas y BLOB

Costo

El modo de recepción y eliminación admitido por Service Bus proporciona la capacidad de reducir el recuento de la operación de mensajería (y el costo asociado) a cambio de una garantía de entrega reducida.

Parece que hay algunas herramientas en torno al control de costos para el bus de servicio que podría aprovechar si tuviera que comenzar a mantener un presupuesto para ejecutar su aplicación: intenté reducir los posibles costos de la cola de almacenamiento debajo de :). Se trata de menos de cien dólares al mes en más de 40,000 colas por hora para GRS. Agrupado con el resto de nuestros costos de almacenamiento, no veo beneficio de enfocarse en reducir los costos aquí. (El ancho de banda es el mismo para ambos y se cancela al comparar)

Precios de almacenamiento

Obtienes colas y operaciones gratuitas ilimitadas: pagas por el espacio

  • asumir un tamaño de mensaje de 30K como promedio
  • asumir 1000K en un MB no 1024
  • suponga que no alcanzará el precio graduado por encima de 1TB

30K / 1 mensaje * 1 TB / 1000000000K * $ .095 / 1 GB * 1000GB / 1 TB = $ 0.00000285 / mensaje para la primera TB de uso

1 mensaje / ~ 30K * 1000000000K / 1 TB = 33333333 mensajes en un TB

33333333 mensajes * $ 0.00000285 / mensaje = ~ $ 95 dólares por la primera tuberculosis

distribuidos a lo largo de un mes, podemos hacer como 40,000 mensajes por hora con esa primera TB

Precios del servicio de autobús

  • 10 dólares por mes precio base
  • pagar por operación (cualquier llamada api es una operación) - agregar una cola / recibir una cola / monitorear la cola / etc.
  • obtienes 12.5 millones de operaciones gratuitas por mes
  • pagar por millón de operaciones después de eso

Es difícil estimar el uso aquí, pero 100 millones de operaciones cuestan 80 dólares al mes

Batch Receive

El almacenamiento puede generar hasta un máximo de 32 mensajes al especificar el recuento de mensajes cuando se recuperan mensajes, mientras que el Bus de servicio permite que un cliente de cola multiplique varios mensajes en una sola operación de envío.

Por lo tanto, el almacenamiento se recibe por lotes mientras que el bus de servicio se envía por lotes.

Supervisión

Azure Queues le permite obtener un registro detallado de todas las transacciones ejecutadas en la cola, así como también métricas agregadas. Este tipo de soporte no sale de la caja con Service Bus, pero probablemente podría encontrar una solución preconstruida en algún lugar.

Reenvío

Service Bus tiene una función de reenvío automático que hace que falten colas de almacenamiento.

El reenvío automático permite miles de colas para reenviar automáticamente sus mensajes a una única cola, desde la cual la aplicación receptora consume el mensaje. Puede usar este mecanismo para lograr seguridad, controlar el flujo y aislar el almacenamiento entre cada editor de mensajes.

Duplicados

La funcionalidad de detección de duplicación admitida por las colas de Service Bus elimina automáticamente los mensajes duplicados enviados a una cola o tema, en función del valor de la propiedad MessageID.

Los mensajes de la cola de almacenamiento pueden duplicarse sin previo aviso.

Metadata

Service Bus le proporciona 2 partes de un encabezado + cuerpo de mensaje. Esta es una característica muy útil para una infraestructura implementada globalmente. Te permite decorar tus mensajes con cosas como el nombre de la región y el ID de la instancia. Los mensajes de cola son cadenas simples. Por otro lado, las colas de almacenamiento de Azure proporcionan compatibilidad con los atributos arbitrarios que se pueden aplicar a la descripción de la cola, en forma de pares nombre / valor. Para decorar el mensaje en Service Bus y decorar la cola con colas de almacenamiento

Garantía de entrega

Service Bus ofrece la mayoría de las veces y al menos una vez, mientras que las colas solo ofrecen una entrega al menos una vez. Esto podría limitar nuestra capacidad de usar colas si los suscriptores concurrentes alguna vez son un problema.

Actuación

Las colas de almacenamiento de Azure ofrecen una latencia de 10 ms (dentro de un centro de datos) mientras que la latencia de Service Bus 20-25 ms. El bus de servicio ofrece un sondeo largo que sería incluso mejor que 10 ms si lo necesita.

Seguridad

Las colas de almacenamiento usan la clave compartida primaria / secundaria, mientras que el bus de servicio proporciona RBAC a través de Active Directory con funciones de Remitente / Receptor / Administrador.

referencias

Solo una pregunta rápida sobre una aplicación Azure. Si tengo una cantidad de funciones de Web y Trabajador que necesitan comunicarse, la documentación dice que debe usar el servicio Azure Queue.

Sin embargo, acabo de leer que el nuevo .NET Service Bus ahora también ofrece colas. Estos parecen ser más potentes, ya que parecen ofrecer una API mucho más detallada. Mientras que .NSB parece más interesante, tiene un par de problemas que me hacen recelar de usarlo en aplicaciones distribuidas. (por ejemplo, Expiración de cola ... si no puedo garantizar que una cola se renueve a tiempo, puedo perderlo todo).

¿Alguien ha tenido alguna experiencia en el uso de cualquiera de estas dos tecnologías y podría dar algún consejo sobre cuándo elegir una sobre la otra?

Sospecho que si bien el bus de servicio parece más poderoso, como mi caso de uso realmente solo permite que las funciones de Web / Trabajador se comuniquen entre sí, el Servicio de cola de Azure es lo que busco. Pero realmente estoy buscando confirmación de eso antes de programarme en una esquina :-)

Gracias por adelantado.

ACTUALIZAR

He leído acerca de los dos sistemas durante el receso. Parece que el bus de servicio .NET está diseñado más específicamente para integrar sistemas en lugar de proporcionar un sistema de mensajería confiable y de uso general. Las Colas Azure se distribuyen y son tan confiables y escalables de forma que las colas .NSB no son, por lo tanto, más adecuadas para el código alojado dentro de Azure.

Gracias por las respuestas.




Le recomendaría que se quede con Azure Queues para comunicarse entre la web y los roles de los trabajadores. El uso de colas es la forma oficial y autorizada de comunicación entre los procesos de Azure y sinceramente dudo que se programe en una esquina. Service Bus (AppFabric) tiene una sobrecarga más alta y, aunque es realmente bueno para hablar con aplicaciones externas, puede no ser óptimo para mensajes rápidos y simples dentro de su aplicación Azure.


Tal como lo entiendo, el Bus de Servicio (como estaba) ha tenido colas por un tiempo, pero no se garantiza que entreguen el mensaje - ¡buena oportunidad!