Pergunta

Apenas uma pergunta rápida sobre uma aplicação Azure. Se eu tenho um número de Web e Worker papéis que precisam se comunicar, a documentação diz para usar o serviço de fila Azure.

No entanto, Acabei de ler que o novo Service Bus .NET agora também oferece filas. Estes olhar para ser mais poderoso como eles aparecem para oferecer uma API muito mais detalhado. Enquanto o .NSB parece mais interessante que tem um par de questões que me fazem desconfiar de usá-lo em aplicação distribuída. (Por exemplo, fila de Expiração ... se eu não pode garantir que a fila será renovada no tempo posso perder tudo!).

Alguém já teve alguma experiência usando qualquer uma destas duas tecnologias e poderia dar algum conselho sobre quando escolher um sobre o outro.

Eu suspeito que, embora a aparência de ônibus de serviços mais potentes, como o meu caso de uso é realmente apenas permitindo Web papéis / assistente para se comunicar entre si, que o serviço de fila Azure é o que eu estou atrás. Mas eu só estou olhando realmente para a confirmação de que, antes de programação me para um canto: -)

Agradecemos antecipadamente.

Atualização

leu-se sobre os dois sistemas durante as férias. É defo olhares como barramento de serviço .NET é mais especificamente projetado para integração de sistemas em vez de fornecer um sistema de mensagens confiável para uso geral. Azure filas são distribuídos e tão confiável e escalável de modo que as filas .NSB não e são tão mais adequado para código hospedado dentro de si Azure.

Obrigado pelas respostas.

Foi útil?

Solução

Eu recomendo que você ficar com Azure filas para a comunicação entre as funções da web e de trabalhadores. Usando filas é a forma oficial e sancionado de comunicação entre processos Azure e eu sinceramente duvido que você vai programar-se em um canto. Service Bus (AppFabric) tem uma sobrecarga maior e embora realmente bom para falar com aplicativos externos, pode não ser ideal para mensagens rápidas e simples em seu aplicativo Azure.

Outras dicas

Filas de armazenamento vs Service Bus

Aqui está uma repartição de algumas das diferentes considerações que eu tinha em pensamento através desta questão.

Disponibilidade

Uma vez que a queda de armazenamento em novembro passado Azure prometeu que nunca iria implantar código para todas as regiões de uma vez - o construiu no sistema para torná-lo impossível. https://azure.microsoft.com/en-us/blog/final-root-cause-analysis-and-improvement-areas-nov-18-azure-storage-service-interruption/

Aqui está o MSDN diz sobre disponibilidade:

Se você já estiver usando Azure Blobs armazenamento ou Tabelas e você começar a usar as filas, você está garantido de 99,9% de disponibilidade. Se você usar Blobs ou tabelas com filas Service Bus, você terá menor disponibilidade.

Azure filas são projetados para suportar a dissociação entre componentes do aplicativo para aumentar a escalabilidade e tolerância a falhas.

Desenvolvimento

Pessoalmente, estou confortável com a API de armazenamento e já precisa para o seu armazenamento blob em outras áreas da maioria dos aplicativos. filas de armazenamento usar o mesmo SDK como bolhas de armazenamento. Azure Queues fornecer um modelo de programação consistente e uniforme em toda filas, tabelas, e BLOBs

Custo

A Receber e modo de exclusão suportado pelo Service Bus fornece a capacidade de reduzir a contagem de operação de mensagens (e os custos associados) em troca da garantia de entrega reduzidos.

Parece que há alguma estampagem ao redor de controle de custos para barramento de serviço que você poderia aproveitar se você tivesse que começar a manter um orçamento para executar o seu app - Eu fiz uma tentativa de quebrar os potenciais custos de fila de armazenamento abaixo :). Ele vem para menos de cem dólares por mês em mais de 40.000 filas de uma hora para GRS. Agrupados com o resto dos nossos custos de armazenamento não vejo benefício para se concentrar na redução de custos aqui. (Largura de banda é o mesmo para ambos e se anula quando se comparam)

preços de armazenamento

Você começa filas grátis ilimitadas e operações - você paga para o espaço

  • assumir 30K tamanho da mensagem como uma média
  • assumir 1000K em uma MB não 1024
  • supor que você não vai bater o formou preços acima de 1TB

30K / 1 mensagem * 1 TB / 1000000000K * $ 0,095 / 1 GB * 1000 GB / 1 TB = $ 0,00000285 / mensagem pela primeira TB de uso

1 mensagem / ~ 30K * 1000000000K / 1 TB = 33333333 mensagens em uma TB

33333333 mensagens * $ 0,00000285 / message = ~ $ 95 dólares para o primeiro TB

distribuída ao longo de um mês que nós podemos fazer como 40.000 mensagens de uma hora com o primeiro TB

preços Service Bus

  • 10 dólares um preço base mês
  • pagamento por operação (qualquer chamada de API é uma op) -. Adicionar uma fila / receber uma fila / monitorar a fila / etc
  • você recebe 12,5 milhões de ops gratuitos / mês
  • pay per milhões de ops depois disso

É difícil estimar o uso aqui, mas 100 milhões de operações custa 80 dólares por mês

Batch Receber

O armazenamento pode lote até um máximo de 32 mensagens especificando contagem mensagem ao recuperar mensagens enquanto Service Bus permite que um cliente fila para mensagens de vários lotes em uma única operação de envio.

armazenamento Então é lote receber enquanto bus serviço é enviar lote.

Monitoramento

Azure Queues permitirá obter um registro detalhado de todas as operações realizadas contra a fila, bem como agregados métricas. Este tipo de apoio não sai da caixa com Service Bus -. Mas provavelmente poderia encontrar um lugar solução pré-integrada

Forwarding

Service Bus tem um recurso de encaminhamento de auto que as filas de armazenamento está faltando.

o encaminhamento automático permite que milhares de filas para auto-encaminhar suas mensagens para uma fila única, a partir do qual o aplicativo de recepçãocação consome a mensagem. Você pode usar esse mecanismo para alcançar a segurança, controle de fluxo e armazenamento isolado entre cada publisher mensagem.

Duplicatas

A funcionalidade de detecção de duplicação apoiado por filas Service Bus remove automaticamente as mensagens duplicadas enviadas para uma fila ou tópico, com base no valor da propriedade MessageID.

mensagens fila de armazenamento pode duplicar sem aviso.

Metadados

Service Bus dá-lhe 2 partes de um corpo cabeçalho da mensagem +. Este é um recurso muito útil para uma infra-estrutura implantada globalmente. Permitindo que você decorar suas mensagens com coisas como nome da região e exemplo id. Mensagens da fila são cadeias simples. Por outro lado filas de armazenamento Azure proporcionar apoio para os atributos arbitrárias que podem ser aplicados para a descrição da fila, sob a forma de pares de nome / valor. Então você pode decorar a mensagem no Service Bus e decorar a fila com as filas de armazenamento

Entrega Garantia

oferece um serviço de autocarros a-mais-Once e At-Menos Certa vez, enquanto filas só oferecer At-Menos Uma vez que a entrega. Isso pode limitar a nossa capacidade de usar as filas se assinantes simultâneos são sempre um problema.

Desempenho

Azure filas de armazenamento oferecem uma 10ms de latência (dentro de um datacenter), enquanto Service Bus 20-25ms latência. barramento de serviço faz oferta a longo polling o que seria ainda melhor do que 10ms, se você tem uma necessidade para ela.

Segurança

filas

Armazenamento usar a coisa chave compartilhada primário / secundário, enquanto barramento de serviço fornece RBAC via Active Directory com emissor / receptor / Funções do administrador.

referências

Pelo que entendi, o Service Bus (como foi) teve filas por um tempo, mas estes não são garantidos para entregar a mensagem - oportunidade bon

Azure Queues costuras para corresponder porque o seu caso de uso permanece básico com interface simples baseada em REST Get / Put / Peek.

Os havs documentação foi atualizado recentemente (2015/05/21) e detalha precisamente ao usar um ou o outro, e as características comuns (suporte a transações, o tamanho da fila e mensagem, tempo para viver, ... ):

https://azure.microsoft.com/en-us/documentation/articles/service-bus-azure-and-service-bus-queues-compared-contrasted/

A fila de padrões relacionados com um desenvolvedor tem conhecimento pode ser aplicado a ambos. Ambos podem ser usados ??a partir de um ponto de vista de confiabilidade e implementação-facilidade.

fila As coisas só de armazenamento pode fazer 1) O trabalhador o processamento de uma mensagem de falha. Um trabalhador posterior quer ler o estado da mensagem para continuar de onde o trabalhador antes parou. 2) Você precisa de registos do lado do servidor de todas as operações realizadas contra suas filas.

Mas as comparações não importa. Se desenvolvimento fila personalizada é o que precisamos, em seguida, use sempre fila de armazenamento. Ele foi o primeiro a ser desenvolvido pela Microsoft. barramento de serviço foi trazida-in copiar BizTalk eo propósito é a integração (híbrido), portanto, há recursos avançados nesta linha: sessões, transações, mortos-letras automáticas, etc.

Este link fornece uma comparação, o mesmo acontece com este link . Vai ser difícil de analisar tudo e começar em um desenvolvimento ágil, portanto a regra acima mencionada.

Para tornar as coisas muito claro, esta é uma comparação entre dois componentes Azure, criado em um ponto diferente no tempo, por diferentes razões.

filas de armazenamento e filas Service Bus - comparados e contrastados

Azure suporta dois tipos de mecanismos de filas: filas de armazenamento e Service Bus filas.

filas de armazenamento, que fazem parte da infra-estrutura de armazenamento Azure, dispõem de uma interface simples baseada em REST GET / PUT / PEEK, proporcionando , Mensagens persistente de confiança dentro e entre serviços.

filas Service Bus são parte de uma mensagem mais ampla Azure infra-estrutura que suporta enfileiramento, bem como publicação / assinatura, e mais padrões de integração avançados. Para mais informações sobre Serviço filas de ônibus / temas / inscrições, consulte a visão geral do Service Bus.

Embora ambas as tecnologias de enfileiramento existem simultaneamente, filas de armazenamento foram introduzidas em primeiro lugar, como um mecanismo de armazenamento de fila dedicada construído sobre superior dos serviços Azure armazenamento. filas Service Bus são construídos em cima de a infra-estrutura de mensagens mais amplo projetado para integrar aplicações ou componentes de aplicação que pode se estender por várias protocolos de comunicação, contratos de dados, domínios de confiança, e / ou rede ambientes.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top