Use o recurso de rastreamento de alterações do Data Transmission Service (DTS) com MongoDB ou Redis para criar uma política de atualização de cache altamente confiável e de baixa latência. Este exemplo usa o ApsaraDB RDS for MySQL como source e o Tair (compatível com Redis) como destino.
Pré-requisitos
Configure uma tarefa de rastreamento de alterações e adicione um grupo de consumidores. Para mais informações, consulte Crie uma tarefa de rastreamento de alterações para ApsaraDB RDS for MySQL e Adicione um grupo de consumidores.
-
Crie uma instância Tair (compatível com Redis) e ative o acesso público. Para mais informações, consulte Etapa 1: Crie uma instância e Solicite 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 Configure uma whitelist.
Contexto
Aplicações frequentemente adicionam uma camada de cache para melhorar a velocidade de acesso e lidar com alta concorrência de leitura. O cache atende às solicitações de leitura por meio de acessos em memória, enquanto as atualizações de dados persistem em um banco de dados durável, como o ApsaraDB RDS for MySQL. Uma política de atualização de cache mantém o cache sincronizado com o banco de dados.
Procedimento
Execute o código de exemplo do SDK no IntelliJ IDEA para consumir os 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
Source
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 da assinatura para minimizar a latência de rede.
-
Não recomendamos o uso de endpoint público devido à possível instabilidade da rede.
No console DTS, clique em ID da instância de Assinatura de Dados desejada. 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 desejada. 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 desejada 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.
NotaAs informações do ponto de verificação de consumo são úteis 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 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 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 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 o nome de usuário for
admine a senha forRp829dlwa, defina este parâmetro comoadmin:Rp829dlwa.Credenciais definidas durante a criação da instância Tair.
NotaCaso tenha esquecido a senha, redefina-a. Para mais informações, consulte Change or reset a password.
-
Na barra de menu superior do IntelliJ IDEA, clique em .
Resultados
-
Faça login no banco de dados source e insira alguns registros na tabela source 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.