Seção de Perguntas Frequentes do Streaming

Questões gerais

O que é o Oracle Cloud Infrastructure Streaming?

O Oracle Cloud Infrastructure (OCI) Streaming fornece uma solução de mensagens totalmente gerenciada, escalável e durável para ingestão de fluxos contínuos de alto volume de dados que você pode consumir e processar quase em tempo real. O Streaming está disponível em todas as regiões da Oracle Cloud Infrastructure compatíveis. Para obter uma lista, visite a página de Regiões e Domínios de Disponibilidade.

Por que devo usar o Streaming?

Streaming é um serviço serverless que descarrega o gerenciamento de infraestrutura, desde a rede até o armazenamento e a configuração necessária para transmitir os dados. Você não precisa se preocupar com o provisionamento de infraestrutura, manutenção contínua ou aplicação dos patches de segurança. O serviço Streaming replica de maneira síncrona dados em três domínios de disponibilidade, proporcionando alta disponibilidade e durabilidade de dados. Em regiões com um único domínio de disponibilidade, os dados são replicados em três domínios de falha.

Como posso usar o Streaming?

O streaming facilita a coleta, o armazenamento e o processamento de dados gerados em tempo real a partir de centenas de fontes. O número de casos de uso é quase ilimitado, variando do sistema de mensagens ao processamento do fluxo de dados complexos. Estes são alguns dos muitos usos possíveis para o Streaming:

  • Mensagens: Use o Streaming para separar os componentes de sistemas grandes. Produtores e consumidores podem usar o Streaming como um barramento de mensagens assíncrono e agir de maneira independente e no próprio ritmo.
  • Métrica e ingestão de log: Use o Streaming como uma alternativa para métodos tradicionais de extração de arquivos, para ajudar a disponibilizar dados operacionais críticos rapidamente para indexação, análise e visualização.
  • Ingestão de dados de atividade na Web ou móvel: Use o serviço Streaming para capturar atividades de sites ou aplicativos móveis, como visualizações de página, pesquisas ou outras ações do usuário. Você pode usar essas informações para monitoramento e análise em tempo real e em sistemas de data warehousing para processamento e geração de relatórios offline.
  • Infraestrutura e processamento de eventos de aplicativos: Use o Streaming como um ponto de entrada unificado para que os componentes da nuvem reportem seus eventos de ciclo de vida para atividades de auditoria, contabilidade e atividades relacionadas.

Como começo a usar o Streaming?

Você pode começar a usar o Streaming da seguinte maneira:

  1. Crie um fluxo usando o Console da Oracle Cloud Infrastructure ou o funcionamento da API CreateStream.
  2. Configure os produtores para publicar mensagens no fluxo. Consulte Como publicar mensagens.
  3. Crie consumidores para ler e processar dados do fluxo. Consulte Como consumir mensagens.

Você também pode usar APIs Kafka para produzo e consumo de um fluxo. Para obter mais informações, consulte Uso do Streaming com Apache Kafka.

Quais são os limites de serviço do Streaming?

A taxa de transferência de Streaming foi projetada para escalonamento sem limites adicionando partições a um fluxo. No entanto, existem determinados limites a serem considerados durante o uso do Streaming:

  • O período máximo de retenção para mensagens em um fluxo é de sete dias.
  • O tamanho máximo de uma mensagem exclusiva que pode ser produzida em um fluxo é de 1 megabyte (MB).
  • Cada partição pode processar até 1 MB por segundo da taxa de transferência com um número qualquer de solicitações de gravações.
  • Cada partição pode suportar uma taxa total máxima de gravação de dados de 1 MB por segundo e uma taxa de leitura de 2 MB por segundo.

Como o Streaming se compara com um serviço baseado em fila?

Streaming oferece semântica baseada em fluxo. A semântica de fluxo oferece garantias estritas de ordenação por partição, capacidade de reprodução da mensagem, cursores no lado do cliente e escala horizontal massiva da taxa de transferência. As filas não oferecem esses recursos. As filas podem ser projetadas para oferecer garantias de pedido em caso de uso de filas FIFO, mas somente ao custo da adição de sobrecarga significativa em termos de desempenho.

Conceitos Chave

O que é um fluxo?

Fluxo é um log de mensagens particionado, somente anexado, no qual as aplicações produtores gravam dados nos e das quais as aplicações consumidoras leem dados.

O que é um conjunto de fluxos?

Um conjunto de fluxos é um agrupamento que você pode usar para organizar e gerenciar fluxos. Os conjuntos de fluxos oferecem facilidade operacional ao fornecer uma capacidade de compartilhar definições de configuração em vários fluxos. Por exemplo, os usuários podem compartilhar configurações de segurança como chaves de criptografia personalizadas no conjunto de fluxos para criptografar os dados de todos os fluxos dentro do conjunto. Um conjunto de fluxos também permite criar um endpoint privado para fluxos restringindo o acesso à Internet para todos os fluxos dentro de um conjunto. Para clientes que usem o recurso de compatibilidade Kafka do Streaming, o conjunto de fluxos funciona como a raiz de um cluster Kafka virtual, permitindo, assim, que cada ação nesse cluster virtual tenha como escopo esse conjunto de fluxos.

O que é uma partição?

Uma partição é uma unidade de transferência básica que permite o escalonamento horizontal e o paralelismo da produção e do consumo com base em um fluxo. Uma partição fornece uma capacidade de entrada de dados de 1 MB/s e saída de dados de 2 MB/s. Ao criar um fluxo, você especifica o número de partições necessárias com base nos requisitos da taxa de transferência da aplicação. Por exemplo, você pode criar um fluxo com 10 partições, quando pode atingir uma taxa de transferência de 10 MB/s de entrada e 20 MB/s de saída de um fluxo. Se precisar de partições além dos limites de serviço existentes, o Streaming antecipará um uso mínimo de 10 GB por hora (solicitações PUT e GET) para cada 50 partições usadas. Você será cobrado pelo uso mínimo esperado, mesmo que o uso real fique abaixo dessa taxa.

O que é uma mensagem?

Mensagem é uma unidade de dados codificada em base64 armazenada em um fluxo. O tamanho máximo de uma mensagem que você pode produzir para uma partição em um fluxo é de 1 MB.

O que é uma chave?

Uma chave é um identificador usado para agrupar mensagens relacionadas. Mensagens com a mesma chave são gravadas na mesma partição. O streaming garante que qualquer consumidor de uma determinada partição sempre lerá as mensagens dessa partição exatamente na mesma ordem na qual foram gravadas.

O que é um produtor?

Produtor é uma aplicação cliente que pode gravar mensagens em um fluxo.

O que são um consumidor e um grupo de consumidores?

Consumidor é uma aplicação cliente que pode ler mensagens de um ou mais fluxos. Grupo de consumidores é um conjunto de instâncias que coordena mensagens de todas as partições em um fluxo. A qualquer momento, as mensagens de uma partição específica só podem ser consumidas por um único consumidor do grupo.

O que é um cursor?

Cursor é um ponteiro para um local em um fluxo. Esse local pode ser um ponteiro para um deslocamento ou tempo específico em uma partição ou para o local atual de um grupo.

O que é um deslocamento?

Cada mensagem dentro de uma partição possui um identificador chamado deslocamento. Os consumidores podem ler mensagens a partir de um deslocamento específico e podem ler de qualquer ponto de deslocamento que escolherem. Os consumidores também podem confirmar o deslocamento processado mais recente para poder retomar o trabalho sem repetir ou perder uma mensagem caso parem e reiniciem.

Segurança

Qual é a segurança dos meus dados quando estou usando o Oracle Cloud Infrastructure Streaming?

O Streaming fornece criptografia de dados por padrão, em repouso e em trânsito. O Streaming é totalmente integrado ao Oracle Cloud Infrastructure Identity and Access Management (IAM), o que permite usar políticas de acesso para conceder permissões seletivamente a usuários e grupos de usuários. Ao usar APIs REST, você também pode aplicar PUT e GET com segurança nos seus dados do Streaming por meio de endpoints SSL com protocolo HTTPS. Além disso, o Streaming oferece isolamento completo de dados no nível de tenant, sem problemas de "noisy neighbor".

Posso usar o meu próprio conjunto de chaves mestras para criptografar os dados em fluxos?

Os dados do Streaming são criptografados em repouso e em trânsito, o que garante a integridade da mensagem. Você pode deixar a Oracle gerenciar a criptografia ou usar o Oracle Cloud Infrastructure Vault para armazenar e gerenciar com segurança as próprias chaves de criptografia, caso precise atender a padrões específicos de conformidade ou segurança.

Quais configurações de segurança de um conjunto de fluxos posso editar após a criação?

Você pode editar as configurações de criptografia de dados do conjunto de fluxos a qualquer momento, caso queira alternar o uso de "Criptografia fornecida por Oracle Keys" e "Criptografia gerenciada usando chaves gerenciadas pelo cliente". O Streaming não impõe nenhuma restrição sobre quantas vezes essa atividade pode ser realizada.

Como faço para gerenciar e controlar o acesso ao meu fluxo?

O Streaming é totalmente integrado ao Oracle Cloud Infrastructure IAM. Cada fluxo possui um compartimento atribuído. Os usuários podem especificar políticas de controle de acesso baseadas na função que podem ser usadas para descrever regras refinadas em um nível de locação, compartimento ou fluxo único.

A política de acesso é especificada na forma de "Permitir <subject> para <verb> <resource-type> na <location> em que <conditions>".

Qual mecanismo de autenticação os usuários do Kafka devem usar com o Streaming?

A autenticação com o protocolo Kafka usa tokens de autenticação e o mecanismo SASL/PLAIN. Você pode gerar tokens na página de detalhes do usuário do console. Consulte Como trabalhar com tokens de autenticação para saber mais. Recomendamos que você crie um grupo/usuário dedicado e conceda a esse grupo a permissão para gerenciar fluxos na tenancy ou no compartimento apropriado. Em seguida, você pode gerar um token de autenticação para o usuário criado e usá-lo na configuração do cliente Kafka.

Posso acessar APIs do Streaming de maneira privada pela minha VCN (Virtual Cloud Network, Rede de nuvem virtual) sem usar IPs públicos?

Endpoints privados restringem o acesso a uma VCN especificada dentro da locação, de maneira que os fluxos não possam ser acessados pela Internet. Os endpoints privados associam um endereço IP privado dentro de uma VCN ao conjunto de fluxos, o que permite ao tráfego do Streaming evitar atravessar a Internet. Para criar um endpoint privado para o Streaming, você precisa de acesso a uma VCN com uma sub-rede privada ao criar o conjunto de fluxos. Consulte Sobre endpoints privados e VCNs e sub-redes para obter mais informações.

Integrações

Como faço para usar o Oracle Cloud Infrastructure Streaming com o Oracle Cloud Infrastructure Object Storage?

Você pode gravar o conteúdo de um fluxo diretamente em um intervalo de armazenamento de objeto, normalmente a fim de manter os dados no fluxo para armazenamento de longo prazo. Isso pode ser feito usando-se o Kafka Connect for S3 com Streaming. Para obter mais informações, consulte a publicação no blog Publicação no Object Storage pelo Oracle Streaming Service.

Como faço para usar o Streaming com o Oracle Autonomous Database?

Você pode ingerir dados de uma tabela em uma instância do Oracle Autonomous Transaction Processing. Para obter mais informações, consulte a publicação no blog Como usar o Kafka Connect com o Oracle Streaming Service e o Autonomous DB.

Como faço para usar o Streaming com o Micronaut?

Você pode usar os SDKs do Kafka para produzir e consumir mensagens do Streaming e pode usar o suporte integrado do Micronaut para o Kafka. Para obter mais informações, consulte a publicação no blog Como trocar mensagens facilmente com o Kafka Support do Micronaut e o Oracle Streaming Service.

Como uso o Streaming para ingerir dados IoT de agentes MQTT?

Para obter informações, consulte a publicação no blog Ingerir dados IoT de agentes MQTT no OCI-Oracle Streaming Service, no OCI- Kafka Connect Harness e no Oracle Kubernetes Engine.

O Oracle GoldenGate for Big Data é compatível com Streaming?

O Oracle GoldenGate for Big Data já está certificado para integração com o Streaming. Para obter mais informações, consulte Conexão com o Oracle Streaming Service na documentação do Oracle GoldenGate for Big Data.

Existe uma maneira de ingerir dados diretamente do Streaming no Oracle Autonomous Data Warehouse?

Você precisa usar o Kafka JDBC Sink Connect a fim de transportar dados de streaming diretamente para o Oracle Autonomous Data Warehouse.

Preços

Como o uso do Oracle Cloud Infrastructure Streaming é cobrado?

O Streaming usa preços simples de pagamento conforme o uso, o que garante que você pague apenas pelos recursos que usar. Entre as dimensões de preços estão

  • Preço de solicitação GET/PUT: gigabytes de dados transferidos
  • Preço do armazenamento (com base nas horas de período de retenção utilizadas): gigabytes de armazenamento por hora

Para usar partições além dos limites de serviço padrão, há um uso mínimo antecipado de 10 GB por hora (solicitações PUT e GET) para cada 50 partições. Se o seu uso real ficar abaixo do uso mínimo esperado, você será cobrado pelo uso mínimo esperado.

Por favor, consulte a página do produto Streaming para obter as informações de preços mais recentes.

Haverá cobrança pelo provisionamento mesmo se eu não usar o serviço?

O modelo de preços líder do setor do Streaming garante que você pague somente quando usar o serviço dentro dos limites de serviço padrão. Para partições adicionais além dos limites de serviço existentes, o Streaming antecipará um uso mínimo de 10 GB por hora (solicitações PUT e GET) para cada 50 partições usadas. Se o uso real ficar abaixo do uso mínimo esperado, você será cobrado pelo uso mínimo esperado, ou seja, 10 GB x US$ 0,025 = US$ 0,25 por hora para cada 50 partições.

Existe uma cobrança adicional pela entrada no e pela saída de dados do Streaming?

O Streaming não cobra um preço adicional pela entrada e saída de dados do serviço. Além disso, os usuários podem aproveitar a força do Service Connector Hub a fim de migrar dados para e do Streaming sem um servidor e sem custo adicional.

Existe um modo gratuito para o Streaming?

Atualmente, o Streaming não funciona no modo gratuito.

Gerenciamento dos fluxos do Oracle Cloud Infrastructure Streaming

De quais permissões IAM preciso para acessar o Streaming?

O Identity and Access Management permite controlar quem tem acesso aos seus recursos na nuvem. Para usar os recursos da Oracle Cloud Infrastructure, você deve ter o tipo de acesso necessário em uma política escrita por um administrador, esteja você usando o Console ou a API REST com um SDK, uma CLI ou outras ferramentas. A política de acesso é especificada na forma de


Allow <subject> to <verb> <resource-type> in <location> where <conditions>

Os administradores de uma locação podem usar a política


Allow group StreamAdmins to manage streams in tenancy

que permite a um determinado grupo StreamAdmins fazer tudo com streaming, desde a criação, a atualização, a listagem e a exclusão de fluxos e os recursos relacionados. No entanto, você sempre pode especificar políticas mais granulares de maneira que apenas usuários selecionados em um grupo estejam elegíveis apenas para um subconjunto de atividades que eles podem realizar em um determinado fluxo. Caso você esteja começando nas políticas, consulte Introdução às políticas e Políticas comuns. Caso você queira se aprofundar na redação de políticas do Streaming, consulte Detalhes do serviço do Streaming na política de referência IAM.

Como posso automatizar a implementação de fluxos em escala?

Você pode provisionar um fluxo e todos os componentes associados, como políticas IAM, partições, configurações de criptografia etc. usando o Oracle Cloud infrastructure Resource Manager ou o Terraform provider for Oracle Cloud Infrastructure. Para obter informações sobre o provedor do Terraform, consulte o Tópico do Terraform para o serviço Streaming.

Como decido o número de partições que preciso?

Ao criar um fluxo, você deve especificar quantas partições o fluxo possui. A taxa de transferência esperada da aplicação pode ajudar você a determinar o número de partições do fluxo. Multiplique o tamanho médio da mensagem pelo número máximo de mensagens gravadas por segundo para estimar a taxa de transferência esperada. Como uma única partição é limitada a uma taxa de gravação de 1 MB por segundo, uma taxa de transferência mais alta exige partições adicionais para evitar limitação. Para ajudar você a gerenciar picos nas aplicações, recomendamos a alocação de partições um pouco mais altas do que a taxa de transferência máxima.

Como faço para criar e excluir partições em um fluxo?

Você cria partições ao criar um fluxo, seja no Console ou programaticamente.

Interface do usuário do Console:

Perguntas frequentes sobre streaming de Big Data 8

Programaticamente:

Crie um fluxo

CreateStreamDetails streamDetails =
        CreateStreamDetails.builder()
                .compartmentId(compartmentId)
                .name(streamName)
                .partitions(partitions)
                .build();

Um exemplo mais detalhado acompanha o SDK.

O Streaming gerencia as partições internamente, de maneira que você não precise gerenciá-las. Um usuário não pode excluir diretamente uma partição. Quando você exclui um fluxo, todas as partições associadas a esse fluxo são excluídas.

Qual é a taxa de transferência mínima que posso solicitar para um fluxo?

A taxa de transferência de um fluxo da Oracle Cloud Infrastructure é definida por uma partição. Uma partição oferece 1 MB por segundo de entrada de dados e 2 MB por segundo de saída de dados.

Qual é a taxa de transferência máxima que posso solicitar para um fluxo?

A taxa de transferência de um fluxo da Oracle Cloud Infrastructure pode ser escalonada adicionando-se mais partições. Não há limites teóricos máximos quanto ao número de partições que um fluxo pode conter. No entanto, cada locação da Oracle Cloud Infrastructure acompanha um limite de partição padrão de 5 para contas do tipo Universal Credits. Caso precise de mais partições, você pode sempre solicitar que os limites de serviço sejam aumentados.

Como posso aumentar os limites de serviço para minha locação usando o Oracle Cloud Infrastructure Console?

Você pode solicitar um aumento no limite de serviço seguindo estas etapas:

  1. No canto superior direito do console, abra o menu Usuário e clique em Tenancy:<tenancy_name>.

    Perguntas frequentes sobre streaming de Big Data 9
  2. Clique em Limites de serviço e em Solicitar um aumento do limite de serviço.

    Perguntas frequentes sobre streaming de Big Data 10
  3. Preencha o formulário selecionando Outros para Categoria de serviço e Outros limites para Recurso. Em Motivo da solicitação, solicite o aumento o número de partições do serviço Streaming na tenancy.

Quais são algumas das boas práticas para gerenciar fluxos?

Aqui estão algumas boas práticas que você deve ter em mente ao criar um fluxo:

  • Os nomes de fluxo devem ser exclusivos dentro de um conjunto de fluxos. Isso significa que você só poderá criar dois fluxos com o mesmo nome no mesmo compartimento se eles estiverem em conjuntos de fluxos diferentes.
  • Depois que um fluxo for criado, você não poderá alterar o número de partições nele. Recomendamos a alocação de partições um pouco além da taxa de transferência máxima. Isso pode ajudar você a gerenciar picos de aplicativos.
  • O período de retenção de um fluxo não poderá ser alterado depois de ter sido criado. Por padrão, os dados são armazenados em um fluxo por 24 horas. No entanto, eles podem ser configurados para reter os dados entre 24 e 168 horas. A quantidade de dados armazenados em um fluxo não tem impacto sobre o desempenho do fluxo.

Produção de mensagens para um fluxo da Oracle Cloud Infrastructure

Como faço para produzir mensagens para um fluxo?

Depois que um fluxo é criado e está no estado "Ativo", você pode começar a produzir mensagens. Você pode produzir em um fluxo usando o console ou por meio da API.

Para o console: Vá para a seção Serviço de streaming no console, localizada na guia Soluções e plataforma > Análise. Caso você já tenha criado os fluxos, selecione um fluxo em um compartimento e navegue até a página "Detalhes do fluxo". Clique no botão "Produzir mensagem de teste" no console. Isso vai atribuir aleatoriamente uma chave de partição à mensagem e gravar em uma partição no fluxo. Você pode exibir essa mensagem na seção Mensagens recentes clicando no botão Carregar mensagens.

Para APIs: Você pode usar APIs de streaming da Oracle Cloud Infrastructure ou APIs Kafka para produzir em um fluxo. A mensagem será publicada em uma partição no fluxo. Caso haja mais de uma partição, você especifica uma chave para escolher para qual partição deve enviar a mensagem e, caso não especifique uma chave, o Streaming atribui uma gerando um UUID e envia a mensagem para uma partição aleatória. Isso garante que as mensagens sem uma chave sejam distribuídas de maneira uniforme em todas as partições. No entanto, recomendamos que você especifique sempre uma chave de mensagem de maneira que possa controlar explicitamente a estratégia de particionamento dos dados.

Os exemplos de como produzir mensagens para um fluxo usando SDKs do Streaming estão localizados na documentação .

Como posso saber qual partição um produtor usará?

Durante o uso das APIs da Oracle Cloud Infrastructure para produzir uma mensagem, a lógica de particionamento é controlada pelo Streaming. Isso é chamado de particionamento no lado do servidor. Como usuário, você escolhe para qual partição enviar com base na chave. A chave é hash, e o valor resultante é usado para determinar o número da partição para a qual enviar a mensagem. Mensagens com a mesma chave vão para a mesma partição. Mensagens com chaves diferentes podem ir para partições diferentes ou para as mesmas.

No entanto, caso você esteja usando APIs do Kafka a fim de produzir para um fluxo, o particionamento é controlado pelo cliente Kafka, e o particionador no cliente Kafka é responsável pela lógica de particionamento. Isso é chamado de particionamento no lado do cliente.

Como faço para gerar uma chave de partição eficaz?

Para garantir a distribuição uniforme de mensagens, você precisa de um valor efetivo para as chaves de mensagem. Para criar um, considere a seletividade e a cardinalidade dos seus dados de streaming.

  • Cardinalidade: Considere o número total de chaves exclusivas que podem ser geradas com base no caso de uso específico. Uma cardinalidade chave mais alta geralmente significa uma melhor distribuição.
  • Seleção: Considere o número de mensagens com cada chave. Maior seletividade significa mais mensagens por chave, o que pode levar a pontos de acesso.

Sempre procure alta cardinalidade e baixa seletividade.

Como posso garantir que as mensagens sejam entregues aos consumidores na mesma ordem em que são produzidas?

O Streaming garante leituras e gravações linearizáveis dentro de uma partição. Se você deseja garantir que as mensagens com o mesmo valor irão para a mesma partição, use a mesma chave para essas mensagens.

Como o tamanho da mensagem pode afetar a taxa de transferência do meu fluxo?

Uma partição oferece uma taxa de entrada de dados de 1 MB/s e suporta até 1.000 mensagens PUT por segundo. Por isso, se o tamanho do registro for menor que 1 KB, a taxa real da entrada de dados de uma partição será inferior a 1 MB/s, limitada pelo número máximo de mensagens PUT por segundo. Recomendamos que você produza mensagens em lotes pelos seguintes motivos:

  • Isso reduz o número de solicitações PUT enviadas ao serviço, o que evita a otimização.
  • Isso permite uma taxa de transmissão melhor.

O tamanho de um lote de mensagens não deve exceder 1 MB. Se esse limite for excedido, o mecanismo de limitação é acionado.

Como lidar com mensagens com mais de 1 MB?

Você pode usar fragmentação ou enviar a mensagem usando o Oracle Cloud Infrastructure Object Storage.

  • Divisão em blocos: Você pode dividir payloads grandes em vários blocos (chunks) menores que podem ser aceitos pelo Streaming. Os chunks são armazenados no serviço da mesma maneira que as mensagens comuns, sem chunk, são armazenadas. A única diferença é que o consumidor deverá manter os chunks e combiná-los na mensagem quando todos os chunks tiverem sido coletados. Os chunks na partição podem ser entrelaçados com mensagens comuns.
  • Object Storage: Uma carga útil grande é colocada no Object Storage e apenas o indicador para esses dados é transferido. O receptor reconhece esse tipo de carga útil do indicador, lê de forma transparente os dados do Object Storage e os fornece ao usuário final.

O que acontecerá se eu produzir a uma taxa maior do que a permitida por uma partição?

Quando um produtor produz a uma taxa superior a 1MB por segundo, a solicitação é limitada e um erro 429, Muitas Solicitações é enviado de volta ao cliente, indicando que muitas solicitações por segundo por partição estão sendo recebidas.

Consumo de mensagens de um fluxo da Oracle Cloud Infrastructure

Como leio dados de um fluxo?

Um consumidor é uma entidade que lê mensagens de um ou mais fluxos. Essa entidade pode existir sozinha ou fazer parte de um grupo de consumidores. Para consumir mensagens, você deve criar um cursor e então usá-lo para ler as mensagens. Um cursor aponta para um local em um fluxo. Esse local pode ser um deslocamento ou tempo específico em uma partição ou o local atual de um grupo. Dependendo do local do qual você gostaria de ler, há vários tipos de cursor disponíveis: TRIM_HORIZON, AT_OFFSET, AFTER_OFFSET, AT_TIME e LATEST.

Para mais informações, veja a documentação na páginaConsumindo Mensagens.

Qual é o número máximo de mensagens que posso consumir de um fluxo a qualquer momento?

O método getLimit( ) da classe GetMessagesRequest retorna o número máximo de mensagens. Você pode especificar qualquer valor até 10.000. Por padrão, o serviço retorna o maior número possível de mensagens. Considere o tamanho médio da mensagem para evitar exceder a taxa de transferência no fluxo. Os tamanhos de lote GetMessages do Streaming se baseiam no tamanho médio da mensagem produzida para o fluxo específico.

Como evito mensagens duplicadas para meus consumidores?

O Streaming oferece semântica de entrega "pelo menos uma vez" aos consumidores. Recomendamos que as aplicações de consumidor cuidem das duplicatas. Por exemplo, quando uma instância anteriormente inativa do grupo de consumidores se junta novamente ao grupo e começa a consumir mensagens que não foram confirmadas pela instância atribuída anteriormente, há uma chance de processar cópias.

Como posso saber se um consumidor está ficando para trás?

Diz-se que um consumidor fica para trás caso você esteja produzindo mais rápido do que pode consumir. Para determinar se o consumidor está ficando para trás, você pode usar o registro de data/hora da mensagem. Se o consumidor estiver atrasado, considere criar um novo consumidor para assumir algumas das partições do primeiro consumidor. Se você está ficando para trás em uma única partição, não há como se recuperar.

Considere as seguintes opções:

  • Aumente o número de partições no fluxo.
  • Se o problema for causado por um ponto de acesso, altere a estratégia da chave da mensagem.
  • Reduza o tempo de processamento de mensagens ou manipule solicitações em paralelo.

Se você quiser saber quantas mensagens restam para consumir em uma determinada partição, use um cursor de tipo LATEST, obtenha o deslocamento da próxima mensagem publicada e faça o delta com o deslocamento que você está consumindo atualmente. Como não temos deslocamento denso, você só recebe uma estimativa aproximada. No entanto, se o seu produtor parar de produzir, você não poderá obter essas informações porque nunca receberá o deslocamento da próxima mensagem publicada.

Como funcionam os grupos de consumidores?

Os consumidores podem ser configurados para consumir mensagens como parte de um grupo. As partições de fluxo são distribuídas entre os membros de um grupo, para que as mensagens de qualquer partição única só sejam enviadas para um único consumidor. As atribuições de partição são reequilibradas à medida que os consumidores entram no ou saem do grupo. Para obter mais informações, consulte a documentação em Grupos de Consumidores.

Por que devo usar grupos de consumidores?

Grupos de consumidores oferecem as seguintes vantagens:

  • Cada instância em um grupo de consumidores recebe mensagens de uma ou mais partições que são "automaticamente" atribuídas a ela e as mesmas mensagens não serão recebidas pelas outras instâncias atribuídas a diferentes partições. Dessa forma, podemos aumentar o número de instâncias até o número das partições tendo uma instância lendo apenas uma partição. Nesse caso, uma nova instância de ingresso no grupo está em estado ocioso sem ser atribuída a nenhuma partição.
  • Ter instâncias como parte de diferentes grupos de consumidores significa fornecer um padrão publicar-assinar no qual as mensagens de partições são enviadas a todas as instâncias dos diferentes grupos.
    Dentro do mesmo grupo de consumidores, as regras são mostradas na seguinte imagem:
    Perguntas frequentes sobre streaming de Big Data 11

    Em diferentes grupos, as instâncias recebem as mesmas mensagens, conforme mostrado na seguinte imagem:
    Perguntas frequentes sobre streaming de Big Data 12
    Isso é útil quando as mensagens dentro de uma partição são de interesse para diferentes aplicativos que as processarão de diferentes maneiras. Queremos que todos os aplicativos interessados recebam todas as mesmas mensagens da partição.
  • Quando uma instância ingressa em um grupo, se houver partições suficientes disponíveis (ou seja, o limite de uma instância por partição não foi atingido), um reequilíbrio é iniciado. As partições são reatribuídas para as instâncias atuais, mais a nova. Da mesma maneira, se uma instância sair de um grupo, as partições serão reatribuídas para as instâncias restantes.
  • As confirmações de deslocamento são gerenciadas automaticamente.

Existe um limite quanto ao número de grupos de consumidores que posso ter por fluxo?

Há um limite de 50 grupos de consumidores por fluxo. Os grupos de consumidores são efêmeros. Eles desaparecem quando não são usados para o período de retenção do fluxo.

Sobre quais tempos limite devo estar ciente ao usar consumidores e grupos de consumidores?

Os seguintes componentes do Streaming têm tempos limite:

  • Cursor: Se você continuar consumindo mensagens, não haverá necessidade de criar um cursor. Se o consumo de mensagens for interrompido por mais de 5 minutos, o cursor deverá ser recriado.
  • Instância: Se uma instância parar de consumir mensagens por mais de 30 segundos, ela será removida do grupo de consumidores e sua partição será redesignada para outra instância. Isso é conhecido como rebalanceamento.

O que é reequilíbrio dentro de um grupo de consumidores?

Rebalanceamento é o processo no qual um grupo de instâncias pertencentes ao mesmo grupo de consumidores se coordena para possuir um conjunto de partições mutuamente excludentes que pertence a um fluxo específico. No final de uma operação de reequilíbrio bem-sucedida para um grupo de consumidores, todas as partições no fluxo pertencem a uma ou mais instâncias do consumidor dentro do grupo.

O que dispara uma atividade de rebalanceamento dentro de um grupo de consumidores?

Quando uma instância de um grupo de consumidores se torna inativa porque não consegue enviar uma pulsação por mais de 30 segundos ou o processo é encerrado, uma atividade de rebalanceamento é disparada dentro do grupo de consumidores. Isso é feito para lidar com as partições consumidas anteriormente pela instância inativa e reatribuí-la a uma instância ativa. Da mesma forma, quando uma instância de um grupo de consumidores que estava inativo anteriormente se junta ao grupo, um rebalanceamento é acionado para atribuir uma partição a partir da qual começar a consumir. O serviço Streaming não oferece nenhuma garantia na reatribuição da instância à mesma partição quando ela se junta novamente ao grupo.

Como me recupero de uma falha do consumidor?

Para se recuperar de uma falha, você deve armazenar o deslocamento da última mensagem que processou para cada partição para poder começar a consumir a partir dessa mensagem se precisar reiniciar o consumidor.


Observação: não armazene o cursor; ele expira após 5 minutos.


Como não damos nenhuma orientação para armazenar o deslocamento da última mensagem processada, você pode usar o método que quiser. Por exemplo, você pode armazenar o cursor em outro fluxo, ou um arquivo em uma VM ou um intervalo do Object Storage. Quando seu consumidor reiniciar, leia o deslocamento da última mensagem que você processou e crie um cursor do tipo AFTER_OFFSET e especifique o deslocamento que você acabou de receber.

Compatibilidade do Kafka com o Oracle Cloud Infrastructure Streaming

Como faço para integrar o meu aplicativo Kafka existente ao Streaming?

O serviço Streaming oferece um endpoint do Kafka que pode ser usado pelas suas aplicações baseadas no Apache Kafka existentes. Uma mudança na configuração é todo o necessário para ter uma experiência Kafka totalmente gerenciada. A compatibilidade do Kafka do Streaming oferece uma alternativa à execução do seu próprio cluster Kafka. O Streaming é compatível com o Apache Kafka 1.0 e as versões de clientes mais recentes e funciona com as aplicações, as ferramentas e as estruturas do Kafka existentes.

Quais mudanças na configuração precisam ser feitas para que a minha aplicação do Kafka existente interaja com o Streaming?

Os clientes com aplicações do Kafka existentes poderão migrar para o Streaming simplesmente alterando os seguintes parâmetros do arquivo de configuração do Kafka.

security.protocol: SASL_SSL
sasl.mechanism: PLAIN
sasl.jaas.config: org.apache.kafka.common.security.plain.PlainLoginModule required username="{username}" password="{pwd}";
bootstrap.servers: kafka.streaming.{region}.com:9092
# Application settings
topicName: [streamOcid]

Como faço para usar o Kafka Connect com o Streaming?

Para usar os conectores Kafka com o Streaming, crie uma configuração do Kafka Connect usando o Console ou a CLI (Command-Line Interface, Interface da linha de comando). A API Streaming chama essas configurações de escudos. As configurações do Kafka Connect criadas em um determinado compartimento só funcionam para fluxos no mesmo compartimento. Você pode usar vários conectores Kafka com a mesma configuração do Kafka Connect. Nos casos que exijam a produção ou o consumo de fluxos em compartimentos à parte, ou onde mais capacidade é necessária para evitar atingir os limites na configuração do Kafka Connect (por exemplo, muitos conectores ou conectores com muitos trabalhadores), você pode criar mais configurações do Kafka Connector.

Quais integrações com produtos originais e de terceiros o streaming oferece?

A compatibilidade do Kafka Connect do Streaming significa que você pode aproveitar as vantagens dos muitos conectores existentes originais e de terceiros para migrar dados das fontes para os destinos. Entre os conectores Kafka para produtos Oracle estão:

Para obter uma lista completa de conectores Kafka de fonte e coletores de terceiros, consulte o centro oficial do Confluent Kafka.

Monitoramento dos fluxos do Oracle Cloud Infrastructure Streaming

Onde posso monitorar meu fluxo?

O Streaming é totalmente integrado ao Oracle Cloud Infrastructure Monitoring. No Console, selecione o fluxo que você deseja monitorar. Na página Detalhes do fluxo, navegue até a seção Recursos e clique em Produzir gráficos de monitoramento para monitorar as solicitações do produtor ou clique em Consumir gráficos de monitoramento para monitorar as métricas no lado do consumidor. As métricas estão disponíveis em um nível de fluxo, e não em um nível de partição. Para obter uma descrição das métricas do Streaming compatíveis, consulte a documentação.

Quais estatísticas estão disponíveis durante o monitoramento do Streaming?

Cada métrica disponível no Console fornece as seguintes estatísticas:

  • Taxa, Soma e Média
  • Mín, Máx e Contagem
  • P50, P90, P95, P99 e P99.9

Essas estatísticas são oferecidas para os seguintes intervalos de tempo:

  • Automático
  • 1 minuto
  • 5 minutos
  • 1 hora

Para quais métricas normalmente devo definir alarmes?

Para os produtores, considere definir alarmes nas seguintes métricas:

  • Colocar latência de mensagens: Um aumento na latência significa que as mensagens estão demorando mais para serem publicadas, o que pode indicar problemas de rede.
  • Colocar throughput total de mensagens:
    • Um aumento importante na taxa de transferência total pode indicar que o limite de 1 MB por segundo por partição será atingido e esse evento acionará o mecanismo de limitação.
    • Uma diminuição importante pode significar que o produtor do cliente está tendo um problema ou está prestes a parar.
  • Colocar registros acelerados de mensagens: É importante ser notificado quando as mensagens forem aceleradas.
  • Falha na inserção de mensagens: É importante ser notificado se as mensagens colocadas começarem a falhar para que a equipe do Ops possa começar a investigar os motivos.

Para os consumidores, considere definir os mesmos alarmes com base nas seguintes métricas:

  • Latência de GetMessages
  • Taxa de transferência total de GetMessages
  • Solicitações limitadas de GetMessages
  • Falha no GetMessages

Como sei que meu fluxo é saudável?

Um fluxo é saudável quando está em um estado ativo. Se você pode produzir para o seu fluxo e obter uma resposta bem-sucedida, o fluxo é de integridade. Após a produção dos dados no fluxo, eles ficam acessíveis aos consumidores pelo período de retenção configurado. Se as chamadas à API GetMessages retornarem níveis elevados de erros internos do servidor, o serviço não será íntegro.

Um fluxo saudável também possui métricas saudáveis:

  • Latência de PutMessages é baixa.
  • A taxa de transferência total de PutMessages está próxima de 1 MB por segundo por partição.
  • Registros limitados de PutMessages está próximo de 0.
  • Falha de PutMessages está próxima de 0.

  • Latência de PutMessages é baixa.
  • A taxa de transferência total de GetMessages está próxima de 2 MB por segundo por partição.
  • Solicitações Limitadas de GetMessages está próxima de 0.
  • Falha de GetMessages está próxima de 0.

Quando as mensagens são limitadas em um fluxo?

A limitação indica que o fluxo é incapaz de processar novas leituras ou gravações. O mecanismo de limitação é ativado quando os seguintes limites são excedidos:

  • GetMessages: Cinco chamadas por segundo ou 2 MB por segundo por partição
  • PutMessages: 1 MB por segundo por partição
  • Operações de gerenciamento e plano de controle, como CreateCursor, ListStream etc.: cinco chamadas por segundo por fluxo

Onde posso encontrar a lista dos erros de API?

Detalhes sobre os erros de API estão localizados na documentação.