一、Eureka简介
1、背景
传统应用中,组件之间的调用,通过有规范的约束的接口来实现,从而实现不同模块间良好的协作。但是被拆分成微服务后,每个微服务实例的网络地址都可能动态变化,数量也会变化,使得原来硬编码的地址失去了作用。需要一个中心化的组件来进行服务的登记和管理。
2、注册中心的好处
不用关心有多少提供方。
3、注册中心有哪些
- Eureka
- Nacos
- Consul
- Zookeeper
4、介绍
Eureka是一个RESTful风格的服务,是一个用于服务发现和注册的基础组件,是搭建Spring Cloud微服务的前提之一,它屏蔽了Server和client的交互细节,使得开发者将精力放到业务上。
二、服务注册与发现
服务注册与发现包括两部分,一个是服务器端,另一个是客户端。
1、服务器端
Server是一个公共服务,为Client提供服务注册和发现的功能,维护注册到自身的Client的相关信息,同时提供接口给Client获取注册表中其他服务的信息,使得动态变化的Client能够进行服务间的相互调用。
- 服务注册表。记录每个注册上来微服务信息,比如服务名称、IP、端口等。注册表提供 查询API(查询可用的微服务实例)和管理API(用于服务的注册和注销)。
- 服务注册。将微服务信息注册到注册中心。
- 服务发现。查询可用微服务列表及其网络地址。
- 服务检查。定时检查已注册的服务。发现某服务长时间未提供心跳包,就从注册表中移除。
2、客户端
Client将自己的服务信息通过一定的方式登记到Server上,并在正常范围内维护自己信息一致性,方便其他服务发现自己,同时可以通过Server获取到自己依赖的其他服务信息,完成服务调用,还内置了负载均衡器,用来进行基本的负载均衡。
- 注册。微服务启动时,将自己信息注册到注册中心,注册中心存储这些信息(内存中)。
- 拉取注册中心列表。定时去注册中心拉取注册表信息,缓存到client本地。避免每次请求都去注册中心查找
- 心跳。微服务与注册中心通过某种机制(心跳)通讯。
- 调用服务。解析服务名和具体地址对应关系,找到具体地址发起请求。
三、配置
1、注册中心配置
(1)依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
(2)配置文件
server:
port: 7901
eureka:
client:
# 是否将自己注册到Eureka Server,默认是true,由于当前就是server,所以设置false,表明改服务不会注册到Eureka Server
register-with-eureka: true
# 是否从Eureka Server获取注册信息,由于当前是单节点,不需要同步其他节点数据,用false
fetch-registry: true
# 是否过滤掉非Up的实例
# filter-only-up-instances: true
# 设置服务注册中心的url 用于client和server交流
service-url:
defaultZone: http://root:[email protected]:7902/eureka/
# 客户端拉取服务端注册列表信息间隔 默认30s 对于网关如果需要迅速获取服务注册状态 可以调下 比如5s
registry-fetch-interval-seconds: 30
instance:
hostname: euk1.com
# 续约 心跳间隔 默认30s
lease-renewal-interval-in-seconds: 30
# 续约到期时间 默认90s
lease-expiration-duration-in-seconds: 90
# 关闭自我保护机制
server:
enable-self-preservation: false
3、注册成功
DiscoveryClient_EUREKASERVER/localhost:EurekaServer:7901 - registration status: 204
4、高可用
多个server之间互相注册
server:
port: 7902
eureka:
client:
# 是否将自己注册到Eureka Server,默认是true,由于当前就是server,所以设置false,表明改服务不会注册到Eureka Server
register-with-eureka: true
# 是否从Eureka Server获取注册信息,由于当前是单节点,不需要同步其他节点数据,用false
fetch-registry: true
# 是否过滤掉非Up的实例
# filter-only-up-instances: true
# 设置服务注册中心的url 用于client和server交流
service-url:
defaultZone: http://root:[email protected]:7901/eureka/
# 客户端拉取服务端注册列表信息间隔 默认30s 对于网关如果需要迅速获取服务注册状态 可以调下 比如5s
registry-fetch-interval-seconds: 30
instance:
hostname: euk2.com
# 续约 心跳间隔 默认30s
lease-renewal-interval-in-seconds: 30
# 续约到期时间 默认90s
lease-expiration-duration-in-seconds: 90
标签:服务,Netflix,Server,注册,Eureka,server,true
From: https://www.cnblogs.com/xinay/p/17746422.html