Introduction
Supabase est une alternative open source à Firebase.
Dans les bases de données, la capture de données modifiées (ou CDC) est un ensemble de modèles de conception de logiciels utilisés pour déterminer et suivre les données qui ont changé afin que des mesures puissent être prises en utilisant les données modifiées ou à cause de celles-ci.
En termes simples : chaque fois qu’un nouvel événement se produit sur une table spécifique, telle que INSERT / UPDATE / DELETE, un événement sera créé et, s’il est configuré, publié vers une destination afin qu’un service en soit notifié.
Couler
- Installez Memphis sur Kubernetes.
- Exposez la passerelle Memphis REST.
- Créez une nouvelle table Supabase.
- Configurez un webhook pour la table nouvellement créée.
- Vérifiez les événements entrants du CDC à Memphis.
Étape 1 : Installez Memphis sur Kubernetes
Memphis peut être installé sur n’importe quel cluster Kubernetes supérieur à la v1.20.
Pour ce didacticiel, j’ai utilisé Memphis Terraform pour déployer un cluster AWS EKS à 3 nœuds avec un cluster Memphis au-dessus.
Résultat de la création d’AWS EKS :
Apply complete! Resources: 67 added, 0 changed, 0 destroyed.
Outputs:
cluster_endpoint = "https://CA2D8E9674B2025*******.gr7.eu-west-1.eks.amazonaws.com"
cluster_id = "memphis-cluster-ed****q7"
cluster_name = "memphis-cluster-ed****q7"
cluster_security_group_id = "sg-09a8f95********02"
region = "eu-west-1"
Résultat du déploiement du cluster Memphis :
To access Memphis using UI/CLI/SDK with service EXTERNAL-IP, use the following URLs:
Dashboard/CLI : http://a34d36344a12b48a7a9f1ef09z576023-1416400140.eu-west-1.elb.amazonaws.com:9000
Memphis broker: http://a34d36344a12b48a7a9f1ef09z576023-1416400140.eu-west-1.elb.amazonaws.com:6666 (Client Connections)
Prime: Créez un enregistrement DNS A pour l’adresse ci-dessus afin de travailler facilement avec un vrai nom d’hôte.
Accédez au tableau de bord Memphis et lancez le cluster.
L’adresse est celle avec le port 9000.
Étape 2 : Exposez Memphis Rest Gateway
Par défaut, Memphis terraform ne déploie pas de LB sur le HTTP proxy
cosse.
Pour ce faire, nous devons transformer le memphis-http-proxy
services de ClusterIP
pour LoadBalancer
en exécutant ce qui suit :
kubectl patch svc memphis-http-proxy -n memphis --type="json" -p '[{"op":"replace","path":"/spec/type","value":"LoadBalancer"}]'
kubectl get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
memphis-cluster ClusterIP None <none> 9000/TCP,7770/TCP,6666/TCP,8222/TCP 104m
memphis-cluster-external LoadBalancer 172.20.251.246 a34d36224a00b48a7a9f1ac09c576023-1416400140.eu-west-1.elb.amazonaws.com 9000:32173/TCP,6666:32013/TCP,7770:31214/TCP 102m
memphis-http-proxy LoadBalancer 172.20.131.157 a5ce9a9c1006a2d7a64faaa6949dcfbb-1553258514.eu-west-1.elb.amazonaws.com 4444:30686/TCP 104m
mongo ClusterIP None <none> 27017/TCP 104m
Enregistrons l’adresse IP externe LB nouvellement créée du proxy HTTP :
a5ce9a9c1006a2d7a64faaa6949dcfbb-1553258514.eu-west-1.elb.amazonaws.com
Étape 3 : créer une nouvelle table Supabase
Étape 4 : Configurer un Webhook pour la table nouvellement créée
Premièrement, nous devons générer un utilisateur de type « Application » sur Memphis :
Veuillez enregistrer le nom d’utilisateur et le jeton de connexion.
Pour générer un jeton JWT pour produire des événements via HTTP, la commande suivante devait être exécutée — (sera bientôt remplacé par des jetons API)
curl --location --request POST 'a5ce9a9c9506a4c7a99faaa6949dcfbb-1553258514.eu-west-1.elb.amazonaws.com:4444/auth/authenticate' --header 'Content-Type: application/json' --data-raw '{
"username": "supabase",
"connection_token": "******************",
"token_expiry_in_minutes": 600000,
"refresh_token_expiry_in_minutes": 10000092
}'
Le résultat sera le jeton JWT pour le webhook Supabase. Sauvegarde le.
{"expires_in":36000000000,"jwt":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE3MDk4MTIzOTJ9.Xlxq56c0wsfOwMsFheUNPKrnECX4JX_vrz45su5JmVU"}
Retour à Supabase. Allez dans Base de données -> Webhooks -> Créer un webhook
Configurez-le comme suit :
- Méthode : POST
- URL : http://
:4444/stations/ /produire/single - En-têtes :
– Type de contenu :application/json
– Autorisation :Bearer <JWT Token>
Étape 5 : Vérifier les événements CDC entrants
Insérons un nouvel enregistrement dans notre table et supprimons-le juste après pour obtenir deux événements :
En revenant au tableau de bord Memphis et à la station « supabase », les événements peuvent être vus dans le panneau central et la charge utile analysée en bas à droite.
Passe une bonne journée!