Eureka包含两个组件:Eureka Server和Eureka Client
 
Eureka Server提供服务发现的能力,各个微服务启动时,会向Eureka Server注册自己的信息(例如IP、端口、微服务名称等),Eureka Serverh会存储这些信息
Eureka Client是一个Java客户端,用户简化与Eureka Server的交互
微服务启动后,会周期性(默认30秒)地向Eureka Server发送心跳以续约自己的“租期”
如果Eureka Server在一定时间内没有j接收到某个微服务实例d的心跳,Eureka Server将会注销该实例(默认90)
默认情况下,Eureka Server同时也Eureka Client。多个Eureka Server实例,互相之间通过复制的方式,来实现服务注册表中数据的异步
Eureka Client会缓存服务注册表中的信息。这种方式有一定的优势,首先,微服务无须每次请求都查询Eureka Server,从而降低了Eureka Server的压力;其次,即使Eureka Server所有节点都宕掉,服务消费者依然可以使用缓存中的信息找到服务提供者并完成调用
 
总结:Eureka通过心跳检查、客户端缓存等机制,提高了系统的灵活性、可伸缩性和可用性
 
 
自我保护模式:
默认情况下,如果Eureka Server在一定时间内没有接收到某个微服务实例的心跳,Eureka Server将会注销该实例(默认90秒)。但是当网络分区故障发生时,微服务与Eureka Server之间无法正常通信,以上行为可能变得非常危险,因为微服务本身其实是健康的,此时不应该注销这个微服务。
自我保护模式就是用来解决此问题。
当Eureka Server节点在短时间内丢失过多客户端时(可能发生了网络分区故障),那么这个节点就会进入自我保护模式。一旦进入该模式,Eureka Server就会保护服务注册表中的信息,不再删除服务注册表中的数据(也就是不会注销任何微服务)。当网络故障恢复后,该Eureka Server节点会自动退出自我保护模式。
 
使用自我保护模式,可以让Eureka Server集群更加的健壮、稳定
eureka.server.enable-self-preservation = false 关闭自我保护模式
 
Eureka高可用:
Eureka Server发生宕机,可以通过运行多个实例并相互注册的方式实现高可用部署,Eureka Server实例会彼此增量地同步信息,从而确保所有节点数据一致。
1.复制Eureka Server项目,修改ArtifactId
2.配置系统的hosts, 127.0.00.1 peer1 peer2
3.修改application.yml,让两个节点的Eureka Server相互注册
 
Eureka的元数据:
Eureka的元数据有两种,分别是标准元数据和自定义元数据
标准元数据指的是主机名、IP地址、端口号、状态页和健康检查等信息,这些信息都会被发布在服务注册表中,用于服务之间的调用。自定义元数据可以使用eureka.instance.metadata-map配置,这些元数据可以在远程客户端中访问
 
多网卡环境下的IP选择:
1.忽略指定名称的网卡
spring:
    cloud:
        inetutils:
            ignored-interfaces:
                - docker0
                - veth.*
eureka:
    instance:
        prefer-ip-address: true
 
2.使用正则表达式,指定使用的网络地址
spring:
    coud:
        inetutils:
            preferredNetworks:
                - 192.168
                - 10.0
 
3.只使用站点本地地址
spring:
    coud:
        inetutils:
            useOnlySiteLocalInterfaces: true
eureka:
    instance:
        prefer-ip-address: true
这样就可以强制使用站点本地地址
 
4.手动指定IP地址
eureka:
    instance:
        prefer-ip-address: true
        ip-address: 127.0.0.1
 

最新文章

  1. C语言 第二章 数据类型、变量和输入函数
  2. 抓取百度音乐频道歌曲url
  3. Memcached & Redis使用
  4. 编程实践中C语言的一些常见细节
  5. 小试牛刀MVC简单网页
  6. Hadoop-chd4.4.0安装
  7. Golang学习 - strings 包
  8. eclipse中使用jython
  9. 【Qt for Android】OpenGL ES 绘制彩色立方体
  10. HTTP Keep-Alive详解[转]
  11. 【转载】扩展Robot Framework,实现失败用例自动再执行(失败重跑)
  12. Mybatis Dynamic Query 简单筛选
  13. vue错误和解决方法
  14. css的一些问题
  15. Luogu4113 [HEOI2012]采花
  16. git-bash的alias别名设置
  17. Docker入门与实战讲解
  18. ORA-14404: partitioned table contains partitions in a different tablespace
  19. 关于EPoll的个人理解
  20. 阿里maven镜像服务器配置

热门文章

  1. c#生成AVI自动设置压缩格式,不调用AVISaveOptions
  2. jquery uploadify在谷歌浏和火狐下无法上传的解决方案(.Net版)
  3. VS快捷键整理
  4. spring-boot-configuration-processor的作用
  5. codehunter 「Adera 6」杯省选模拟赛 网络升级 【树形dp】
  6. bzoj 2165: 大楼【Floyd+矩阵乘法+倍增+贪心】
  7. bzoj1076: [SCOI2008]奖励关(期望dp+状压dp)
  8. 01-vue指令
  9. [ZJOI2006]GameZ游戏排名系统
  10. 51nod1381 硬币游戏