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.
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.
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:
Você pode começar a usar o Streaming da seguinte maneira:
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.
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:
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.
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.
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.
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.
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.
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.
Produtor é uma aplicação cliente que pode gravar mensagens em um fluxo.
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.
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.
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 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".
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.
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.
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>".
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.
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.
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.
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.
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.
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 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.
Você precisa usar o Kafka JDBC Sink Connect a fim de transportar dados de streaming diretamente para o Oracle Autonomous Data Warehouse.
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
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.
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.
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.
Atualmente, o Streaming não funciona no modo gratuito.
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.
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.
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.
Você cria partições ao criar um fluxo, seja no Console ou programaticamente.
Interface do usuário do Console:
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.
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.
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.
Você pode solicitar um aumento no limite de serviço seguindo estas etapas:
Aqui estão algumas boas práticas que você deve ter em mente ao criar 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 .
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.
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.
Sempre procure alta cardinalidade e baixa seletividade.
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.
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:
O tamanho de um lote de mensagens não deve exceder 1 MB. Se esse limite for excedido, o mecanismo de limitação é acionado.
Você pode usar fragmentação ou enviar a mensagem usando o Oracle Cloud Infrastructure Object Storage.
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.
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.
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.
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.
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:
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.
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.
Grupos de consumidores oferecem as seguintes vantagens:
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.
Os seguintes componentes do Streaming têm tempos limite:
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.
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.
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.
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.
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]
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.
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.
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.
Cada métrica disponível no Console fornece as seguintes estatísticas:
Essas estatísticas são oferecidas para os seguintes intervalos de tempo:
Para os produtores, considere definir alarmes nas seguintes métricas:
Para os consumidores, considere definir os mesmos alarmes com base nas seguintes métricas:
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:
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:
Detalhes sobre os erros de API estão localizados na documentação.