Eureka的服务治理设计中,所有节点即是服务提供方,也是服务消费方。

Eureka Server的高可用:就是将自己作为服务向其他服务注册中心注册自己,形成一组互相注册的服务注册中心,实现服务清单的互相同步,达到高可用的效果。

Example:现有两个服务注册中心(RegisterCenterOne、RegisterCenterTwo)

application-centerOne.properties内容如下:

  spring.application.name=eureka-server

  server.port=1111

  eureka.instance.hostname=registercenterone

  eureka.client.serviceUrl.defaultZone=http://registercentertwo:1112/eureka

application-centerTwo.properties内容如下:

  spring.application.name=eureka-server

  server.port=1112

  eureka.instance.hostname=registercentertwo

  eureka.client.serviceUrl.defaultZone=http://registercenterone:1111/eureka

服务提供方配置内容如下(application.properties):

  spring.application.name=hello-service

  eureka.client.serviceUrl.defaultZone=http://registercentertwo:1112/eureka,http://registercenterone:1111/eureka

Eureka基础架构的三个核心要素:

    服务注册中心:提供服务注册与发现

    服务提供者:提供服务的应用

    服务消费者:消费者应用从服务注册中心获取服务列表,从而使消费者可以知道从何处调用其所需的服务

服务提供者

服务注册:

  “服务提供者”在启动的时候会通过发送REST请求的方式将自己注册到Eureka Server上,同时带上了自身服务的一些元数据信息。在服务注册时,需要确认eureka.client.register-with-eureka=true(默认为true),若设置为false将不会启动注册操作。

服务同步:

  服务注册中心之间互相注册为服务,当服务提供者发送注册请求到一个服务注册中心时,它会将请求转发给集群中相连的其他注册中心,从而实现注册中心之间的服务同步。

服务续约:

  在注册完服务之后,服务提供者会维护一个心跳用来告诉Eureka Server:“我还活着”,以防止Eureka Server的“剔除任务”姜该服务实例从服务列表中排除出去,该操作作为服务续约。

服务消费者

获取服务:

  当启动服务消费者的时候,它会发送一个REST请求给服务注册中心,来获取上面注册的服务清单。Eureka Server会维护一份份只读的服务清单来返回给客户端,同时该缓存清单会每隔30秒更新一次(可通过设置eureka.client.registry-fetch-interval-seconds=30的值进行修改,单位为s)。

服务调用:

  服务消费者在获取服务清单后,通过服务名可以获得具体提供服务的实例名和该实例的元数据信息。

服务下线:

  在客户端程序中,当服务实例精细正常的关闭操作时,它会触发一个服务下线的REST请求给Eureka Server,告诉服务注册中心。服务端在接收到请求后,将该服务状态置为下线,并把该下线事件传播出去。

服务注册中心

失效剔除:

  Eureka Server在启动的时候会创建一个定时任务,默认每隔一段时间(默认60秒)将当前清单中超时(默认90秒)没有续约的服务剔除出去。

自我保护:

  Eureka Server在运行期间,会统计心跳失败的比例在15分钟之内是否低于85%,如果出现低于的情况,Eureka Server会将当前的实例注册信息保护起来,让这些实例不会过期。可以通过设置eureka.server.enable-self-preservational=false参数关闭保护机制。

实例名规则设置:eureka.instance.instanceId=${spring.application.name}:${random.int}(利用应用名加随机数的方式区分不同实例,从而实现在同一主机上不指定端口就能启动多个实例)

在Spring Cloud Eureka中, 我们可以通过简单的配置, 把Eureka客户端的健康检测交给spring-boot-actuator模块的/health端点, 以实现更加全面的健康状态维护。详细的配置步骤如下所示:

  • 在pom.xml中引入spring-boot-starter-actuator模块的依赖。

  • 在application.proper巨es中增加参数配置eureka.client.healthcheck.enabled=true。
  • 如果客户端的/health端点路径做了一些特殊处理,请参考前文介绍端点配置时的方法进行配置, 让服务注册中心可以正确访问到健康检测端点。

最新文章

  1. Leetcode-2 Add Two Numbers
  2. 转:windows下命令行工具
  3. jquery左右滑动效果的实现
  4. 基于jQuery向下弹出遮罩图片相册
  5. MIT算法导论——第五讲.Linear Time Sort
  6. centos vpn client set
  7. Android实现资料收藏
  8. C#面向对象(二)
  9. phalcon的一些中文手册和帮助文档地址收集
  10. 简单的Dao设计模式
  11. IOS UI 第五篇:基本UI
  12. 推荐几个在线PDF转化成Word网站
  13. 对synchronized关键字的理解
  14. VR的技术问题是不是市场的绊脚石?
  15. SpringBoot使用Nacos配置中心
  16. Open SuSE虚拟机分辨率不能自适应的解决办法
  17. 《剑指offer》二叉搜索树的后序遍历序列
  18. Go语言for循环语句
  19. Delphi跨进程访问DBGRID
  20. 团队作业6——展示博客(alpha阶段)

热门文章

  1. atitit.编程语言的未来趋势与进化结果
  2. linux命令之fuser
  3. 文件操作之格式化IO
  4. json中把非json格式的字符串转换成json对象再转换成json字符串
  5. Linux kernel 之 kobject
  6. centos7 /etc/rc.local需要chmod +x /etc/rc.d/rc.local
  7. Scala + Play + Sbt + Protractor = One Build
  8. ci框架简单出现的错误[Undefined property: MContacts::$db]
  9. 查看win10的激活信息和版本号
  10. IoC最大的好处是什么