Todos os produtos
Search
Central de documentação

Tablestore:Clientes de Tunnel

Última atualização: Jun 23, 2026

O cliente de Tunnel é um framework de consumo automático de dados do Tunnel Service. Antes de usar o Tunnel Service, conheça os seguintes recursos dos clientes de Tunnel: processamento automático de dados, balanceamento de carga automático, excelente dimensionamento horizontal, limpeza automática de recursos e tolerância automática a falhas.

Informações gerais

Os clientes de Tunnel suportam os seguintes recursos para processar dados completos e incrementais: balanceamento de carga, recuperação de falhas, checkpoints e sincronização de informações de partição para garantir a sequência de consumo. Dessa forma, você pode se concentrar na lógica de processamento de cada registro.

Para obter o código de exemplo detalhado dos clientes de Tunnel, acesse Github.

Processamento automático de dados

Os clientes de Tunnel verificam heartbeats regularmente para detectar canais ativos, atualizar o status de Channel e ChannelConnect, além de inicializar, executar e encerrar tarefas de processamento de dados.

  1. Inicialize os recursos dos clientes de Tunnel.

    1. Altere o estado do cliente de Tunnel de Ready para Started.

    2. Defina HeartbeatTimeout e ClientTag em TunnelWorkerConfig para executar a tarefa ConnectTunnel e conectar-se ao Tunnel Service para obter o ClientId do cliente de Tunnel atual.

    3. Inicialize o ChannelDialer para criar uma tarefa de ChannelConnect.

      Cada tarefa de ChannelConnect corresponde a um Channel. As tarefas de ChannelConnect registram checkpoints de consumo de dados.

    4. Defina o parâmetro Callback para processamento de dados e o parâmetro CheckpointInterval para especificar o intervalo de saída de checkpoints no Tunnel Service. Dessa forma, você cria um processador de dados que gera checkpoints automaticamente.

    5. Inicialize o TunnelStateMachine para atualizar automaticamente o status do Channel.

  2. Verifique as mensagens de heartbeat regularmente.

    Defina o parâmetro heartbeatIntervalInSec em TunnelWorkerConfig para configurar o intervalo de verificação de heartbeat.

    1. Envie uma solicitação de heartbeat para obter a lista dos canais disponíveis mais recentes do Tunnel Service. A lista inclui o ChannelId, as versões do canal e o status do canal.

    2. Mescle a lista de canais obtida do Tunnel Service com a lista local de canais e, em seguida, crie e atualize as tarefas de ChannelConnect. Siga estas regras:

      • Mesclagem: substitua a versão anterior na lista local pela versão mais recente do mesmo ChannelId do Tunnel Service e insira os novos canais do Tunnel Service na lista local.

      • Criação de tarefa de ChannelConnect: crie uma tarefa de ChannelConnect no estado WAIT para um canal sem tarefa de ChannelConnect. Se a tarefa de ChannelConnect corresponder a um canal no estado OPEN, execute a tarefa ReadRecords&&ProcessRecords que processa dados ciclicamente para essa tarefa de ChannelConnect. Para mais informações, consulte a classe ProcessDataPipeline no código-fonte.

      • Atualização de tarefa de ChannelConnect existente: após mesclar as listas de canais, se um canal corresponder a uma tarefa de ChannelConnect, atualize o estado do ChannelConnect com base no estado do canal com o mesmo ChannelId. Por exemplo, se os canais estiverem no estado CLOSE, defina o estado das tarefas de ChannelConnect correspondentes como CLOSED para encerrar as tarefas de pipeline correspondentes. Para mais informações, consulte o método ChannelConnect.notifyStatus no código-fonte.

  3. Processe o status do canal automaticamente.

    Com base no número de clientes de Tunnel ativos obtidos na solicitação de heartbeat, o Tunnel Service aloca partições disponíveis entre os diferentes clientes para balancear a carga.

    O Tunnel Service processa automaticamente o status do canal conforme descrito na figura a seguir, além de gerenciar o consumo de canais e o balanceamento de carga.

    O Tunnel Service e os clientes de Tunnel alteram seus status com base em heartbeats e atualizações de versão do canal.

    1. Cada canal inicia no estado WAIT.

    2. O canal de dados incrementais muda para o estado OPEN somente após o encerramento do consumo na partição principal.

    3. O Tunnel Service aloca a partição no estado OPEN a cada cliente de Tunnel.

    4. Durante o balanceamento de carga, o Tunnel Service e os clientes de Tunnel utilizam um protocolo de agendamento para alterar o estado do canal de OPEN para CLOSING e depois para CLOSED. Após consumir um canal BaseData ou Stream, os clientes de Tunnel reportam o canal como encerrado.

    Processamento automático do status do canal

Balanceamento de carga automático e excelente dimensionamento horizontal

  • Vários clientes de Tunnel podem consumir dados usando o mesmo Tunnel ou TunnelId. Quando os clientes de Tunnel executam a tarefa de heartbeat, o Tunnel Service redistribui automaticamente os canais e tenta alocar canais ativos a cada cliente de Tunnel para obter balanceamento de carga.

  • Adicione clientes de Tunnel para escalar a capacidade de consumo de dados. Os clientes de Tunnel podem ser executados em uma ou mais instâncias.

Limpeza automática de recursos e tolerância a falhas

  • Limpeza de recursos: se os clientes de Tunnel não forem encerrados normalmente, como em caso de saída excepcional ou encerramento manual, o sistema recicla os recursos automaticamente. Por exemplo, o sistema libera o pool de threads, chama o método shutdown registrado para o canal correspondente e encerra a conexão com o Tunnel Service.

  • Tolerância a falhas: quando erros não paramétricos, como timeout de heartbeat, ocorrem em um cliente de Tunnel, o sistema renova automaticamente as conexões para manter o consumo estável de dados.