Mikroservislərin bir-birinin ünvanını (IP/Port) dinamik olaraq tapmasını təmin edən mexanizm.
Cloud mühitdə servislər daim yaranır/ölür, IP-ləri dəyişir. Hardcoded IP yazmaq mümkün deyil.
Hər servis açıldıqda Registry-ə qeydiyyatdan keçir. Digər servislər lazım olanda Registry-dən soruşur.
Eureka (Netflix), Consul (HashiCorp), ZooKeeper, Kubernetes DNS, etcd.
Zəng edən servis özü Registry-dən ünvanı alır və birbaşa oraya gedir (Eureka + Ribbon).
Zəng Load Balancer-ə gedir, o Registry-dən ünvanı tapıb yönləndirir (Kubernetes, AWS ELB).
Hər servis açıldıqda öz ünvanını özü Registry-ə yazır. Bağlananda silir.
Registry hər 30 saniyədən bir servislərə "yaşayırsan?" sualı göndərir. Cavab gəlmirsə siyahıdan silinir.
@SpringBootApplication
@EnableEurekaServer // Bu tətbiqi Eureka Server edir
public class EurekaServerApp {
public static void main(String[] args) {
SpringApplication.run(EurekaServerApp.class, args);
}
}
@SpringBootApplication
@EnableDiscoveryClient // Eureka-ya qeydiyyat
public class UserServiceApp {
public static void main(String[] args) {
SpringApplication.run(UserServiceApp.class, args);
}
}
// Feign ilə başqa servisi çağırmaq — ünvanı Eureka-dan alır
@FeignClient(name = "ORDER-SERVICE")
public interface OrderClient {
@GetMapping("/orders/{userId}")
List<Order> getOrdersByUser(@PathVariable Long userId);
}