Découverte de services et passerelles d’API
Découvrez comment les microservices Clojure se trouvent dynamiquement et comment une passerelle d’API fournit un point d’entrée unique et sécurisé vers votre système.
Découverte de services et passerelles d’API est une leçon Clojure Functional Programming & JVM Backend Development gratuite sur CoddyKit. Ceci est la leçon 4 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Clojure Functional Programming & JVM Backend Development, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Clojure Functional Programming & JVM Backend Development comprend 4 leçons au total.
Certaines parties de cette leçon n'ont pas encore été traduites et s'affichent en anglais.
The Discovery Problem
In a microservice system, instances start, stop, and move between hosts. Hardcoding IP addresses breaks quickly. Service discovery lets services locate each other dynamically.
Service Registries
A service registry is a database of available services and their network locations. Popular options include Consul, etcd, and Eureka.
Registering a Service
On startup, a service registers itself with the registry, including a health-check endpoint so the registry can drop it if it dies.
(defn register! [consul-url name host port]
(http/put (str consul-url "/v1/agent/service/register")
{:body (json/write-str
{:Name name :Address host :Port port
:Check {:HTTP (str "http://" host ":" port "/health")
:Interval "10s"}})}))Client-Side Discovery
In client-side discovery, the calling service queries the registry for healthy instances and picks one itself.
(defn lookup [consul-url name]
(-> (http/get (str consul-url "/v1/health/service/" name "?passing"))
:body
json/read-str))Server-Side Discovery
In server-side discovery, the client calls a load balancer or gateway, which consults the registry and forwards the request. The client stays simple.
What Is an API Gateway?
An API gateway is a single entry point that routes incoming requests to the right backend service. It hides internal topology from clients.
Gateway Responsibilities
Beyond routing, a gateway often handles cross-cutting concerns:
- Authentication and authorization
- Rate limiting
- Request/response transformation
- Aggregating multiple service calls
A Simple Gateway in Ring
You can build a basic gateway in Clojure by matching the path and proxying to the discovered service.
(defn gateway [request]
(let [service (route-for (:uri request))
target (lookup-instance service)]
(http/request
(assoc request :url (str target (:uri request))))))Authentication at the Edge
Centralizing auth at the gateway means individual services trust the gateway and avoid duplicating login logic.
(defn wrap-gateway-auth [handler]
(fn [request]
(if (valid-token? (get-in request [:headers "authorization"]))
(handler request)
{:status 401 :body "Unauthorized"})))Rate Limiting
The gateway is the natural place to throttle abusive clients before requests reach your services.
(defn wrap-rate-limit [handler limit]
(fn [request]
(if (under-limit? (client-id request) limit)
(handler request)
{:status 429 :body "Too Many Requests"})))Putting It Together
A production setup: services self-register in a registry with health checks, and a gateway discovers them, enforces auth and rate limits, then routes. This keeps clients decoupled from internal changes.
Quick Check
Test your discovery knowledge.
Recap
You learned how services discover each other and how a gateway unifies access.
- Registries like Consul track instances via health checks
- Discovery can be client-side or server-side
- Gateways centralize routing, auth, and rate limiting
Questions Fréquemment Posées
La leçon « Découverte de services et passerelles d’API » est-elle gratuite ?
Oui — le texte complet de « Découverte de services et passerelles d’API » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Clojure Functional Programming & JVM Backend Development, passe à CoddyKit PRO. Le cours Clojure Functional Programming & JVM Backend Development comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « Découverte de services et passerelles d’API » ?
Découvrez comment les microservices Clojure se trouvent dynamiquement et comment une passerelle d’API fournit un point d’entrée unique et sécurisé vers votre système. Tu pratiques Clojure Functional Programming & JVM Backend Development avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer Clojure Functional Programming & JVM Backend Development ?
Aucune expérience préalable n'est requise. Clojure Functional Programming & JVM Backend Development sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 4 sur 4.
Combien de temps prend la leçon « Découverte de services et passerelles d’API » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon Clojure Functional Programming & JVM Backend Development ?
Oui. Chaque leçon Clojure Functional Programming & JVM Backend Development inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- Conception de microservices Clojure
- Conteneurisation avec Docker
- Déploiement sur des plateformes infonuagiques
- Découverte de services et passerelles d’API