既然用到微服务,服务的注册和发现应该可以算作是微服务的核心了吧。使用过dubbo的人,应该都知道dubbo的服务注册和发现中心是通过zookeeper来提供的。Eureka 是 Netflix 开源的服务注册发现组件,当然也可以提供类似的功能。
启动类:EurekaServerApplication
package com.cn;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;
@EnableEurekaServer
@SpringBootApplication
public class EurekaServerApplication {
public static void main(String[] args) {
SpringApplication.run(EurekaServerApplication.class, args);
}
}
配置文件:application.yml
server:
port: 8080
eureka:
client:
register-with-eureka: false
fetch-registry: false
service-url:
defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
server:
enable-self-preservation: false
instance:
hostname: localhost
spring:
application:
name: eureka-server
register-with-eureka:表示是否将自己注册在EurekaServer上,默认为true。由于当前应用就是EurekaServer,所以置为false
fetch-registry:表示表示是否从EurekaServer获取注册信息,默认为true。单节点不需要同步其他的EurekaServer节点的数据defaultZone:Eureka的地址
服务启动成功,访问http://localhost:8080/出现如下界面:
现在可以看到是No instances available(没有注册任何实例的)
eureka-provider的启动类:
package cm.cn;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
@SpringBootApplication
@EnableEurekaClient
public class EurekaProvider9090Application {
public static void main(String[] args) {
SpringApplication.run(EurekaProvider9090Application.class, args);
}
}
配置文件:
server:
port: 9090
eureka:
client:
service-url:
defaultZone: http://localhost:8080/eureka/
spring:
application:
name: eureka-provider
我们在启动 eureka-provider
可以看到现在已经有一个实例注册了:EUREKA-PROVIDER
同理我们再启动 eureka-consumer
现在发现又多了一个实例:EUREKA-CONSUMER
Eureka还提供了一系列的API操作
for example: