Use o recurso de rastreamento de alterações do Data Transmission Service (DTS) com MongoDB ou Redis para implementar uma política de atualização de cache altamente confiável e de baixa latência. Este tópico descreve essa política usando um exemplo no qual o ApsaraDB RDS for MySQL é a origem e o Tair (compatível com Redis) é o destino.
Pré-requisitos
Configure uma tarefa de rastreamento de alterações e adicione um grupo de consumidores. Para mais informações, consulte Criar uma tarefa de rastreamento de alterações para o ApsaraDB RDS for MySQL e Adicionar um grupo de consumidores.
-
Crie uma instância do Tair (compatível com Redis) e ative o acesso público. Para mais informações, consulte Etapa 1: Criar uma instância e Solicitar um endpoint público.
NotaAdicione o endereço IP do cliente ou o bloco CIDR à lista de permissões da instância Tair. Para mais informações, consulte Configurar uma lista de permissões.
Contexto
Arquiteturas de aplicação frequentemente incluem uma camada de cache para melhorar a velocidade de acesso e lidar com alta concorrência de leitura. O sistema direciona as solicitações de leitura ao cache, que usa leituras em memória para aumentar o desempenho. Simultaneamente, as atualizações de dados são persistidas em um banco de dados durável, como o ApsaraDB RDS for MySQL, para garantir a integridade dos dados. Esse cenário exige uma política de atualização de cache para manter a sincronização entre o cache e o banco de dados.
Procedimento
Esta seção explica como executar o código de exemplo do SDK no IntelliJ IDEA para consumir dados rastreados.
Baixe o pacote de demonstração do SDK de rastreamento de alterações e descompacte-o.
Abra o pacote de demonstração do SDK descompactado como um projeto Maven no IntelliJ IDEA.
No diretório /subscribe-demo/src/main/java/com/alibaba/dts/demo/, clique duas vezes no arquivo DTSMySQL2RedisDemo.java.
-
Modifique os parâmetros na função main.
Altere os valores destacados em verde no código, como
your broker urlemString brokerUrl = "your broker url";.-
Parâmetros de rastreamento de alterações
Parâmetro
Descrição
Origem
brokerUrlEndpoint e número da porta da instância de Assinatura de Dados.
Nota-
Se a instância ECS que executa o cliente SDK e a instância de Assinatura de Dados estiverem na mesma rede clássica ou Virtual Private Cloud (VPC), use o endpoint interno para minimizar a latência de rede.
-
Evite usar endpoints públicos devido à possível instabilidade da rede.
No console DTS, clique em ID da instância de Assinatura de Dados de destino. Na página Basic Information, obtenha o endpoint e o número da porta na seção Network.
topicTópico de assinatura da instância.
No console DTS, clique em ID da instância de Assinatura de Dados de destino. Na página Basic Information, obtenha o Topic na seção Basic Information.
sidID do grupo de consumidores.
No console DTS, clique em ID da instância de Assinatura de Dados de destino e, em seguida, clique em Consume Data. Obtenha o Consumer Group ID e a Account do grupo de consumidores.
NotaA senha do nome de usuário do grupo de consumidores é definida durante a criação do grupo.
userNameNome de usuário do grupo de consumidores.
AvisoCaso não utilize o cliente fornecido neste tópico, defina o nome de usuário no formato
<Username>-<Consumer Group ID>. Exemplo:dtstest-dtsaebpv. Caso contrário, a conexão falhará.passwordSenha do nome de usuário.
initCheckpointPonto de verificação de consumo, especificado como timestamp UNIX, a partir do qual o cliente SDK começa a consumir dados. Exemplo: 1620962769.
NotaUtilize as informações do ponto de verificação de consumo nos seguintes cenários:
-
Para retomar o consumo e evitar perda de dados após uma interrupção da aplicação, informe o último ponto de verificação de consumo conhecido.
-
Ao iniciar o cliente, informe um ponto de verificação de consumo específico para consumir dados a partir de uma posição desejada.
O ponto de verificação de consumo deve estar dentro do intervalo de dados da instância de Assinatura de Dados (conforme mostrado na figura) e convertido para timestamp UNIX.
NotaUse um mecanismo de busca para encontrar um conversor de timestamp UNIX.
ConsumerContext.ConsumerSubscribeMode subscribeModeModo de uso do cliente SDK. Valores válidos:
-
ConsumerContext.ConsumerSubscribeMode.ASSIGN: Modo ASSIGN. Apenas um cliente SDK em um grupo de consumidores pode consumir dados da Assinatura de Dados. -
ConsumerContext.ConsumerSubscribeMode.SUBSCRIBE: Modo SUBSCRIBE. Inicie vários clientes SDK no mesmo grupo de consumidores para recuperação de desastres.
N/A
-
-
Parâmetros do Tair de destino
Parâmetro
Descrição
Como obter
redisUrlEndpoint da instância Tair.
Acesse a página Connection Information da sua instância Tair. Na seção Connection Information, localize o endpoint de Public Access.
redisPortPorta da instância Tair.
Acesse a página Connection Information da sua instância Tair. Na seção Connection Information, localize a porta de Public Access.
redisPasswordNome de usuário e senha da instância Tair.
ImportanteO valor deve ser uma string no formato <user>:<password>. Por exemplo, se seu nome de usuário for
admine sua senha forRp829dlwa, defina este parâmetro comoadmin:Rp829dlwa.Definido durante a criação da instância Tair.
NotaSe esqueceu sua senha, redefina-a. Para mais informações, consulte Alterar ou redefinir uma senha.
-
Na barra de menu superior do IntelliJ IDEA, clique em .
Resultados
-
Faça login no banco de dados de origem e insira vários registros na tabela de origem rastreada.
O programa consome as alterações incrementais de dados e grava os dados correspondentes no banco de dados de destino.
-
Faça login no banco de dados de destino e consulte os dados.
A consulta confirma a gravação bem-sucedida dos dados.