eureka的作用:
Eureka Server:注册中心服务端
注册中心服务端主要对外提供了三个功能:
服务注册
服务提供者启动时,会通过 Eureka Client 向 Eureka Server 注册信息,Eureka Server 会存储该服务的信息,Eureka Server 内部有二层缓存机制来维护整个注册表
提供注册表
服务消费者在调用服务时,如果 Eureka Client 没有缓存注册表的话,会从 Eureka Server 获取最新的注册表
同步状态
Eureka Client 通过注册、心跳机制和 Eureka Server 同步当前客户端的状态。
Eureka Client:注册中心客户端
Eureka Client 是一个 Java 客户端,用于简化与 Eureka Server 的交互。Eureka Client 会拉取、更新和缓存 Eureka Server 中的信息。因此当所有的 Eureka Server 节点都宕掉,服务消费者依然可以使用缓存中的信息找到服务提供者,但是当服务有更改的时候会出现信息不一致。
Register: 服务注册
服务的提供者,将自身注册到注册中心,服务提供者也是一个 Eureka Client。当 Eureka Client 向 Eureka Server 注册时,它提供自身的元数据,比如 IP 地址、端口,运行状况指示符 URL,主页等。
Renew: 服务续约
Eureka Client 会每隔 30 秒发送一次心跳来续约。 通过续约来告知 Eureka Server 该 Eureka Client 运行正常,没有出现问题。 默认情况下,如果 Eureka Server 在 90 秒内没有收到 Eureka Client 的续约,Server 端会将实例从其注册表中删除,此时间可配置,一般情况不建议更改。
下面介绍EurekaServer的搭建
以下文章中以这三个服务举例:
orderservice(订单服务,端口:8080)
userservice(用户服务,集成了两个端口:8081,8082)
eurekaserver(eureka的服务,端口:10010)
1、创建eureka服务
新建一个独立的服务:
①:引eureka服务端的依赖:注意是服务端:spring-cloud-starter-netflix-eureka-server
<!--eureka服务端--> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId> </dependency> </dependencies>
②:创建yml配置文件,内容:
spring: application: name: eurekaserver #eureka的服务名称 eureka: client: service-url: defaultZone: http://127.0.0.1:10010/eureka #注册eureka客户端
③:再application启动类中添加 eureka的开关注解:@EnableEurekaServer
eureka的服务就搭建完了。
2、消费者和提供者注册服务(举个以user服务的例子)
①:引入eureka的客户端依赖,注意是客户端:spring-cloud-starter-netflix-eureka-client
<!--eureka 客户端--> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId> </dependency>
②:yml添加
spring: application: name: userservice #user的服务名称 eureka: client: service-url: defaultZone: http://127.0.0.1:10010/eureka #注册eureka客户端
上面这两步就是搭建完服务端和 提供者端的配置
3、调用微服务:(举个以order订单服务调用user用户服务的例子)
//发送http请求,写服务名即可 User user = restTemplate.getForObject("http://userservice/user/" + order.getUserId(), User.class);