A comunicação é a chave. Especialmente, quando há um aplicativo distribuído de alta transação com milhares de entidades fracamente acopladas envolvidas. Nesse caso, há uma necessidade extrema de comunicação escalável e flexível entre diferentes módulos para manter seu aplicativo funcionando sem problemas, sem informações obsoletas.
Como os aplicativos emergentes estão mudando para a arquitetura baseada em microsserviços, aqui estão algumas questões fundamentais que você precisa considerar ao projetar a arquitetura de comunicação de apoio de aplicativos relevantes.
- É escalável?
- É confiável?
- O armazenamento é eficiente?
NCache é um cache distribuído na memória que tem sido amplamente adotado para melhorar o desempenho do .NET/ baseado em microsserviços. .NET Core aplicações. NCache agora fornece um recurso Publisher-Subscriber (Pub/Sub) para habilitar um paradigma de mensagens orientado a eventos para esses aplicativos.
NCache Adicionar ao carrinho NCache Pub / Sub NCache Docs
Apresentando... NCache Pub / Sub
NCache fornece um sistema de mensagens Pub/Sub na memória para permitir o compartilhamento de informações em tempo real em aplicativos da Web .NET. O modelo Pub/Sub naturalmente separa editores e assinantes, fornecendo um canal onde as mensagens são publicadas e assinadas pelos usuários interessados. Agora quando NCache atua como um barramento de mensagens, o modelo Pub/Sub se beneficia do NCache arquitetura distribuída e vários úteis características. Veremos como combinar NCache e o Pub/Sub podem resolver os desafios acima e, eventualmente, ajudar seus aplicativos a se comunicarem melhor.
Você pode ver o componentes principais de NCache Pub / Sub para entender os fundamentos desse recurso. Sem mais delongas, vamos primeiro ver como fazer as coisas para utilizar as mensagens do Pub/Sub.
Como usar NCache Mensagens do Pub/Sub
Suponha que você tenha um aplicativo de e-commerce onde você precisa ser notificado de cada novo produto adicionado à loja. Uma vez que pode ser alcançado usando NCache Pub/Sub, primeiro você precisa criar um cache. É recomendável ter um cache dedicado para Pub/Sub. Em seguida, discutimos o processo passo a passo de criação de um tópico para obter notificações relevantes para novos produtos, publicar mensagens e assinar mensagens.
NCache Adicionar ao carrinho NCache Pub / Sub NCache Docs
Criar um tópico
NCache fornece um ITopic
interface para criar um tópico com um nome exclusivo. Veja como seu aplicativo de editor pode criar um tópico com o nome Novos Produtos usando o método CreateTopic
.
1 2 3 4 5 6 |
// Pre-condition: Cache is already connected // Specify the topic name string topicName = “newProducts” // Create topic ITopic topic = cache.MessagingService.CreateTopic(topicName); |
Se o tópico já existir, uma instância do tópico é retornada como ITopic
.
Pode acontecer que certos eventos sejam mais importantes e precisem ser comunicados assim que ocorrerem. Por exemplo, ser notificado sobre produtos/produtos acabados à venda pode ser mais importante sendo um vendedor/comprador. Nesse caso, você pode definir prioridade do tópico para alto ao criar o tópico e receba as notificações relevantes sem qualquer espera.
Publicar mensagens
Depois que um tópico é criado, o aplicativo do editor pode publicar mensagens relevantes para esse tópico usando Publish
método. Para isso, você primeiro obtém uma instância do tópico fornecendo o nome do tópico. O código a seguir mostra como você pode publicar uma mensagem relevante para um novo produto em um tópico já existente Novos Produtos.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
// Pre-condition: Cache is already connected // Topic “newProducts” already created string topicName = “newProducts” // Get the topic ITopic productTopic = cache.MessagingService.GetTopic(topicName); // Create the object to be sent in message Product product = FetchProductFromDB(10248); // Create the new message with the object order var productMessage = new Message(product); // Publish the order with delivery option set as all orderTopic.Publish(productMessage, DeliveryOption.All, true); |
Sendo um editor, você pode precisar transmitir determinadas mensagens ou entregar para qualquer um com base no cenário do aplicativo. Por exemplo, se o preço de um produto for atualizado, todos os assinantes devem ser notificados. No entanto, isso pode não ser o caso sempre. Mantendo isso em vista, o modo de entrega pode ser especificado durante a publicação de mensagens. As duas opções de entrega de mensagens a seguir são fornecidas por NCache Pub / Sub.
- Todos os Produtos (padrão): Entrega a mensagem a todos os assinantes cadastrados.
- Qualquer: Entrega a mensagem a qualquer um dos assinantes registrados.
See opções de entrega para mais detalhes.
Além disso, para gerenciar com eficiência o espaço de armazenamento do cache do Pub/Sub, você também pode definir expirações de mensagens.
Inscrever-se em um tópico
Após a publicação de uma mensagem em um tópico, seu aplicativo de assinante cria uma assinatura nesse tópico para receber mensagens usando o CreateSubscription
método. O código abaixo mostra como um aplicativo de assinante pode criar uma assinatura para o tópico Novos Produtos de MessageReceived
ligar de volta.
1 2 3 4 5 6 7 8 9 10 |
// Pre-condition: Cache is already connected // Topic “newProducts” already created string topicName = “newProducts” // Get the topic ITopic productTopic = cache.MessagingService.GetTopic(topicName); // Create and register subscribers for topic newProducts // MessageReceived callback is specified ITopicSubscription orderSubscriber = orderTopic.CreateSubscription(MessageReceived); |
Suponha que o aplicativo do assinante precise atualizar os preços dos produtos ao receber notificações de venda. Em seguida, a operação de atualização de preço pretendida pode ser realizada no MessageReceived
ligar de volta.
Uma assinatura criada no exemplo acima não é durável e as assinaturas não são duráveis por padrão. Além disso, você também pode criar uma assinatura durável usando o NCache IDurableTopicSubscription
interface. No caso de uma assinatura durável, NCache retém a assinatura de um assinante em caso de perda de conexão. Isso significa que as mensagens publicadas em um tópico são atribuídas à assinatura mesmo que o assinante esteja offline. Assim, o assinante pode receber essas mensagens ao se reconectar.
Além disso, você pode se inscrever em tópicos únicos/múltiplos que se enquadram no padrão fornecido usando o método de assinatura baseado em padrões onde NCache suporta vários curingas.
Registrar notificações
Sendo um editor, você pode precisar saber o status das mensagens e a disponibilidade dos tópicos. Vamos ver que tipo de notificações seus aplicativos de editor podem registrar enquanto usam NCache Mensagens do Pub/Sub.
MessageDeliveryFailure:
para ser notificado se a mensagem não foi entregue devido a algum problema.OnTopicDeleted:
para ser notificado quando um tópico for excluído.
Veja como o editor pode se registrar para esses dois tipos de notificações de forma simples.
1 2 3 4 5 6 7 |
// You have an instance productTopic of existing topic // Register message delivery failure productTopic.MessageDeliveryFailure += OnFailureMessageReceived; //Register topic deletion notification productTopic.OnTopicDeleted = TopicDeleted; |
Sua marca NCache Pub/Sub para mensagens distribuídas?
Até aqui, estamos familiarizados com o NCache Recurso Pub/Sub. Agora, quais os benefícios Ncache O Pub/Sub se oferece para lidar com as questões levantadas inicialmente?
- NCache fornece escalabilidade linear devido ao qual seu aplicativo pode lidar com o número crescente de solicitações de assinatura sem problemas.
- NCache garante a alta disponibilidade de NCache que acomoda a conectividade dos assinantes em ambientes dinâmicos.
- NCache permite expiração e despejos em itens que residem no cache para gerenciar de forma inteligente o espaço de armazenamento.
Portanto, os recursos acima, juntamente com o baixo acoplamento e o modo de mensagens assíncronas do Pub/Sub, tornam NCache Recurso Pub/Sub altamente promissor para mensagens distribuídas em seus futuros aplicativos .Net.
NCache Adicionar ao carrinho Baixar NCache Comparação de edições