Eureka
是spring cloud中的一个负责服务注册与发现的组件。遵循着CAP理论中的AP原则
一个Eureka中分为eureka server和eureka client。其中eureka server是作为服务的注册与发现中心。eureka client既可以作为服务的生产者,又可以作为服务的消费者。
Eureka
的使用:
服务端的书写
依赖包
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
配置文件
server:
port: 7001
eureka:
instance:
hostname: eureka7001.com #eureka服务端的实例名称
client:
register-with-eureka: false #false表示不向注册中心注册自己。
fetch-registry: false #false表示自己端就是注册中心,我的职责就是维护服务实例,并不需要去检索服务
service-url:
#集群指向其它eureka
#defaultZone: http://eureka7002.com:7002/eureka/
#单机就是7001自己
#defaultZone: http://eureka7001.com:7001/eureka/
defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
#server:
#关闭自我保护机制,保证不可用服务被及时踢除
#enable-self-preservation: false
#eviction-interval-timer-in-ms: 2000
主启动加上@EnableEurekaServer
注解
客户端的书写
客户端的依赖包
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
配置文件
eureka:
client:
#表示是否将自己注册进EurekaServer默认为true。
register-with-eureka: true
#是否从EurekaServer抓取已有的注册信息,默认为true。单节点无所谓,集群必须设置为true才能配合ribbon使用负载均衡
fetchRegistry: true
service-url:
#单机版
defaultZone: http://localhost:7001/eureka
主启动类加上@EnableEurekaClient
注解
这样就完成了向服务器注册的功能, 访问: http://localhost:7001
就可以进入eureka的管理界面
Eureka实现服务集群负载均衡
这里有两个服务提供者向Eureka注册分别为8001和8002, 服务名称都是CLOUD-ORDER-SERVICE
哈哎呦一个服务消费者80,利用restTemplate调用微服务
利用restTemplate调用微服务的时候, 采用负载均衡策略
在向容器中注册组件的时候,添加一个负载均衡的说明@LoadBalanced
@Configuration
public class ApplicationConfig {
@Bean
@LoadBalanced
public RestTemplate getRestTemplate() {
return new RestTemplate();
}
}
然后在调用的时候就不是写死,而是去调用服务的名称
这样,我们访问的时候, 就会采用默认策略(轮询)来调用