Přeskočit na obsah
_CORE
AI & Agentic Systems Core Informační Systémy Cloud & Platform Engineering Data Platforma & Integrace Security & Compliance QA, Testing & Observability IoT, Automatizace & Robotika Mobile & Digital Banky & Finance Pojišťovnictví Veřejná správa Obrana & Bezpečnost Zdravotnictví Energetika & Utility Telco & Média Průmysl & Výroba Logistika & E-commerce Retail & Loyalty
Reference Technologie Blog Knowledge Base O nás Spolupráce Kariéra
Pojďme to probrat

Service Discovery — jak se služby najdou

01. 01. 2024 1 min čtení intermediate

Architektura Pokročilý

Service Discovery — jak se služby najdou

Service DiscoveryMicroservicesConsul 3 min čtení

Mechanismy service discovery v mikroservisní architektuře. Client-side vs server-side discovery, Consul a Kubernetes DNS.

Proč Service Discovery?

V mikroservisách se služby dynamicky spouštějí a zastavují. IP adresy se mění. Service Discovery řeší: jak služba A najde aktuální adresu služby B?

Client-Side Discovery

Klient se dotáže registru a sám rozhodne, na kterou instanci pošle požadavek.

const consul = require('consul')();
async function getServiceUrl(serviceName) {
    const services = await consul.health.service({
        service: serviceName, passing: true
    });
    const idx = Math.floor(Math.random() * services.length);
    const svc = services[idx].Service;
    return \`http://\${svc.Address}:\${svc.Port}\`;
}

Server-Side Discovery

Kubernetes používá server-side discovery nativně:

apiVersion: v1
kind: Service
metadata:
  name: order-service
spec:
  selector:
    app: order-service
  ports:
    - port: 80
      targetPort: 8080
# Volání: http://order-service.default.svc.cluster.local

Nástroje

  • Consul — health checking, KV store, multi-datacenter
  • etcd — základ Kubernetes
  • Eureka — Netflix OSS, Java/Spring

Shrnutí

V Kubernetes je service discovery vyřešená out-of-the-box. Mimo K8s zvažte Consul nebo Eureka.

Potřebujete pomoct s implementací?

Náš tým má zkušenosti s návrhem a implementací moderních architektur. Rádi vám pomůžeme.

Nezávazná konzultace