Nenhum resultado encontrado

Sua pesquisa não corresponde a nenhum resultado.

Sugerimos que você tente o seguinte para ajudar a encontrar o que procura:

  • Verifique a ortografia da sua pesquisa por palavra-chave.
  • Use sinônimos para a palavra-chave digitada; por exemplo, tente “aplicativo” em vez de “software.”
  • Tente uma das pesquisas populares mostradas abaixo.
  • Inicie uma nova pesquisa.
Perguntas Frequentes

Perguntas Frequentes

Abra tudo Feche tudo

    Questões Gerais

  • O que é o Oracle Cloud Infrastructure Streaming (OCI Streaming)?

    O serviço Oracle Cloud Infrastructure Streaming fornece uma opção de armazenamento totalmente gerenciado, escalável e durável para fluxos contínuos de alto volume de dados que você pode consumir e processar quase em tempo real.

    Para obter mais informações, consulte os seguintes tópicos na documentação:

  • Onde o serviço de Streaming está disponível?

    Para obter uma lista das regiões que atualmente executam o serviço de Streaming, consulte a documentação.

  • O que são terminais da API?

    O terminal da API é construído da seguinte maneira: https://streaming.$_REGION.oci.oraclecloud.com

    Como um exemplo para a variável :

    • us-phoenix-1
    • us-ashburn-1
  • O que o OCI Streaming gerencia em meu nome?

    O OCI Streaming é totalmente gerenciado; da infraestrutura subjacente ao provisionamento, implementação, manutenção, patches de segurança, replicação e grupos de consumidores, o que facilita o desenvolvimento de aplicativos.

  • Como o Oracle Cloud Infrastructure Streaming fornece resiliência?

    Quando você cria um fluxo dentro do OCI Streaming, a Oracle cria e gerencia automaticamente 3 nós de streaming distribuídos em 3 ADs diferentes (ou domínios de falha para regiões AD únicas), garantindo que seus fluxos permaneçam altamente disponíveis e seus dados altamente duráveis.

  • O que posso fazer com o OCI Streaming?

    O OCI Streaming permite emitir dados e recuperá-los quase em tempo real. O número de casos de uso é quase ilimitado, do sistema de mensagens ao processamento de fluxos de dados complexos.

    Aqui estão alguns dos muitos usos possíveis para o Streaming:

    • Mensagens: Use o streaming para desacoplar componentes de sistemas grandes. O streaming fornece um modelo de comunicação baseado em pull/buffer com capacidade suficiente para aplanar picos de carga e a capacidade de alimentar vários consumidores com os mesmos dados independentemente. Pedidos com escopo definido por chave, baixa latência e durabilidade garantida do streaming fornecem primitivas confiáveis para implementar uma variedade de padrões de mensagens, enquanto o alto potencial de taxa de transferência permite que esse sistema seja bem dimensionado.
    • Ingestão de métricas e logs: Use o streaming como uma alternativa para as abordagens tradicionais de raspagem de arquivos para ajudar a disponibilizar dados operacionais críticos mais rapidamente para indexação, análise e visualização.
    • Ingestão de dados de atividades na Web/Mobile: Use o streaming para capturar atividades de sites ou aplicativos móveis (como visualizações de página, pesquisas ou outras ações que os usuários possam executar). Essas informações podem ser usadas para monitoramento e análise em tempo real, assim como em sistemas de data warehousing para processamento e geração de relatórios offline.
    • Processamento de eventos de infraestrutura e aplicativos: Use o streaming como um ponto de entrada unificado para os componentes da nuvem reportarem seus eventos de ciclo de vida para atividades de auditoria, contabilidade e atividades relacionadas.
  • Como uso o OCI Streaming?

    Comece a usar o OCI Streaming:

    • Criando um novo fluxo por meio do OCI Streaming Console ou da CreateTopic API
    • Emitindo dados dos produtores para o tópico (consulte a documentação detalhada)
    • Construindo consumidores para ler e processar dados do seu fluxo
  • Quais são os limites do OCI Streaming?

    No geral, a quantidade de taxa de transferência à qual você pode ter acesso não tem limites. Você só precisa projetar proativamente seu fluxo com o número certo de partições.

    Os limites rígidos do sistema são:

    • Duração de no máximo 7 dias para retenção.
    • O tamanho máximo de uma mensagem exclusiva é 1 MB
    • Cada partição pode manipular 5 chamadas de API de Leitura por segundo. Até 1 MB por segundo com qualquer número de solicitações de gravação.
    • Cada partição pode suportar uma taxa total máxima de gravação de dados de 1 MB por segundo e taxa de leitura de 2 MB por segundo
    • Cada locação possui um limite de 5 partições, no entanto, você pode solicitar mais partições - Entre em Contato
  • Como uso o Streaming com a CLI da Oracle Cloud Infrastructure?

    Um exemplo está disponível em GitHub, incluído nos binários oci-cli.

  • Como faço para acessar minha partição?

    Em nossas APIs, uma partição é representada como uma sequência.

    Se você criar um fluxo com cinco partições, poderá acessá-las usando as cadeias "0", "1", "2", "3" ou "4".

    Não confie nos identificadores de partição sendo representados como valor numérico.

    As compensações não são densas. Espere ver compensações de mensagens sempre incrementadas, mas às vezes não em 1. Não confie nisso para fazer cálculos futuros de compensações.

    Por exemplo, se você publicar duas mensagens na mesma partição, a primeira mensagem pode ter o deslocamento 42 e a segunda mensagem pode ter o deslocamento 45 (os deslocamento 43 e 44 são inexistentes.

    Conceitos Chave

  • O que é um fluxo?

    Um Fluxo pode ser visualizado como um arquivo de log apenas de apêndice que contém suas mensagens.

  • Uma partição?

    Os fluxos são divididos em várias partições para escalabilidade. As partições permitem que você distribua um fluxo dividindo as mensagens entre vários nós (ou intermediários) - cada partição pode ser colocada em uma máquina separada para permitir que vários consumidores possam ler a partir de um tópico em paralelo.

  • Uma mensagem?

    Uma mensagem codificada de 64 bits é o que você emite em um tópico.

  • 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.

  • O que é uma chave?

    Uma chave é um identificador usado para agrupar mensagens relacionadas.

    Como Criar um Fluxo

  • Como criar um novo fluxo?

    Você pode criar um novo fluxo usando nosso Console ou nossa API. Veja a API aqui.

    Seu fluxo é criado para uma região e locação específicas e, opcionalmente, para um compartimento dedicado. Os dados de um steam são replicados em toda a região, permitindo tolerar a perda de AD ou a divisão da rede sem interromper o serviço e oferecem alta disponibilidade integrada em uma região.

  • Quanto tempo leva o provisionamento?

    O tempo para provisionar depende do número de partições. Criar uma nova partição leva até 10 segundos.

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

    O número de partições para o seu fluxo depende das expectativas de taxa de transferência do seu aplicativo (taxa de transferência esperada = tamanho médio de recondicionamento x número máximo de registros gravados por segundo).

  • 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 fornece entrada de dados de 1 MB/s e saída de dados de 2 MB/s.

  • Quantas solicitações posso enviar para uma partição?

    Você pode enviar 1.000 solicitações por segundo para uma partição.

  • Como uso os SDKs?
  • Onde posso encontrar os SDKs?
  • Você planeja oferecer suporte a mais linguagens?

    O SDK de streaming oferecerá suporte às mesmas linguagens das outras implementações do OCI SDK; não há linguagens adicionais que sejam suportadas especificamente pelo serviço Streaming.

  • Onde posso encontrar a lista de todas as APIs necessárias para streaming?

    Como Publicar Dados em um Fluxo

  • Como emito dados para um fluxo?

    Depois que um fluxo é criado e está ativo, você pode publicar mensagens. Para publicação, você pode usar a API de gravação (putMessages). A mensagem será publicada em uma partição no fluxo. Se houver mais de uma partição, a partição em que a mensagem será publicada é calculada usando a chave da mensagem.

  • Como o OCI Streaming armazenará dados se eu enviar uma chave nula?

    Se a chave for nula, a partição será calculada usando um subconjunto do valor. Para mensagens com uma chave nula, não espere mensagens com o mesmo valor na mesma partição, pois o esquema de particionamento pode mudar; o envio de uma chave nula efetivamente colocará a mensagem em uma partição aleatória.

  • Como asseguro a ordenação de mensagens no OCI Streaming?

    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 garantir que minha mensagem seja durável?

    Assim que a API de OCI Streaming reconhecer sua putMessage sem erros, essas mensagens serão duráveis.

  • Como você garante a consistência dos dados em um fluxo OCI Streaming?

    O OCI Streaming garante leituras e gravações lineares em uma chave de particionamento.

  • O que acontece se eu emitir mais dados do que o máximo autorizado?

    Quando as solicitações do cliente excedem os limites, o OCI Streaming nega a solicitação e envia uma mensagem de exceção de erro.

  • Quando minhas mensagens são limitadas?

    O mecanismo de limitação é ativado quando os seguintes limites são excedidos:

    • GetMessages: 5 chamadas por segundo ou 2 MB/s por partição
    • PutMessages: 1 MB/s por partição.
    • Operações de gerenciamento e plano de controle (CreateCursor, listStream e assim por diante): 5 chamadas por segundo por fluxo.
  • Devo agrupar minhas mensagens?

    Recomendamos o lote de mensagens pelos seguintes motivos:

    • Reduz o número de solicitações de Put enviadas ao serviço, o que evita a otimização
    • 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 uma das seguintes abordagens: criação de chunk ou envio de mensagem via Armazenamento de Objetos.

  • Criação de chunk

    Cargas grandes podem ser divididas em vários chunks pequenos que podem ser aceitos pelo serviço de 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 deve manter os chunks e combiná-los na mensagem real quando todos os chunks tiverem sido coletados.

    Os chunks na partição podem ser entrelaçados com mensagens comuns.

  • Armazenamento de Objetos

    Uma carga útil grande é colocada no Armazenamento de Objetos e apenas o ponteiro para esses dados é transferido. O receptor reconhece esse tipo de carga útil do ponteiro, lê de forma transparente os dados do Armazenamento de Objetos e os fornece ao usuário final.

  • Que formato de data o serviço aceita?

    Um erro comum é fornecer o formato de data incorreto.

    O serviço de Streaming suporta ISO-8601, incluindo o fuso horário para todas as datas.

  • Como obtenho o número da partição e o deslocamento do serviço de Streaming ao publicar uma mensagem?

    A classe PutMessagesResultsEntry fornece os seguintes métodos:

    • getPartition, que fornece o número da partição na qual a mensagem foi publicada
    • getOffset, que fornece o deslocamento da mensagem publicada
  • Como obtenho o número da partição e o deslocamento do serviço de Streaming sem publicar uma mensagem?

    No momento, não há como ver a mensagem publicada mais recente sem publicar uma mensagem.

    Existe um mecanismo para ver o último deslocamento confirmado, por grupo ou partição. Investigue o ponto de extremidade getGroup.

    Como Consumir Dados de um Fluxo - Consumidor Único

  • Como leio e consumo dados de um fluxo?

    O consumo de mensagens requer que você:

    • Crie um cursor
    • Use o cursor para ler mensagens
    • Consulte a documentação técnica para obter um guia passo a passo sobre o consumo de dados de um fluxo.

  • Quais são as diferentes maneiras pelas quais posso consumir dados de um Fluxo OCI Streaming?

    O OCI Streaming fornece dois tipos de API de consumo:

    • Inspeção de baixo nível para controlar com precisão partições e compensações para ler dados de
    • Grupos de consumidores para simplificar o desenvolvimento de aplicativos transferindo o balanceamento de carga, a coordenação e o rastreamento de deslocamento para o serviço
  • 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 sejam enviadas apenas para um único consumidor.

    As atribuições de partição são reequilibradas à medida que os consumidores entram ou saem do grupo.

  • Como evito mensagens duplicadas para meus consumidores?

    Recomendamos que os aplicativos de consumidor cuidem das duplicatas.

  • Como sei se os consumidores estão ficando para trás?

    Se você quiser saber se seu consumidor está ficando para trás (você está produzindo mais rápido do que está consumindo), pode usar a diferença entre o registro de data da mensagem e a hora atual. Se esse número aumentar, convém gerar um novo consumidor para assumir algumas das partições do seu primeiro consumidor.

  • O que é um consumidor único?

    Um consumidor único é uma entidade que lê mensagens de um ou mais fluxos.

    Essa entidade pode existir sozinha ou fazer parte de um grupo de consumidores.

  • O que é um 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.

  • Quais tipos de cursor estão disponíveis?

    Os seguintes tipos de cursor estão disponíveis: TRIM_HORIZON, AT_OFFSET, AFTER_OFFSET, AT_TIME e LATEST. Para obter mais detalhes, consulte a documentação.

  • Preciso regenerar um cursor sempre que consumir uma mensagem?

    Não, o cursor deve ser criado fora do loop. Depois de criar um cursor, você pode começar a consumir mensagens usando o método GetMessages. Cada chamada para GetMessages retorna o cursor para usar na próxima chamada GetMessages.

    O cursor retornado não é nulo e expira em 5 minutos. Enquanto você continuar consumindo, você nunca precisará recriar um cursor.

    GetMessages, Commit e Heartbeat retornam um novo cursor para usar nas chamadas subsequentes.

    Um trecho de código Java está disponível na documentação.

    Em alguns casos de erro, é necessário criar novos cursores. Recomendamos que você lide com isso como parte da estratégia de falha.

  • Um consumidor que pertence ao Inquilino B pode consumir mensagens de um fluxo que pertence ao Inquilino A?

    Isso é possível por meio de políticas. O Inquilino A deve criar uma política que dê acesso ao pull-stream do Inquilino B

  • Como lidar com compensações?

    Quando você não está usando cursores de grupo, o armazenamento de compensações processadas deve ser gerenciado pelo consumidor.

    Quando você usa consumidores de grupo, as compensações processadas podem ser confirmadas, em caso de falha.

    Ao criar um cursor, especifique qual tipo de cursor usar. Quando o aplicativo começa a consumir mensagens, ele precisa armazenar em qual deslocamento chegou/parou.

    Esse cenário é prático ao fazer uma demonstração ou prova de conceito, usando apenas uma partição por fluxo. Em um ambiente de produção com múltiplas partições, recomendamos o uso de grupos de consumidores.

  • Quantas mensagens posso receber de uma chamada getMessage?

    O método getLimit () da classe GetMessageRequest retorna o número máximo de mensagens. Você pode especificar qualquer valor de 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 do getMessage do serviço de streaming são baseados no tamanho médio da mensagem publicada no fluxo específico.

    Como Consumir Dados de um Fluxo - Grupos de Consumidores

  • Como funcionam os grupos de consumidores?

    Para uma explicação detalhada, consulte a documentação.

  • Por que devo usar grupos de consumidores?

    Grupos de consumidores oferecem as seguintes vantagens:

    • Cada instância 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 (com uma instância lendo apenas uma partição). Nesse caso, uma nova instância que ingressa no grupo está no número de partições em um estado ocioso sem ser atribuída a nenhuma partição.
    • Ter instâncias como parte de um meio em que as mensagens de diferentes partições de padrão de publicação/assinatura de grupos de consumidores são enviadas para todas as instâncias nos diferentes grupos. Dentro do mesmo grupo de consumidores, as regras são mostradas na primeira imagem a seguir, mas em grupos diferentes, as instâncias recebem as mesmas mensagens (conforme mostrado na segunda imagem). Isso é útil quando as mensagens dentro de uma partição são de interesse para diferentes aplicativos que as processam de maneiras diferentes. Queremos que todos os aplicativos interessados recebam todas as mesmas mensagens da partição.
    • Outra vantagem dos grupos de consumidores é o recurso de reequilíbrio. 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.
  • O que é uma instância?

    Uma instância é um membro de um grupo de consumidores. É definido quando um cursor de grupo é criado.

    As leituras de partição são equilibradas entre instâncias em um grupo de consumidores.

    O nome da instância identifica esse membro do grupo para operações relacionadas ao gerenciamento de deslocamento.

    Recomendamos que você use nomes de instância exclusivos para cada membro do grupo de consumidores.

  • Existe uma prática recomendada para nomear minhas instâncias?

    A melhor prática é usar uma sequência concatenada de informações úteis.

  • De que tempos limite eu preciso estar ciente?

    Os seguintes componentes do serviço de Streaming têm tempos limite:

    • Cursor: Contanto que você continue consumindo mensagens, não há necessidade de criar um novo 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á reatribuída para outra instância (o rebalanceamento será acionado.
  • Quanto tempo uma instância precisa para pulsar antes de atingir o tempo limite?

    Cada instância do grupo de consumidores precisa pulsar antes do tempo limite de 30 segundos. Por exemplo, se uma mensagem estiver demorando muito para ser processada, recomendamos que a instância envie uma pulsação.

  • O que acontece quando uma instância atinge o tempo limite?

    Ao atingir o tempo limite de 30 segundos, a instância é removida do grupo de consumidores e sua partição é reatribuída para outra instância (se possível). Este evento é chamado de reequilíbrio.

  • 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 exclusivas 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 várias instâncias do consumidor dentro do grupo.

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

    Para garantir uma distribuição uniforme, você deseja criar um bom valor para suas chaves de mensagem. Para fazer isso, considere a seletividade e a cardinalidade dos seus dados de streaming.

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

    Procure alta cardinalidade com baixa seletividade.

  • Para qual partição minhas mensagens vão?

    No serviço de Streaming, um valor hash é associado à chave e, em seguida, ela é usada para determinar a partição. 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.

  • Posso forçar as mensagens a irem para uma partição específica?

    Como produtor, não há como controlar explicitamente a partição para a qual uma mensagem vai.

    Se os dados forem enviados com chaves, o produtor não poderá forçá-los a uma partição específica.

  • Posso compartilhar uma instância StreamClient entre threads?

    Sim, o StreamClient é seguro para threads.

    Quando um objeto é sem estado, ele não precisa reter nenhum dado entre invocações. Como não há estado para modificar, um thread não pode afetar o resultado de outro thread que chama as operações do objeto. Por esse motivo, uma classe sem estado é inerentemente segura para threads.

  • Quantas mensagens estão na partição atual?

    O atraso do consumidor ainda não foi implementado no serviço de Streaming.

    O deslocamento produzido para cada mensagem é retornado após cada chamada putMessage bem-sucedida.

    O deslocamento da mensagem é incluído em todas as mensagens retornadas pelas chamadas getMessage.

    Você pode determinar o atraso rastreando o delta entre as compensações produzidas e consumidas, por partição.

  • Como sei se estou atrasado no consumo de mensagens?

    Para determinar se seu consumidor está ficando para trás (você está produzindo mais rapidamente do que está consumindo), pode usar o carimbo de data e hora da mensagem. Se o consumidor estiver atrasado, considere criar um novo consumidor para assumir algumas das partições do seu 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, obtenha o deslocamento da próxima mensagem publicada LATEST e faça o delta com o deslocamento que você está consumindo atualmente.

    Como não temos deslocamento denso, você receberá um. No entanto, se o seu produtor parar de produzir, você não poderá obter estimativas aproximadas apenas para obter essas informações (porque nunca receberá o deslocamento da próxima mensagem publicada.

  • Qual é o comportamento esperado se o consumidor A tiver um cursor para a partição 1, mas a partição for reatribuída para um novo consumidor antes do tempo limite de 30 segundos?

    A reatribuição ocorre apenas na confirmação e no tempo limite. Recomendamos usar e confiar em uma pulsação se o commitOnGet=trueprocessing demorar mais de 30 segundos.

    Escrever lógica de confirmação personalizada é complicado e cheio de condições e considerações de corrida. Há muitos casos em que algum estado interno é alterado e o cliente é obrigado a lidar com a situação.

  • O que acontece quando uma instância do grupo de consumidores se torna inativa?

    Sim, o StreamClient é seguro para threads.

    Uma instância de um grupo de consumidores é considerada inativa se não enviar uma pulsação por mais de 30 segundos ou se o processo for encerrado.

    Quando isso acontece, ocorre um reequilíbrio no grupo de consumidores para manipular as partições anteriormente consumidas pela instância inativa.

  • O que acontece quando uma instância do grupo de consumidores anteriormente inativa se junta ao grupo?

    Essa instância é considerada uma nova instância. Um reequilíbrio é acionado e a instância recebe uma partição para começar a consumir mensagens.

    O serviço de Streaming não garante se a mesma partição (aquela atribuída antes da finalização) é reatribuída a esta instância.

  • Quando uma instância anteriormente inativa do grupo de consumidores se junta novamente ao grupo, ela consome mensagens duplicadas?

    O serviço de Streaming fornece semântica "pelo menos uma vez" ao grupo de consumidores. Considere quando as compensações são confirmadas em um loop de mensagem. Se um consumidor travar antes de confirmar um lote de mensagens, esse lote poderá ser entregue a outro consumidor. Quando uma partição é fornecida a outro consumidor, o consumidor usa o último deslocamento confirmado para iniciar o consumo. O consumidor não recebe mensagens antes do deslocamento confirmado.

  • Como devo lidar com confirmações de deslocamento?

    O serviço de Streaming manipula confirmações de deslocamento automaticamente para o grupo de consumidores quando o getCommitOnGet é definido como true (verdadeiro).

    Recomendamos o uso desse método, pois reduz a complexidade do aplicativo; isto é, o aplicativo não deve implementar nenhum mecanismo de confirmação.

    Para substituir essa configuração e implementar um mecanismo de confirmação de deslocamento personalizado, defina false (falso) para getCommitOnGetto quando criar o grupo de consumidores.

  • Como o CommitOnGet funciona?

    CommitOnGet significa que as compensações da solicitação anterior foram confirmadas. Para ilustrar esse recurso, considere o seguinte exemplo:

    Para um consumidor A:

    • A chama getMessages e recebe mensagens de uma partição arbitrária, com deslocamentos de 1 a 100.
    • A processa todas as 100 mensagens com sucesso
    • A chama getMessages, o serviço de Streaming confirma o deslocamento 100 e retorna as mensagens com os desvios 101 a 200.
    • A processa 15 mensagens e fica offline inesperadamente (por mais de 30 segundos.

    O sistema de orquestração inicia um novo consumidor B:

    • B chama getMessages, o serviço de Streaming usa o mais recente deslocamento confirmado e retorna mensagens com os desvios 101 a 200.
    • B continua o loop da mensagem.

    Neste exemplo, nenhuma mensagem foi perdida, mas as compensações 101 a 115 foram processadas pelo menos uma vez, o que significa que elas poderiam ter sido processadas mais de uma vez.

    Neste exemplo, uma parte (15) das mensagens pode ter sido processada e pode ser devolvida ao novo consumidor após uma falha Bevent, mas nenhum dado é perdido.

  • Como atualizo as compensações que excederam o período de retenção para uma única partição em um fluxo de várias partições?

    Atualmente, não é possível atualizar uma partição individual em um grupo de consumidores.

    O comportamento atual da chamada updateGroup é redefinir o committedOffset para todas as partições, o que causa recuperações desnecessárias de mensagens antigas para as partições que foram atribuídas a outros consumidores íntegros.

  • Por que preciso enviar batimentos cardíacos?

    Em um grupo de consumidores, as instâncias que estão consumindo as mensagens precisam enviar pulsações antes de atingir o tempo limite de 30 segundos. Se uma instância falhar ao enviar uma pulsação, o serviço de Streaming considerará a instância inativa e acionará uma reatribuição de sua partição.

  • Qual é o comportamento esperado se eu enviar uma pulsação com uma string de cursor já confirmada?

    Um cursor recuperado de uma chamada confirmada não deve ter deslocamentos. Os batimentos cardíacos prolongam o tempo limite das partições no cursor.

    Fazer um batimento cardíaco contra um cursor vazio não deve fazer nada. O cursor confirmado anterior pode disparar um reequilíbrio.

    Se um cursor for confirmado e, em seguida, for realizada uma pulsação contra o cursor (em vez daquele retornado pela chamada de confirmação), ele atualizará o mesmo tempo limite para as compensações contidas.

  • 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; eles expiram após 5 minutos.

    Não fornecemos nenhuma orientação para armazenar o deslocamento da última mensagem que você processou, para que você possa usar o método que desejar (por exemplo, outro fluxo, Kiev, um arquivo em sua máquina ou Armazenamento de Objetos).

    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.

    Como Gerenciar um Fluxo de OCI Streaming

  • Posso alterar o número de partições posteriormente?

    Recomendamos que os clientes aloquem partições um pouco mais altas que a taxa de transferência máxima. Isso os ajudará a gerenciar os picos de aplicativos, pois atualmente não oferecemos suporte à alteração do número de partições após a criação de um fluxo.

  • Posso alterar a durabilidade do meu tópico?

    Por padrão, armazenamos dados por 24 horas. Você pode configurar o período de retenção por até 7 dias ao criar um fluxo. Uma vez definido o período de retenção, ele não pode ser editado.

  • Como monitoro as operações e o desempenho do meu fluxo de OCI Streaming?

    O console de OCI Streaming fornece métricas operacionais e de desempenho, como taxa de transferência de entrada e saída de dados. O OCI Streaming também se integra à Telemetria OCI para que você possa coletar, visualizar e analisar métricas de telemetria para seus fluxos.

    Segurança e Criptografia

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

    Todos os fluxos na mesma locação têm nomes imutáveis exclusivos. Cada fluxo possui um compartimento atribuído. Portanto, todo o poder das políticas de controle de acesso da Oracle Cloud Infrastructure pode ser usado para descrever regras refinadas no nível de locação, compartimento ou fluxo único.

    A política de acesso é especificada na forma de "Permitir para onde".

  • Como faço minha autenticação ao emitir ou consumir dados do OCI Streaming?

    Nossa API da Internet usa o Oracle Identity Service. O Oracle Identity Service fornece uma maneira conveniente de autenticar usuários e autorizar o acesso a essas APIs pelo navegador (nome de usuário/senha) e pelo código (Chave da API).

    Consulte a documentação aqui.

  • Quando uso o OCI Streaming, quão seguros estão meus dados?

    O OCI Streaming é seguro por padrão - Os dados do usuário são criptografados tanto em repouso quanto em movimento. Somente os proprietários da conta e do fluxo de dados têm acesso aos recursos de fluxo que eles criam. O OCI Streaming suporta autenticação de usuário para controlar o acesso aos dados. Você pode usar as políticas do Oracle Cloud Infrastructure IAM para conceder seletivamente permissões a usuários e grupos de usuários. Você pode colocar e obter com segurança seus dados do OCI Streaming por meio de terminais SSL usando o protocolo HTTPS.

  • Posso criptografar meus dados?

    Você possui os dados que emite; você pode criptografar seus dados antes de enviá-los para o OSS.

  • Você pode me orientar no ciclo de vida de criptografia dos meus dados a partir do momento em que os envio a um Fluxo de OCI Streaming até quando os recupero?

    Ingestão (seu produtor - Gateway de streaming): Dados criptografados em movimento devido ao SSL (HTTPS).

    Dentro do serviço de streaming: No gateway, o SSL é finalizado, os dados são criptografados ao chegar com a chave AES-128 por fluxo e são enviados à camada de armazenamento para persistência.

    Sobre o consumo: Os dados criptografados são lidos no OSS, descriptografados pelo nó do gateway e enviados ao consumidor por SSL.

    Sobre o consumo: Os dados criptografados são lidos no OCI Streaming, descriptografados pelo nó do gateway e enviados ao consumidor por SSL.

  • Qual algoritmo de criptografia é usado para criptografia de OCI Streaming?

    O OCI Streaming usa o algoritmo AES-GCM 128 para criptografia.

    Monitoramento

  • Onde posso monitorar meu fluxo?

    O streaming é totalmente integrado aos Serviços de Monitoramento OCI. A descrição das métricas de Streaming está disponível aqui.

  • Quais métricas o serviço Streaming emite?

    O monitoramento no serviço de Streaming concentra-se em produtores e consumidores. Para obter uma lista das métricas emitidas pelo serviço de Streaming, consulte a documentação.

  • Quais estatísticas estão disponíveis no monitoramento do serviço de 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 oferecem quatro intervalos de tempo

    • Auto
    • 1 minuto
    • 5 minutos
    • 1 hora
  • Para quais métricas devo definir alarmes?

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

    • Latência de Mensagens Colocadas: problemas de rede.
    • Taxa de Transmissão Total de Mensagens Colocadas:
      • Um aumento importante na taxa de transferência total pode indicar que o limite de 1 MB/s 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.
    • Registros de Limites de Mensagens Colocadas: É importante ser notificado quando as mensagens são limitadas.
    • Falha nas Mensagens Colocadas: É importante ser notificado se as mensagens Colocadas começarem a falhar, para que a equipe de Operações possa começar a investigar os motivos.

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

    • Latência de Mensagens Obtidas
    • Taxa de Transmissão Total de Mensagens Obtidas
    • Solicitações Limitadas de Mensagens Obtidas
    • Falha no Recebimento de Mensagens
  • O que devo fazer quando receber um alarme?

    Quando um alarme é acionado, o membro da equipe responsável precisa investigar o alarme e avaliar a situação.

    Se o problema estiver relacionado ao cliente (produtor ou consumidor), o membro da equipe precisará resolvê-lo ou investigar mais com a equipe de desenvolvimento.

    Se o problema estiver relacionado ao servidor, o membro da equipe deve entrar em contato com o suporte do serviço de Streaming.

  • Como sei que meu fluxo é saudável?

    Um fluxo íntegro é um fluxo ativo: as mensagens são recebidas com sucesso e consumidas com sucesso.

    As gravações no serviço são duráveis. Se você pode produzir para o seu fluxo e obter uma resposta bem-sucedida, o fluxo é de integridade.

    Após a ingestão dos dados, eles ficam acessíveis aos consumidores pelo período de retenção configurado.

    Se as chamadas à API de Mensagens Obtidas 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 das Mensagens Colocadas é baixa.
    • A Taxa de Transmissão Total de Mensagens Colocadas é próxima a 1 MB/s por partição.
    • Registros Limitados de Mensagens Colocadas está próximo de 0.
    • Falha de Mensagens Colocadas está próxima de 0.
    • Latência das Mensagens Obtidas é baixa.
    • A Taxa de Transmissão Total de Mensagens Obtidas é próxima a 2 MB/s por partição.
    • Solicitações Limitadas de Mensagens Obtidas está próxima de 0.
    • Falha de Mensagens Obtidas está próxima de 0.

    Tipos e Significados de Erro

  • Onde posso encontrar a lista dos erros de API?

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

  • O que é falha parcial?

    O serviço de Streaming oferece suporte a falhas parciais devido à limitação por partição. No caso de uma falha parcial, o serviço retorna um código de status 200 e indica as falhas na carga útil da resposta.

    Se uma solicitação inteira for regulada, você receberá um código de status 429.

  • Por que estou recebendo o erro "Você excede o número de partições permitidas"?

    Entre em contato com o Serviço de Streaming da Oracle para aumentar o limite de sua locação.

    Preços e Faturamento

  • Qual o preço do OCI Streaming?

    O OCI Streaming utiliza preços simples, conforme o uso. Não há custos antecipados ou taxas mínimas, e você paga apenas pelos recursos que usa.

    • Preço de solicitação GET/PUT (GigaBytes de dados transferidos)

    Consulte o guia de preços para obter os preços reais do OCI Streaming.

    Vamos considerar um cenário em que um produtor de dados coloca 500 registros por segundo em agregado e cada registro tem 2 KB. O cliente deseja sair/recuperar dados a uma taxa duas vezes maior que a da entrada. Além disso, o cliente deseja armazenar esses dados por 7 dias.

    Cálculo do preço/dia (apenas como exemplo)

    Cada tamanho de registro = 4 KB (arredondado para 4 KB para qualquer registro menor que 4 KB)

    • Nesse cenário, a quantidade total de dados produzidos por dia = 500 * 4 * 24 * 60 * 60 KB = 172.8 GB
    • Quantidade total de dados recuperados = o dobro de Produce = 2*172.8 GB = 345.6 GB
    • PUT Solicitar preço/dia = $172.8 * $xx= $A
    • GET Solicitar preço/dia = $345.6 * $xx = $B
    • Custo de armazenamento de dados = $172.8*24*7*$yy = $C
    • Faturamento total/dia = $(A + B + C)

    Opcional:

    • A retenção estendida de dados é um custo opcional determinado pela quantidade de dias adicionais de retenção além da retenção padrão de 24 horas (GigaBytes de armazenamento por hora)
  • Existe um modo gratuito para OCI Streaming?

    O OCI Streaming não possui um modo gratuito.