Eureka是netflix公司研发而且开源的一个服务发现组件。spring
Eureka架构图:apache
Eureka组件包含注册中心(Eureka Server)和eureka客户端。api
服务注册中心:Eureka客户端会把自身服务注册到注册中心,为其余Eureka客户端提供服务,Eureka客户端经过注册中心相互发现对应服务并进行调用缓存
Eureka客户端:相对注册中心而言,全部注册到服务注册中心的服务均可以表述为Eureka客户端;可是站在提供方和消费方的角度看,Eureka客户端又能够称之为服务端服务器
优势:网络
Eureka提供了一个客户端库,该库提供了服务心跳、服务健康检查、自动发布及缓存刷新等功能。架构
若是使用ZooKeeper,这些功能都须要本身实现,而且zookeeper经过心跳发现服务不可用时,会当即删除注册到zookeeper的服务;而eureka不会当即删除服务,由于注册的服务有可能只是由于网络轻微波动致使没法发送心跳,并非服务不可用。负载均衡
Eureka在客户端会有缓存。即便全部Eureka服务器不可用,服务注册信息也不会丢失。缓存在这里是恰当的,由于它只在全部的Eureka服务器都没响应的状况下才会用到。ide
Eureka使用Ribbon组件实现客户端负载均衡策略fetch
缺点:
当全部服务端都同时中止以后,而后重启,客户端须要等待必定时间(最长30s,由于客户端会30s请求一次eureka注册中心)才能链接服务端,由于虽然在注册中心显示服务端已经注册,可是服务有可能尚未全启动,因此须要等待(其实也不像缺点–!)
Eureka参数配置以下:
|
Name
|
Default
|
Description
|
---|---|---|---|
1 | eureka.client.enabled | true | 代表尤里卡客户端启用 |
2 | eureka.client.eureka-connection-idle-timeout-seconds | 30 | 显示HTTP链接尤里卡服务器处于闲置状态多少时间(以秒为单位)才能够关闭。 在AWS环境中,建议值是30秒或更少,由于在不稳定状态防火墙清除链接信息几分钟后断开链接 |
3 | eureka.client.eureka-server-connect-timeout-seconds | 5 | 表示要等多长时间(以秒为单位)以前到尤里卡的链接服务器超时。 注意,链接在客户端被org.apache.http.client聚集。HttpClient和创造这个设置会影响实际的链接以及等待时间从池中获取链接。 |
4 | eureka.client.register-with-eureka | true | 代表该实例可否被注册到尤里卡服务的其余客户端发现。 在某些状况下,您不但愿您的实例被发现而你想发现其余实例。 |
5 | eureka.client.fetch-registry | true | 代表这个客户可否应该从尤里卡服务端获取尤里卡注册表信息 |
6 | eureka.client.g-zip-content | true | 显示只要是支持的服务从尤里卡服务端获取的内容是否被压缩。 代表从尤里卡服务端获取的信息是压缩过的用来优化网络流量。 |
7 | eureka.client.heartbeat-executor-thread-pool-size | 2 | 心跳执行器的线程池初始值。 |
8 | eureka.client.initial-instance-info-replication-interval-seconds | 40 | 代表最初多长时间(以秒为单位)复制实例信息到尤里卡服务。 |
9 | eureka.client.instance-info-replication-interval-seconds | 30 | 代表多长时间(以秒为单位)复制实例更改到尤里卡服务。 |
10 | eureka.client.registry-fetch-interval-seconds | 30 | 代表多长时间(以秒为单位)从尤里卡服务获取注册表信息。 |
11 | eureka.client.serviceUrl.defaultZone | 尤里卡客户端和服务端通讯的地址,多个地址用逗号隔开,e.g. http://localhost:8761/eureka/ | |
12 | eureka.dashboard.enabled | true | 代表是否启用尤里卡服务控制台,默认为启用 |
13 | eureka.dashboard.path | / | 尤里卡服务控制台的相对路径,默认为“/” |
14 | eureka.instance.health-check-url | 尤里卡实例健康检查绝对路径URL | |
15 | eureka.instance.home-page-url | 尤里卡实例home页面绝对路径URL | |
16 | eureka.instance.hostname | 尤里卡实例主机名;若是不配置,尤里卡会直接使用操做系统的主机名 | |
17 | eureka.instance.lease-expiration-duration-in-seconds | 90 | 代表尤里卡服务等待的时间间隔,以秒为单位自收到最后的心跳才能把这个实例从它的视图中删除。 这个值被设置为至少高于leaseRenewalIntervalInSeconds中指定的值。 |
18 | eureka.instance.lease-renewal-interval-in-seconds | 30 | 代表尤里卡客户端间隔多长时间(以秒为单位)向尤里卡服务发送心跳信息用来证实客户端是活着的; 在leaseExpirationDurationInSeconds参数的指定值期间没有收到来自客户端的心跳,这个实力会被尤里卡服务删除 |
19 | eureka.instance.namespace | eureka | 经过配置文件找到namespace,忽略springcloud的配置 |
20 | eureka.instance.status-page-url | 尤里卡实例状态页面绝对路径URL |