02-Eureka(服务注册与发现)
Eureka(服务注册与发现)
什么是Eureka
Eureka是Netflix开发的服务发现框架,本身是一个基于REST的服务,主要用于定位运行在AWS域中的中间层服务,以达到负载均衡和中间层服务故障转移的目的。SpringCloud将它集成在其子项目spring-cloud-netflix
中,以实现SpringCloud的服务发现功能。
Eureka的特点
-
Eureka包含两个组件:
Eureka Server
和Eureka Client
。 -
Eureka Server
提供注册服务,各个节点启动后,会在Eureka Server中进行注册,这样Eureka Server中的服务注册表中将会存储所有可用服务节点的信息,服务节点的信息可以在界面中直观的看到。 -
Eureka Client
是一个java客户端(设置各个微服务),用于简化与Eureka Server的交互,客户端同时也创建一个内置的、使用轮询(round-robin)负载算法的负载均衡器。 -
在应用启动后,将会向
Eureka Server
发送心跳,默认周期为30秒,如果Eureka Server在多个心跳周期内没有接收到某个节点的心跳,Eureka Server将会从服务注册表中把这个服务节点移除(默认90秒)。 -
Eureka Server
之间通过复制的方式完成数据的同步,Eureka还提供了客户端缓存机制,即使所有的Eureka Server 都挂掉,客户端依然可以利用缓存中的信息消费其他服务的API。
环境搭建(服务端)
引入坐标
<!-- eureka -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
启动类配置
@SpringBootApplication
@EnableEurekaServer //激活eureakaserver
public class EurekaServerApplication {
public static void main(String[] args) {
SpringApplication.run(EurekaServerApplication.class,args);
}
}
yml配置
spring:
application:
name: eureka-server
server:
port: 9000 #端口
#配置eureka server
eureka:
instance:
hostname: localhost
client:
register-with-eureka: false #是否将自己注册到注册中心
fetch-registry: false #是否从eureka中获取注册信息
service-url: #配置暴露给Eureka Client的请求地址
defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
# server:
# enable-self-preservation: false #关闭自我保护
# eviction-interval-timer-in-ms: 4000 #剔除服务间隔
访问测试
-
浏览器访问 ,出现下图所示,则配置启动成功
环境搭建(客户端)
生产者环境搭建
引入坐标
<!--引入EurekaClient-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
配置启动类
@SpringBootApplication
//激活eurekaClient,下面两个注解作用是一样的,在新版springboot中 可以省去下列两个注解
//@EnableEurekaClient
//@EnableDiscoveryClient
public class ProductServiceApplication {
public static void main(String[] args) {
SpringApplication.run(ProductServiceApplication.class, args);
}
}
yml配置
server:
port: 9001 #端口
spring:
application:
name: service-product #服务名称
#配置Eureka
eureka:
client:
service-url:
defaultZone: http://localhost:9000/eureka/ #多个eurekaserver之间用,隔开
instance:
prefer-ip-address: true #使用ip地址注册
instance-id: ${spring.cloud.client.ip-address}:${server.port} #向注册中心中注册服务id
#lease-renewal-interval-in-seconds: 5 #向注册中心中注册服务id,默认30秒
# lease-expiration-duration-in-seconds: 10 #续约到期的时间,默认90秒
访问测试
- 浏览器访问 http://localhost:9000/ ,出现下图所示,则配置启动成功
- 测试商品查询接口 http://localhost:9001/product/1
消费者环境搭建
消费者搭建见下一章节的 Ribbon(负载均衡)