Identificar o Serviço de Mensagens Mais Adequado
Saiba mais sobre as considerações para selecionar um serviço de mensagens e, em seguida, use a tabela de matriz de decisões para analisar as diferentes opções e limitações dos serviços do OCI com base nas suas necessidades de negócios.
Considerações para Selecionar um Serviço de Mensagens
Considere os seguintes fatores de avaliação para tomar sua decisão.
Coreografia ou Orquestração
A coreografia e a orquestração são duas abordagens arquitetônicas sobre como diferentes componentes dissociados são organizados para funcionarem juntos. A coreografia adota o princípio de que cada componente funciona de forma independente, mas escuta e assiste por dicas para quando executar sua próxima ação. Um message broker transmite as dicas para o próximo componente. Os componentes podem ser muito autônomos e fáceis de dimensionar. A desvantagem é que cada componente requer uma maior compreensão da sua função na solução geral e acrescenta maior complexidade. Um broker de mensagens é um elemento crítico e sua simplicidade reduz a carga de trabalho e permite maior throughput.
Orquestração refere-se à ideia de componentes montados como uma orquestra. Cada componente só precisa saber sua tarefa e, em seguida, esperar que o condutor ou o orquestrador peça para executar a ação. Assim, o condutor deve compreender e ter a inteligência para dirigir todos os componentes. A função de condutor é fundamental e sua resiliência e capacidade de dimensionamento influenciam diretamente a escalabilidade e a resiliência da solução geral.
Alguns produtos de orquestração incluem a capacidade de coreografar (como a inclusão de um corretor) ou criar serviços que usam componentes para atingir o efeito da comunicação com corretagem.
Pagamento por Mensagem ou Eventos versus Compra em lote
Considere os diferentes modelos de pagamento com base no impacto de custo da sua solução. Você pode optar por pagar por mensagem se tiver um volume de mensagens não utilizado de uma compra em lote. Considere o fato de que o pagamento por mensagem ou evento pode custar mais em volume porque o custo mínimo de presença de um serviço deve ser distribuído em menos usos.
Consumidores de Mensagem Única ou Múltipla
A diferença entre uma Fila e um Tópico é que uma mensagem só pode ser consumida uma vez com uma fila. Um tópico pode ter muitos consumidores diferentes. Filas e tópicos podem ter muitas instâncias de um tipo de consumidor. Várias instâncias do mesmo tipo de consumidor conectadas a um único tópico ou fila são frequentemente descritas como uma Condição de Corrida em que o próximo consumidor disponível leva a próxima mensagem disponível.
Retenção de Mensagem Após a Leitura
Alguns corretores de mensagens excluirão uma mensagem uma vez lida (ou depois que todos os consumidores tiverem lido a mensagem) para gerenciar recursos. O Apache Kafka rastreia até que ponto um consumidor passou pelas mensagens, mas não as exclui uma vez lidas. Isso permite reproduzir mensagens se houver um problema. Portanto, o Kafka atua como um armazenamento de dados, bem como um broker de mensagens e suporta a criação de análises de dados no armazenamento de dados da mensagem.
Ordem Garantida
Garantir que as mensagens sejam entregues na ordem em que são recebidas, em vez da ordem em que são armazenadas, introduz complexidade e impacta o desempenho. Os problemas de latência podem ser introduzidos ao trabalhar por meio de um corretor, pois podem esperar antes de permitir que os consumidores recebam uma mensagem para garantir que não haja mensagens atrasadas que devam ser inseridas na ordem correta antes de serem consumidas.
Por exemplo, a ordenação de mensagens é essencial para eventos que representam uma ordem que está sendo cancelada. A mensagem para a criação da ordem poderá causar problemas no aplicativo se as mensagens não seguirem a ordem.
Existem padrões e estratégias no nível do aplicativo que podem ajudar a mitigar problemas de ordenação e compensar restrições de corretores.
Operação Assíncrona
O benefício de usar um mecanismo de corretagem é que o provedor de mensagens não precisa saber sobre o consumidor e não diminui o provedor. O corretor sabe quem é o consumidor, se ele está disponível ou não, e gerencia a transmissão se houver problemas com o consumidor (como desempenho). O uso do corretor permite comunicação assíncrona, e o provedor e o consumidor não precisam estar sincronizados.
Taxa Máxima de Mensagens, Período de Retenção de Mensagens e Volume Máximo de Retenção
Esses fatores são todos influenciadores no custo de fornecer uma solução sem servidor e muitas vezes exigirão limites difíceis para serem definidos. O software nem sempre oferece um desempenho uniforme à medida que aumenta as expectativas. Você pode definir limites para controlar expectativas e fornecer comportamentos previsíveis. Você deve entender esses limites para determinar se eles podem afetar a solução que está criando.
Por exemplo, um sistema de negociação de ações receberá mensagens quando os preços de compartilhamento mudarem. Cada mensagem será pequena, mas o volume de mensagens será alto devido à alta frequência de atualizações. Um corretor com um baixo throughput, mas um tamanho de mensagem grande não pode suportar este requisito.
Suporte de Entrada de Padrões do Setor e Suporte de Saída de Padrões do Setor
O uso de formatos e protocolos padrão do setor para enviar e receber mensagens aumenta a capacidade de o mecanismo de mensagens ser reconfigurado e usado com diferentes implantações e provedores de implementação. Você pode aproveitar bibliotecas comuns para lidar com a mecânica de comunicação de baixo nível e também reduzir o vínculo do fornecedor.
Suporte a Adaptador de Terceiros
Para ajudar a desenvolver provedores de mensagens e consumidores, ter suporte por meio de adaptadores de terceiros pode ser vantajoso à medida que aumenta as opções de desenvolvimento.
Implantações Individuais por Compartimento
Você pode implantar canais ou fluxos de mensagens individuais em compartimentos específicos e permitir que os serviços de uma solução tenham potencialmente controles de segurança selecionados por meio de uma superfície de controle comum. Essa abordagem pressupõe que todos os elementos possam ser controlados no nível do compartimento. As soluções que não podem acomodar controles no nível do compartimento por canal podem oferecer alternativas. As abordagens alternativas podem exigir considerações adicionais sobre configuração.
Usar Autenticação do OCI IAM
O Oracle Cloud Infrastructure Identity and Access Management (OCI IAM) fornece um nível de segurança de classe empresarial robusto nos casos em que a segurança pode ser federada a outros provedores. Trabalhar por meio de um único provedor de IAM (com ou sem federação) torna o controle de segurança do acesso ao fluxo de dados mais gerenciável.
Os dados são criptografados em voo e em repouso
Se os dados que passam pelo serviço forem sensíveis, eles deverão ser protegidos durante a transmissão e durante a permanência do corretor até a entrega. As mensagens confidenciais devem ser criptografadas pelo mecanismo de criptografia do corretor para garantir que não haja perda de mensagem.
Transformação de Mensagem
Dependendo dos princípios arquitetônicos adotados, o corretor pode precisar ter a capacidade de traduzir a formatação de mensagens. O provedor de mensagens ou os consumidores não precisam entender a semântica de dados comum ou saber como o provedor ou os consumidores querem que os dados sejam formatados. Essa consideração também pode se estender a alterações nos protocolos que estão sendo usados. Por exemplo, traduzir de REST para STOMP.
Trilha de Auditoria
Para ajudar a remediar problemas com aplicativos distribuídos, uma trilha de auditoria permite o rastreamento de onde uma mensagem foi transmitida e recebida. Ter uma trilha de auditoria pode ser útil quando você deve cumprir os requisitos legais. Portanto, pode ser necessário aprender como o serviço pode suportar esse requisito.
Analisar a Matriz de Decisão
Use a matriz de decisão a seguir para conhecer as opções disponíveis dos serviços OCI e as considerações ou fatores de avaliação para escolher um serviço específico.
Serviço/Fator | Fila | Streaming | Notificações | Oracle Integration (Gen2, Gen3) | Autonomous Database (TEQ e AQ) |
---|---|---|---|---|---|
Coreografia versus Orquestração |
Coreografia |
Coreografia | Coreografia | Coreografia e Orquestração (Depende da configuração de integração) | Coreografia e Orquestração (Depende da configuração de integração) |
Pagamento por mensagem ou evento versus compra em massa | Per API call + multiplier for messages > 64 KB |
Per GB data transfer + Storage |
Depende do canal de comunicação. Preço por quantidade enviada. | Preço em blocos de 5000 chamadas de integração por hora | Não, preços do Database |
Um único ou vários consumidores para uma mensagem |
Um único consumidor. (Condições de rendas permitidas, mas apenas um consumidor por mensagem). |
Único e Vários | Único e Vários | Único e Múltiplo (Depende da definição de integração) | Único e Vários |
Retenção de mensagens após leitura | Não | Sim | Não | Sim (Depende da definição de integração) | Sim |
Ordem garantida | Melhor esforço | Sim, em uma partição | Não | Sim (Depende da definição de integração) | Parcial (É possível definir regras sobre prioridades, que podem ditar ordem de consumo) |
Operação assíncrona | Sim | Sim | Sim | Sim (Depende da definição de integração) | Sim |
Padrões do setor suportados para entradas | API REST, STOMP | Conexão Kafka | Eventos na Nuvem de Eventos, Alarmes do OCI | Vários adaptadores diferentes |
JMS e SQL Fornecer exposição adicional com implementações ORDS personalizadas fornecendo APIs REST |
Suporte do Adaptador de Terceiros |
Implementações STOMP de código aberto |
Qualquer ferramenta, biblioteca ou SDK compatível com Kafka | Não | Ampla gama de adaptadores do setor. Você pode gerar a partir da interface REST ou de um cliente JMS padrão |
Uso da biblioteca padrão JMS O SQL é amplamente suportado |
Padrões do setor suportados para saídas | STOMP, API REST | Conexão Kafka | E-mail, Slack, PagerDuty, HTTP/S | Vários adaptadores diferentes | JMS e SQL |
Taxa máxima de mensagens | 10 MBPS |
1 MB por segundo por partição Até 250 solicitações |
60 por minuto para HTTP/S 10 por minuto para E-mail 60 por minuto para tópicos de notificação |
Nenhum especificado | Depende do tamanho do banco de dados |
Período de retenção de mensagens | 7 dias (ou menos, se configurado) | 7 dias | Até repetições de entrega esgotadas | Nenhum definido | Configurável |
Volume Máximo de Retenção | 2 GB por fila (20 GB por tenancy) | A retenção é ditada pela taxa de gravação máxima de 1 MB por segundo por partição por 7 dias. | A função da taxa de mensagens e da duração da nova tentativa de entrega. | Não aplicável | Depende da configuração do Banco de Dados |
Suportado pelo OCI SDK ou CLI para enviar mensagens | Sim | Sim | Sim | Não | Não |
Implantações individuais por compartimento | Sim | Sim | Sim |
Não. Instâncias do Oracle Integration separadas no nível do compartimento, e não integrações individuais |
Não. As instâncias do banco de dados se alinham aos compartimentos, não às filas individuais |
Usa Autenticação do IAM (RBAC e assim por diante) | Sim | Sim | Sim | Sim | Sim |
Os dados são criptografados em voo e em repouso | Sim | Sim | Sim | Sim | Depende da configuração do Banco de Dados |
Transformação de mensagem | Não | Não |
Limitado. Formatação amigável para e-mail etc. Se o ponto final estiver usando o Oracle Functions, o serviço Functions poderá transformar a mensagem. |
Sim | Sim (Procedimentos SQL armazenados) |
Auditoria | Sim (usando Log) | Sim (usando Log) | Sim (usando Log) | Sim (Inclui o Oracle Integration com Log) | Sim |
Você pode interpretar a matriz usando as seguintes informações:
- Modelo de pagamento: refere-se a por mensagem ou compra em massa de capacidade.
- Condição de atribuição: Quando uma fila tem vários consumidores, os consumidores são descritos como estando em uma 'condição de rastreamento' porque as próximas mensagens são processadas pelo consumidor que primeiro está pronto para outra mensagem.
- Pontos finais baseados em REST: Alguns dos serviços oferecem pontos finais baseados em REST. Se o payload REST for modelado usando uma especificação de API Aberta, talvez ele não forneça um SDK específico do payload. Nesses casos, você pode usar serviços do API Gateway para gerar SDKs. Consulte a Documentação do OCI sobre Geração de SDKs para um Recurso de API para obter mais informações.
Além dos serviços da OCI, a matriz se refere a estas tecnologias:
- STOMP: Simple (ou Streaming) Text Orientated Messaging Protocol. Ele oferece um formato de transmissão interoperável para que os clientes STOMP possam se comunicar com qualquer corretor de mensagens STOMP para fornecer interoperabilidade de mensagens fácil e ampla entre muitos idiomas, plataformas e corretores.
- Implementações STOMP: refere-se aos servidores de mensagens compatíveis com STOMP conhecidos.
- Kafka Connect: Essa ferramenta permite o streaming e o dimensionamento de dados de forma confiável entre o Apache Kafka e outros sistemas. Permite definir rapidamente conectores que movem grandes coleções de dados para dentro e para fora do Kafka.
Você pode ler informações adicionais sobre as tecnologias na seção Explorar.