关于Eureka:

提供基于 REST的服务,在集群中主要用于服务管理。使用该框架,可以将业务组件注册到Eureka容器中,这些组件可进行集群部署,Eureka主要维护这些服务的列表并自动检查他们的状态。

架构图:

常用配置说明:

服务端:

eureka.client.register-with-eureka 属性,声明是否将自己的信息注册到Eureka服务器,默认为true。

eureka.client.fetch-registry 属性,表示是否到Eureka服务器中抓取注册信息。

eureka.server.eviction-interval-timer-in-ms 属性来修改注册表的清理间隔,单位是毫秒。

eureka.server.enable-self-preservation 属性,将值设置为false来关闭自我保护机制。默认为true。

eureka.server.renewal-percent-threshold : 0.85 ,自我保护阈值。

eureka.server. use-read-only-response-cache: false ,关闭从 readOnly (缓存)读注册表信息。

eureka.server.response-cache-update-interval-ms: 1000 ,readwrite 和 readonly 同步时间间隔。单位毫秒。

优化

  server:
# 自我保护,看服务多少。如果服务数量少需要打开,如果服务数量多可以关闭。
enable-self-preservation: true
# 自我保护阈值
renewal-percent-threshold: 0.85
# 剔除服务时间间隔
eviction-interval-timer-in-ms: 1000
# 关闭从readOnly(缓存)读注册表
use-read-only-response-cache: false
# readWrite 和 readOnly 同步时间间隔。
response-cache-update-interval-ms: 1000

客户端:

eureka.instance.lease-renewal-interval-in-seconds属性,客户端的实例会向服务器周期性的发送心跳,默认是30秒发送一次。

eureka.client.registry-fetch-interval-seconds属性,客户端抓取注册表并缓存的间隔时间。默认是30秒。

eureka.instance.leaseExpirationDurationInSecond 属性,服务器端接收心跳请求,如果在一定期限内没有接收到服务实例的心跳,那么会将该实例从注册表中清理掉,其他的客户端将会无法访问这个实例。默认是90 秒,服务器90秒没有收到客户端的心跳,就会将这个实例从列表中清理掉。但是需要注意的是,清理注册表有一个定时器在执行,默认是60秒执行一次,如果将该值设置小于60秒,虽然符合删除实例的条件,但是还没到60秒,这个实例将仍然存在注册表中(因为还没有执行清理)。我们可以在服务器端配置eureka.server.eviction-interval-timer-in-ms 属性来修改注册表的清理间隔,单位是毫秒。

优化

	client:
#刷新注册表(拉取注册表)间隔
registry-fetch-interval-seconds: 5
intance:
#心跳续约间隔
lease-renewal-interval-in-seconds: 10
#心跳过期时间
lease-expiration-duration-in-seconds: 10

集群配置

双台集群的配置

服务端配置

service1的配置

#是否将自己注册到Eureka Server,默认为true
eureka.client.register-with-eureka=true
#是否从eureka server获取注册信息
eureka.client.fetch-registry=true
#设置服务注册中心的URL,用于client和server端交流
eureka.client.service-url.defaultZone=http://euk2.com:8002/eureka/
#实例主机名
eureka.instance.hostname=euk1.com
#应用服务名
spring.application.name=EurekaServer
server.port=8001

service2的配置

#是否将自己注册到Eureka Server,默认为true
eureka.client.register-with-eureka=true
#是否从eureka server获取注册信息
eureka.client.fetch-registry=true
#设置服务注册中心的URL,用于client和server端交流
eureka.client.service-url.defaultZone=http://euk2.com:8001/eureka/
#实例主机名
eureka.instance.hostname=euk2.com
#应用服务名
spring.application.name=EurekaServer
server.port=8002

客户端配置

#客户端每次都会使用第一个注册服务拉取数据。在使用的时候,需要打乱前两个注册服务的顺序。
eureka.client.service-url.defaultZone = http://euk1.com:8001/eureka/,http://euk2.com:8002/eureka/
spring.application.name=user-provider

三台集群的配置

服务端配置

eureka:
client:
serviceUrl:
defaultZone: http://euk1.com:8001/eureka/,http://euk2.com:8002/eureka/,http://euk3.com:8003/eureka/
spring:
application:
name: ThreeClustersEurake
---
spring:
profiles: euk1
eureka:
instance:
hostname: euk1.com
server:
port: 8001
---
spring:
profiles: euk2
eureka:
instance:
hostname: euk2.com
server:
port: 8002
---
spring:
profiles: euk3
eureka:
instance:
hostname: euk3.com
server:
port: 8003

客户端配置

eureka.client.service-url.defaultZone = http://euk1.com:8001/eureka/,http://euk2.com:8002/eureka/,http://euk3.com:8003/eureka/
server.port=8004
spring.application.name=user-provider

服务通知

@Component
public class EurekaStateChangeListener { @EventListener
public void listen(EurekaInstanceCanceledEvent event){
System.out.println(event.getServerId()+"\t"+event.getAppName()+"服务下线");
} @EventListener
public void listen( EurekaInstanceRegisteredEvent event){
InstanceInfo instanceInfo = event.getInstanceInfo();
System.out.println(instanceInfo.getAppName()+"进行注册");
} @EventListener
public void listen(EurekaInstanceRenewedEvent event){
System.out.println(event.getServerId()+"\t"+event.getAppName()+"服务进行续约");
} @EventListener
public void listen(EurekaRegistryAvailableEvent event){
System.out.println("注册中心启动");
} @EventListener
public void listen(EurekaServerStartedEvent event){
System.out.println("Eureka Server启动");
}
}

Eureka使用总结的更多相关文章

  1. 建立eureka服务和客户端(客户端获取已经注册服务)

    1. 新建sping boot eureka server 新建立spring starter  project 修改pom.xml文件 在parent后追加 <dependencyManage ...

  2. Spring-cloud & Netflix 源码解析:Eureka 服务注册发现接口 ****

    http://www.idouba.net/spring-cloud-source-eureka-client-api/?utm_source=tuicool&utm_medium=refer ...

  3. springcloud(第三篇)springcloud eureka 服务注册与发现 *****

    http://blog.csdn.net/liaokailin/article/details/51314001 ******************************************* ...

  4. 微服务架构:Eureka集群搭建

    版权声明:本文为博主原创文章,转载请注明出处,欢迎交流学习! 服务注册.发现是微服务架构的关键原理之一,由于微服务架构是由一系列职责单一的细粒度服务构成的网状结构,服务之间通过轻量机制进行通信,这就必 ...

  5. Eureka的故事,专注能让你看到别人看不到的事情

    有这么一句古老的箴言: 如果你手里有一把锤子,所有东西看上去都像钉子. 其实这句话已经是老调中的老调重弹了,我们程序员有很多锤子:OO.设计模式.语言(C, C++, Java, Python, Ru ...

  6. Spring Cloud Eureka Server 启停状态监控

    目前发现如下的api: 当时没有找到文档 http://localhost:8761/eureka/apps 参考文章:(此文中api带有v2我自己试验不需要v2) http://blog.csdn. ...

  7. Spring Cloud Eureka Server例子程序

    Spring-Cloud-Eureka-Server 及Client 例子程序 参考源代码:https://github.com/spring-cloud-samples/eureka 可以启动成功, ...

  8. Eureka Web UI URL(eureka显示主界面路径设定)

    http://stackoverflow.com/questions/30200988/spring-cloud-with-eureka-eureka-web-ui-url ************* ...

  9. Eureka 的 Application Client client的执行演示样例

            上篇以一个 demo 演示样例介绍了 Eureka 的 Application Service 客户端角色.今天我们继续了解 Eureka 的 Application Client 客 ...

  10. Ribbon 和 Eureka 积分

            Ribbon 这是 Netflix 云服务的中间层宣布开放源代码项目,它的主要功能是提供客户机端软件的负载均衡算法,将 Netflix 中间层服务一起. Eureka 是 RESTfu ...

随机推荐

  1. 取消Ubuntu开机硬盘自检

    修改/etc/fstab文件,最后一列全改为0,测试能正常启动,尚未出现再次自检的情况 sudo gedit /etc/fstab

  2. Python之psutil-进程管理

    在给PC端应用做自动化测试或者监测应用性能时,不可避免的会与进程管理打交道,python中的psutil模块能够帮助我们处理进程,它主要用于系统监视.分析和限制进程资源以及管理正在运行的进程.一起来了 ...

  3. (七)羽夏看C语言——模板(C++)

    写在前面   由于此系列是本人一个字一个字码出来的,包括示例和实验截图.本人非计算机专业,可能对本教程涉及的事物没有了解的足够深入,如有错误,欢迎批评指正. 如有好的建议,欢迎反馈.码字不易,如果本篇 ...

  4. Python - 面向对象编程 - 小实战(2)

    需求 小明和小美都爱跑步 小明体重 75 公斤 小美体重 45 公斤 每次跑步会减肥 0.5 公斤 每次吃东西体重增加 1 公斤 需求分析 小明.小美都是一个具体的对象,他们都是人,所以应该抽象成人类 ...

  5. Robot Framework(6)- BuiltIn 测试库常用的关键字列表

    如果你还想从头学起Robot Framework,可以看看这个系列的文章哦! https://www.cnblogs.com/poloyy/category/1770899.html 前言 所有关键字 ...

  6. openswan专栏序言

    openswan专栏序言 "一杯茶,一包烟,一个bug解一天!!!". ​ 2020年春季,正值新冠病毒在全球肆虐之际,美国的疫情已经相当的严峻,每天仍以3万速度狂奔.而国内的疫情 ...

  7. Sa-Token之注解鉴权:优雅的将鉴权与业务代码分离!

    Sa-Token之注解鉴权:优雅的将鉴权与业务代码分离! Sa-Token 介绍: Sa-Token 是一个轻量级 Java 权限认证框架,主要解决:登录认证.权限认证.Session会话.单点登录. ...

  8. Configuration对象和SessionFactory会话池

    一.加载核心配置文件方式 二.加载映射文件方式 三.SessionFactory相当于连接池 四.获取session会话 同一个线程中获取的session两种方法获取的是同一个session对象: 不 ...

  9. DLL延时加载技术与资源释放

    DLL延时加载技术与资源释放 0x00 前言 诸如调用非Windows的第三方库,我们或许会使用到dll文件,而这个时候原本程序运行需要相应的dll文件才能加载启动.通过DLL延时加载技术,使用延时加 ...

  10. Vue项目-初始化之 vue-cli

    1.初始化项目 a.Vue CLI 是一个基于 Vue.js 进行快速开发的完整系统,提供: 通过 @vue/cli 搭建交互式的项目脚手架. 通过 @vue/cli + @vue/cli-servi ...